DBMS 中的功能依赖


什么是功能依赖

功能依赖在DBMS中,顾名思义,是指表属性之间相互依赖的关系。由E. F. Codd提出,它有助于防止数据冗余,并了解不良设计。

为了彻底理解这个概念,让我们假设 P 是一个具有属性AB的关系。功能依赖用->(箭头符号)表示。

然后,以下将用箭头符号表示属性之间的功能依赖性:

A -> B

以上表明以下几点

示例

以下是一个示例,可以帮助更容易地理解功能依赖性:

我们有一个<Department>表,它有两个属性:DeptId DeptName

DeptId = 部门 IDDeptName = 部门名称

DeptId 是我们的主键。在这里,DeptId 唯一标识DeptName 属性。这是因为,如果您想了解部门名称,则首先需要拥有DeptId

DeptIdDeptName
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。

更新于: 2023-09-13

31K+ 次浏览

开启您的 职业生涯

通过完成课程获得认证

立即开始
广告