解释 DBMS 中属性的闭包
属性x的闭包是所有属性的集合,这些属性是相对于F对X的函数依赖。它用X+表示,这意味着X可以确定什么。
算法
让我们看看计算X+的算法
步骤1-X+=X
步骤2-重复直到X+不改变
如果Y⊆X+那么X+=X+UZ
对于F中的每个FDY->Z
示例1
考虑一个关系R(A,B,C,D,E,F)
F:E->A、E->D、A->C、A->D、AE->F、AG->K。
找到E或E+的闭包
解决方案
E或E+的闭包如下-
E+ = E =EA {for E->A add A} =EAD {for E->D add D} =EADC {for A->C add C} =EADC {for A->D D already added} =EADCF {for AE->F add F} =EADCF {for AG->K don’t add k AG ⊄ D+)
示例2
让关系R(A,B,C,D,E,F)
F:B->C,BC->AD,D->E,CF->B。找到B的闭包。
解决方案
B的闭包如下-
B+={B,C,A,D,E}
Closure用于寻找R的候选键并计算F+
R的候选键:如果X->{R},X是R的候选键
例如,
R(A,B,C,D,E,F)其中F:A->BC、B->D、C->DE、BC->F。然后,找到R的候选键。
解决方案
A+={A,B,C,D,E,F}={R}=>A是候选键
B+={B,D}=>B不是候选键
C+={C,D,E}=>C不是候选键
BC+={B,C,D,E,F}=>BC不是候选键
F(F+)的闭包:F+是可以从F推断/导出的所有FD的集合。在F上重复使用阿姆斯壮公理,我们可以计算所有FD。
示例
R(A,B,C,D,E)和F:A->B,B->C,C->D,A->E。找到F的闭包
解决方案
A+={A,B,C,D,E}
B+={B,C,D}
C+={C,D}
F+={A->A,A->B,A->C,A->D,A->E,B->B,B->C,B->D,C->C,C->D}