在 DBMS 中查找功能函数 {A->BC, B->AC, C->AB} 的规范覆盖
dbmsdatabasebig data analytics更新于 2026/1/13 16:37:17
规范覆盖称为最小覆盖,也称为功能函数的最小集合。如果功能函数集合中的每个功能函数都是简单功能函数、左约化功能函数和非冗余功能函数,则一组功能函数函数集 (FD FC) 称为功能函数的规范覆盖。
简单功能函数 − 如果 Y 是单个属性,则 X->Y 是简单功能函数。
左约化功能函数:如果 X 中没有无关属性,则 X->Y 是左约化功能函数。{无关属性:设 XA->Y,则如果 X->Y,则 A 是无关属性
非冗余功能函数 −如果 X->Y 不能从 F-{X->y} 导出,则 X->Y 为非冗余依赖项函数 (FD)。
问题
求依赖项函数 (FD) {A->BC, B->AC, C->AB} 的规范覆盖。
解决方案
关系模式 R(A,B,C) F: {A->BC, B->AC, C->AB}
步骤 1 − 创建右侧单例
依赖项 A->BC 将分解为 A->B、A->C。
F: { A->B
A->C
B->A
B->C
C->A
C->B}
步骤 2 − 删除多余的属性(如果存在)。
F:{ A->B
A->C
B->A
B->C
C->A
B->C
C->A
C->B} 不存在多余的属性
步骤 3 −移除冗余的 FD
F: { A->B
A->C
B->A
B->C
C->A
C->B }
移除 B->A 依赖,这样我们就可以通过 B->C 和 C->A 从 B 获得 A。
F= {A->B
A->C
B->C
C->A
C->B}
通过移除 C->B 依赖关系,我们可以从 C 出发,经过 C->A、A->B 得到 B。
F={A->B
B->C
C->A
A->C}
通过移除 A->C 依赖关系,我们可以从 A 出发,经过 A->B、B->C 得到 C。
步骤 4 − 最终的规范覆盖如下 −
FC ={ A->B, B->C, C->A }
[A]+ =BC
[B]+=AC
[C]+=AB.

