解释DBMS中属性的闭包
属性x的闭包是关于F的所有对x函数依赖的属性的集合。它用X+表示,表示X可以确定什么。
算法
让我们看看计算X+的算法
- 步骤1 - X+ =X
- 步骤2 - 重复直到X+不再改变
- 对于F中的每个FD Y->Z
- 如果Y ⊆ X+ 则X+ = X+ U Z
- 对于F中的每个FD Y->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}
闭包用于查找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上重复使用Armstrong公理,我们可以计算所有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}
广告