在 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.

相关文章