Skip to main content

了解数据库依赖关系的指南

4 06 规范化理论 函数依赖 (六月 2025)

4 06 规范化理论 函数依赖 (六月 2025)
Anonim

依赖关系是一种约束,它适用于或定义属性之间的关系。当存储在同一数据库表中的信息唯一地确定存储在同一表中的其他信息时,它发生在数据库中。您还可以将此描述为一种关系,在该关系中,知道一个属性(或一组属性)的值足以告诉您同一个表中另一个属性(或一组属性)的值。

数据库依赖性经常使学生和数据库专业人员都感到困惑。幸运的是,它们并不像看起来那么复杂。最好用几个例子来解释它们。在这里,我们将研究常见的数据库依赖类型。

数据库依赖性和功能依赖性

假设表中的属性之间存在依赖关系,就像说这些属性之间存在功能依赖关系一样。如果数据库中存在依赖关系,使得属性B依赖于属性A,则将其写为:

A - > B.

例如,在列出员工特征(包括社会安全号码(SSN)和名称)的表格中,可以说名称取决于SSN(或SSN - >名称),因为员工的姓名可以从SSN唯一确定。但是,反向语句(名称 - > SSN)不正确,因为多个员工可以具有相同的名称,但始终具有不同的SSN。

琐碎的功能依赖

当您描述属性对包含原始属性的属性集合的功能依赖性时,会发生一个简单的函数依赖关系。例如,{A,B} - > B是一个简单的函数依赖,就像{name,SSN} - > SSN一样。这种类型的函数依赖被称为微不足道,因为它可以从常识中导出。很明显,如果您已经知道B的值,那么B的值可以由该知识唯一确定。

完整的功能依赖

当您已经满足功能依赖性的要求并且功能依赖性语句左侧的属性集不能进一步减少时,就会发生完全功能依赖性。例如,{SSN,age} - > name是一个函数依赖项,但它不是一个完整的函数依赖项,因为您可以从语句的左侧删除age而不影响依赖关系。

传递依赖

当存在导致功能依赖性的间接关系时,会发生传递依赖性。例如,A - > C是一个传递依赖,只有因为A - > B和B - > C都为真才是真的。

多值依赖

当表中一个或多个行的存在意味着同一个表中存在一个或多个其他行时,会发生多值依赖性。例如,想象一家汽车公司生产许多型号的汽车,但总是为每个型号制作红色和蓝色。如果您的表格包含公司制造的每辆汽车的型号名称,颜色和年份,则该表格中存在多值依赖关系。如果某个型号名称的行和蓝色的年份,则还必须存在与该同一车辆的红色版本对应的类似行。

依赖性的重要性

数据库依赖关系很重要,因为它们提供了数据库规范化中使用的基本构建块,即在数据库中有效组织数据的过程。例如:

  • 对于处于第二范式(2NF)的表,表中必须没有非主要属性的情况,该属性在功能上取决于候选键的子集。
  • 对于处于第三范式(3NF)的表,每个nonprime属性必须对每个候选键具有非传递函数依赖性。
  • 对于Boyce-Codd Normal Form(BCNF)中的表,每个函数依赖(除了普通的依赖)都必须在超级密钥上。
  • 对于处于第四范式(4NF)的表,它必须没有多值依赖关系。