BCNF分解

时间:2010-12-06 15:59:15

标签: database relational-database

我试图弄清楚执行BCNF分解的正确步骤。我找到了这个例子,但我不明白如何执行正确的步骤。

架构=(A,B,C,D,E,F,G,H) FD's + {A - > CGH,AD-> C,DE-> F,G-> G}

有人可以显示正确的步骤吗?

1 个答案:

答案 0 :(得分:11)

使用您的FD确定最小封面:

{A -> C, A -> G, A -> H, 
 B -> nothing, 
 C -> nothing,
 D -> nothing,
 E -> nothing,
 F -> nothing
 G -> nothing
 H -> nothing
 DE -> F}

注意AD -> C退出,因为A单独确定C,这意味着D在FD中是多余的(参见阿姆斯特朗的Axioms - Augmentation)。

<3> 3NF和BCNF定义涉及有关复合键的依赖关系。唯一的复合键 你在这里是DEDE都不参与任何其他非空FD 所以消除传递依赖关系并确保依赖属性依赖于 “钥匙,整个钥匙,只有钥匙',这里不是问题。

闯入关系,使FD左手边是钥匙和右手边 是该键的非键依赖属性:

[Key(A), C, G, H]
[Key(D, E), F]

现在从封面中消除这些属性,剩下的就是独立的关系。

[Key(B)]

这应该是3NF / BCNF