在 DBMS 中找到 FD {A->BC, B->AC, C->AB} 的规范覆盖
规范覆盖称为最小覆盖,称为最小FD集。如果FC中的每个FD都是简单FD、左简化FD和非冗余FD,则一组FDFC称为F的规范覆盖。
简单FD-X->Y是一个简单的FD,如果Y是单个属性。
左约化FD:如果X中没有无关属性,则X->Y是左约化FD。
Non-redundantFD−X->Y是一个Non-redundantFD,如果它不能从F-{X->y}导出。
问题
找到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通过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.