数据库中的规范化示例为了实现不同级别的数据库'普通形式',通过检查异常的关系(表)并在检测到,通过检查与异常的关系来组织或分解数据库中的数据。这导致从数据库中删除冗余数据和数据依赖性。结果,通过具有较小且良好的结构关系来实现数据库设计,这些关系需要较少的存储空间进行数据。最后,在冗余数据和性能之间进行折衷,因为数据的归一化导致分离关系。连接主要用于检索需要更多处理能力的数据。

有兴趣学习更多关于数据库设计的知识吗?在Udemy.com网站上查看在线数据库课程。

什么是数据库范式?

从理论上讲,数据库“范式”(NF)是一个定义数据库关系的过程,这种关系不会受到逻辑不一致和异常(如插入、编辑和删除)的影响。每一种关系都有最高的范式,但这并不意味着它就是‘范式’的最高层次。“范式”与每一种关系相关联;因此,要实现整个数据库范式,每个关系都必须达到最高范式。

“范式”是一种关系的简化状态,在这种状态上应用有关函数依赖关系(属性之间的关系)的规则。以下是“范式”的规则或不同层次。

只讨论了前三种范式,因为它涵盖了设计数据库时的所有基本问题。

第一标准表格(1NF)

当关系中没有存在多值属性时,据说关系处于“第一正常形式”。因此,在1NF中的关系符合关系定义中的所有所需属性。重要属性是每个属性值必须只包含单个值和相同类型,每个属性都有唯一的名称。订单是微不足道的。换句话说,关系中没有两行可以是相同的。以下表显示了学生的多价属性和结果1NF关系。

StudentID 的名字 deptname. DeptLocation CourseTitle DateCompleted
1 约翰先生 软件 DBMSJava 01/10 / 20xx06 / 10 / 20xx
2 Doe先生 电信 c++ Java 01/10 / 20xx06 / 10 / 20xx
3. 十字架先生 软件 DBMSJava 01/10 / 20xx06 / 10 / 20xx

StudentID 的名字 deptname. DeptLocation CourseTitle DateCompleted
1 约翰先生 软件 DBMS. 01/10/20XX
1 约翰先生 软件 Java 06/10/20XX
2 Doe先生 电信 C ++ 01/10/20XX
2 Doe先生 电信 Java 06/10/20XX
3. 十字架先生 软件 DBMS. 01/10/20XX
3. 十字架先生 软件 Java 06/10/20XX

在第一个表中,存在一个多值属性‘CourseTitle’,这就是为什么它不是一个有效关系的原因。第二个表通过填充创建新行的空位置,并将该属性作为主键的一部分,从而惟一地标识表中的每一行,从而删除了这个多值属性。这使得第二个表成为“第一范式”中的有效关系。

欲了解更多数据库设计策略,请访问Udemy.com课程

第二标准表格(2NF)

当关系已经处于“第一正常形式”时,并且关系中的每个非关键属性都是完全起作用的,并且依赖于主键,则据说关系处于“第二正常形式”。以下规则用于标识2nf关系:

在主键是复合键的“第一个正常形式”的最后一表中,关系不在2nf中,因为'name'和'deptname'仅在功能上依赖于“Studentid”的主键的一部分。'dateCompleted'也是如此,这是“Coursetitle”。这被称为部分功能依赖性。因此,在1NF学生关系中存在部分功能依赖性,它创建数据冗余和异常,如删除课程细节也会删除学生的部门信息。要将1NF学生与2NF转换为2NF,该关系被分解为满足上述规则之一的较小和结构良好的关系。

表:student_basic_info.

StudentID 的名字 deptname. DeptLocation
1 约翰先生 软件
2 Doe先生 电信
3. 十字架先生 软件

表:Student_Course_Info

StudentID CourseTitle DateCompleted
1 DBMS. 01/10/20XX
1 Java 06/10/20XX
2 C ++ 01/10/20XX
2 Java 06/10/20XX
3. DBMS. 01/10/20XX
3. Java 06/10/20XX

上面的表'student_basic_info'满足2nf的第一个规则,其中只有一个属性'suddentid'作为主键。“Student_Course_Info”满足第三条规则,作为“数据成分”完全函数依赖于主键的每个组件。此外,从该表的分解,显然删除了一些冗余数据。

三级标准表格(3NF)

当一个关系已经在2NF中,并且在两个或多个非关键属性(也称为传递依赖)之间不存在功能性依赖时,一个关系就是“第三范式”。

2NF表名' Student_Basic_Info '不在3NF中,因为' DeptLocation '(一个非键属性)在功能上依赖于非键属性' DeptName ',存在一个传递依赖。由于这种依赖性,存在数据冗余,因为每个学生的系名重复了一个系的位置。一些异常现象也存在。更新部门位置的修改需要更改多个记录。如果没有' StudentID ',就不可能插入新部门,最后,要删除' Mr. '的' StudentID '。John '还删除部门位置信息。为了达到3NF,需要进一步分解。以下是结果表:

表:student_basic_info.

StudentID 的名字 deptname.
1 约翰先生 软件
2 Doe先生 电信
3. 十字架先生 软件

表:Department_Info

deptname. DeptLocation
软件
电信

要进一步探索数据库范式,请在Udemy.com上学习设计课程。

特色课程

Oracle SQL开发人员:掌握其特性+提示和技巧

最近更新于2021年3月

畅销书
  • 3.5小时
  • 45讲座
  • 各级
4.5 (4464)

像专业人士一样使用Oracle SQL Developer:学习将帮助你成为最高效的SQL Developer |的特性和技巧来自Standout-Dev Academy的Carlos

探索课程

数据库开发工具的学生也学习

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

通过Udemy for Business为您的组织订阅在线课程图书馆和数字学习工具。

请求一个演示