数据库管理系统中的函数依赖


什么是函数依赖

函数依赖在数据库管理系统(DBMS)中,顾名思义,是表属性之间相互依赖的关系。由E. F. Codd提出,它有助于防止数据冗余并识别不良设计。

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

那么以下将用箭头符号表示属性之间的函数依赖:

A -> B

以上表示:

示例

以下示例将有助于理解函数依赖:

我们有一个<部门>表,其中包含两个属性:DeptIdDeptName

DeptId = 部门ID DeptName = 部门名称

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

DeptIdDeptName
001财务部
002市场部
003人力资源部

因此,DeptIdDeptName之间的上述函数依赖可以确定为DeptId函数依赖于DeptName

DeptId -> DeptName

函数依赖的类型

函数依赖有三种形式:

  • 平凡函数依赖
  • 非平凡函数依赖
  • 完全非平凡函数依赖

让我们从平凡函数依赖开始:

平凡函数依赖

当 B 是 A 的子集时,就会发生这种情况:

A ->B

示例

我们考虑同一个具有两个属性的<部门>表来理解平凡依赖的概念。

以下是平凡函数依赖,因为DeptIdDeptIdDeptName的子集

{ DeptId, DeptName } -> Dept Id

非平凡函数依赖

当 B 不是 A 的子集时,就会发生这种情况:

A ->B

示例

DeptId -> DeptName

以上是非平凡函数依赖,因为DeptName不是DeptId的子集。

完全非平凡函数依赖

当 A 与 B 的交集为空时,就会发生这种情况:

A ->B

Armstrong公理函数依赖的性质

Armstrong公理性质由William Armstrong于1974年提出,用于推论函数依赖。

该性质提出了如果满足以下条件则成立的规则:

  • 传递性如果A->B且B->C,则A->C,即传递关系。
  • 自反性如果B是A的子集,则A->B。
  • 增强性最后一条规则表示:如果A->B,则AC->BC。

更新于:2023年9月13日

31K+ 浏览量

开启你的职业生涯

通过完成课程获得认证

开始学习
广告