与示例的数据库中的归一化数据库归一化是以最有机化的方式在数据库中提供数据的过程。它是您在学习数据库管理时将学习的第一个概念之一,如您所能像初学者一样的SQL数据库等课程

当您正常化数据库时,您需要考虑两件事:数据库中的信息是否具有内部冗余,以及数据库中不同表中的依赖关系是否在逻辑上组织。

术语正常化来自正常形式的概念,它只是如何组织信息在数据库中。但是,正常形式是在基于表的关系数据库的概念周围开发的,您需要了解它以便理解数据库标准化。你可能想采取在RDBMS概念中这样的课程开始。常规形式被设计为使得最直接的方法是在以这种方式构造时在信息上进行搜索。

作为一个例子,让我们想象我们在课堂上创建一个孩子的数据库,他们拥有的宠物。开始构建此数据库时,第一个方法可能是创建一个简单的表,其中包含一个地方的所有信息,以及每个学生的一行。

表:学生|名称|年龄|宠物|宠物名称|----------------------------------------------------------------------石南花|10 |狗|rex | ---------------------------------------------- | Rachel | 10 | Cat | Fluff | ---------------------------------------------- | Jimmy | 11 | Dog | Kimba | ---------------------------------------------- | Lola | 1o | Cat | Thomas | ----------------------------------------------

这是有效,直到你意识到希瑟可能有两个宠物,狗和一只猫。你如何在这张表中代表?为此,我们需要介绍第一正常形式。

第一个正常形式

为实现数据库的第一个正常形式,您需要确保没有表包含可以使用的多列来获取相同信息。每个表应组织成行,每行都应该具有将其区分为唯一的主键。主键通常是单列,但有时可以组合多个列以创建单个主键。

使用第一个正常形式的规则,多行可能存在冗余信息,但每行将是唯一的。

表:学生|名称|年龄|宠物|宠物名称|----------------------------------------------------------------------石南花|10 |狗|rex | ---------------------------------------------- | Heather | 10 | Cat | Thomas | ---------------------------------------------- | Rachel | 10 | Cat | Fluff | ---------------------------------------------- | Jimmy | 11 | Dog | Kimba | ---------------------------------------------- | Lola | 10 | Cat | Thomas | ----------------------------------------------

第二正常形式

在这个第一个例子中,Heather有两行,第二行有变化,以显示有多个宠物的事实。虽然这是可搜索的,并且遵循第一种正常形式,但它是效率低下的空间。为了实现第二个正常形式,将宠物分成一个独立的表将有助于使用学生名称作为外键匹配。

表:学生|名称|年龄|--------------------------- |石南花|10 |--------------------------- |雷切尔|10 |--------------------------- | Jimmy | 11 | ----------------------------- | Lola | 10 | ----------------------------- TABLE: PETS | Type | Pet Name | Owner | --------------------------------------- | Dog | Rex | Heather | --------------------------------------- | Cat | Thomas | Heather | --------------------------------------- | Cat | Fluff | Rachel | --------------------------------------- | Dog | Kimba | Jimmy | --------------------------------------- | Cat | Thomas | Lola | ---------------------------------------

第三正常形式

这是一个更清洁的组织,用于了解信息,避免用两只宠物重复学生的年龄,但狗和猫在宠物桌上重复了几次。我们可以看到,当有两个具有相同类型和相同的宠物时,它是不确定性的。主键是所有者和类型,名称和类型,或者名称和名称?第三个正常形式建议确保每个表中的每个非关键元素提供有关行中键的信息。

为了为每个PET建立一个明确的唯一标识符,包含一个唯一的主键,该钥匙是将每个宠物区分开的唯一主键。如果有两个具有相同名称的学生,则会发生类似的问题,因此为学生表创建唯一的主键值也是一个好主意。当数据库行设置为自动增量时,通常会自动添加这些。如果你需要学习如何做到这一点,你可以使用MySQL学习数据库设计的课程参加课程以学习Oracle数据库管理, 或者参加学习Microsoft SQL基础的课程并确切地了解如何在您使用的环境中自动存活表行。

表:学生|ID |名称|年龄|------------------------------ |00 |石南花|10 |------------------------------ |01 | Rachel | 10 | ---------------------------------- | 02 | Jimmy | 11 | ---------------------------------- | 03 | Lola | 10 | ---------------------------------- TABLE: PETS | ID | Type | Pet Name | Owner ID | -------------------------------------------- | 00 | Dog | Rex | 00 | -------------------------------------------- | 01 | Cat | Thomas | 00 | -------------------------------------------- | 02 | Cat | Fluff | 01 | -------------------------------------------- | 03 | Dog | Kimba | 02 | -------------------------------------------- | 04 | Cat | Thomas | 03 | --------------------------------------------

第四个正常形式

现在很明显,哪个宠物和哪些学生相关联,一个学生可能拥有多个宠物的事实,或者一个宠物可以在多个学生中共享一个宠物,需要代表。对于这个例子,想象一下,我们需要表明猫以萝拉和希瑟之间的实际分享命名为托马斯。要解决这个问题,我们需要添加第三个关系表。

表:学生|ID |名称|年龄|------------------------------ |00 |石南花|10 |------------------------------ |01 | Rachel | 10 | ---------------------------------- | 02 | Jimmy | 11 | ---------------------------------- | 03 | Lola | 10 | ---------------------------------- TABLE: PETS | ID | Type | Pet Name | --------------------------------- | 00 | Dog | Rex | --------------------------------- | 01 | Cat | Thomas | --------------------------------- | 02 | Cat | Fluff | --------------------------------- | 03 | Dog | Kimba | --------------------------------- Table: PETS-STUDENTS | Pet ID | Owner ID | --------------------- | 00 | 00 | --------------------- | 01 | 00 | --------------------- | 02 | 01 | --------------------- | 03 | 02 | --------------------- | 01 | 03 | ---------------------

现在,我们拥有灵活且可搜索的结构,以第四个正常形式,可以代表有关每个学生,每个宠物和它们之间的关系的所有可用信息。在您了解更多关于数据库的信息时,您将认识到根据您的实际需求构建数据的挑战。

当您学会构建数据时,要记住的重要措施是,正常形式未作为每个数据库的目标设置。每个人都是在考虑组织个人数据库以满足业务需求的最佳方式时,您可以选择用作参考点的指导。有时,对于归一化角度来说,数据库的最表现或适当的组织可能不是最逻辑的组织。

如果您已准备好掌握数据库标准化,请退房像白癜风丘亚的数据库设计硕士课程等课程了解一切。

特色课程

构建数据库Web App PHP |OOP |PDO |Ajax |mysql.

上次更新于2016年8月

收视率最高
  • 总为19个小时
  • 76讲座
  • 各级
4.7 (172)

使用PHP,OOP,PDO,Bootstrap和Ajax进行学习和构建全功能Web应用程序的完整解决方案由Paul Amissah.

探索课程

数据库开发者工具学生也会学习

赋予你的团队。引领行业。

通过Udemy为Business获取组织的在线课程和数字学习工具库的订阅。

请求演示