DBMS 中的功能依赖
什么是功能依赖
功能依赖在DBMS中,顾名思义,是指表属性之间相互依赖的关系。由E. F. Codd提出,它有助于防止数据冗余,并了解不良设计。
为了彻底理解这个概念,让我们假设 P 是一个具有属性A和B的关系。功能依赖用->(箭头符号)表示。
然后,以下将用箭头符号表示属性之间的功能依赖性:
A -> B |
以上表明以下几点
示例
以下是一个示例,可以帮助更容易地理解功能依赖性:
我们有一个<Department>表,它有两个属性:DeptId 和 DeptName。
DeptId = 部门 IDDeptName = 部门名称 |
DeptId 是我们的主键。在这里,DeptId 唯一标识DeptName 属性。这是因为,如果您想了解部门名称,则首先需要拥有DeptId。
DeptId | DeptName |
001 | 财务部 |
002 | 市场部 |
003 | 人力资源部 |
因此,DeptId 和 DeptName 之间的上述功能依赖性可以确定为DeptId 功能依赖于DeptName:
DeptId -> DeptName |
功能依赖的类型
功能依赖有三种形式:
- 平凡功能依赖
- 非平凡功能依赖
- 完全非平凡功能依赖
让我们从平凡功能依赖开始:
平凡功能依赖
当 B 是 A 的子集时,就会发生这种情况:
A ->B |
示例
我们正在考虑具有两个属性的相同的<Department>表来理解平凡依赖的概念。
以下是一个平凡的功能依赖,因为DeptId 是DeptId 和 DeptName的子集。
{ DeptId, DeptName } -> Dept Id |
非平凡功能依赖
当 B 不是 A 的子集时,就会发生这种情况:
A ->B |
示例
DeptId -> DeptName |
以上是一个非平凡的功能依赖,因为 DeptName 不是 DeptId 的子集。
完全非平凡功能依赖
当 A 与 B 的交集为空时,就会发生这种情况:
A ->B |
阿姆斯特朗公理功能依赖的性质
阿姆斯特朗公理性质是由 William Armstrong 在 1974 年提出的,用于推理功能依赖性。
该性质提出了一些规则,如果满足以下条件,则这些规则成立。
- 传递性如果 A->B 且 B->C,则 A->C,即传递关系。
- 自反性A-> B,如果 B 是 A 的子集。
- 增强性最后一条规则表明:如果 A->B,则 AC->BC。
广告