解释 DBMS 中的属性闭包
dbmsdatabasebig data analytics更新于 2026/1/13 16:52:17
属性 x 的闭包是指所有对 X 函数依赖 F 的属性的集合。它用 X+ 表示,表示 X 可以确定的内容。
算法
让我们看看计算 X+ 的算法。
- 步骤 1 − X+ =X
- 步骤 2 − 重复,直到 X+ 不再变化
- 对于 F 中的每个函数依赖 Y->Z
- 如果 Y ⊆ X+ 则 X+ = X+ U Z
- 对于 F 中的每个函数依赖 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 {对于 E->A 添加 A}
=EAD {对于 E->D 添加 D}
=EADC {对于 A->C 添加 C}
=EADC {对于 A->D 已添加 D}
=EADCF {对于 AE->F 添加 F}
=EADCF {对于 AG->K 不添加 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 反复运用阿姆斯特朗公理,我们可以计算出所有函数表达式 (FD)。
示例
R(A,B,C,D,E) AND 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}

