在DBMS中查找FD {A->BC, B->AC, C->AB}的规范覆盖


规范覆盖称为最小覆盖,也称为FD的最小集合。如果FC中的每个FD都是简单FD、左归约FD和非冗余FD,则FD集合FC称为F的规范覆盖。

简单FD - 如果Y是单个属性,则X->Y是简单FD。

左归约FD:如果X中不存在额外属性,则X->Y是左归约FD。{额外属性:如果XA->Y,则如果X->Y,则A是额外属性}。

非冗余FD - 如果无法从F - {X->y}推导出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
   C->B}  NO extraneous attributes exists

步骤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->A,A->B从C获得B。

F={A->B
   B->C
   C->A
   A->C}

通过删除A->C依赖项,我们可以通过A->B,B->C从A确定C

步骤4 - 最终的规范覆盖如下所示:

FC ={ A->B, B->C, C->A }
[A]+ =BC
[B]+=AC
[C]+=AB.

更新于:2021年7月3日

9K+浏览量

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.