我试图弄清楚执行BCNF分解的正确步骤。我找到了这个例子,但我不明白如何执行正确的步骤。
架构=(A,B,C,D,E,F,G,H) FD's + {A - > CGH,AD-> C,DE-> F,G-> G}
有人可以显示正确的步骤吗?
答案 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)。
DE
。 D
或E
都不参与任何其他非空FD
所以消除传递依赖关系并确保依赖属性依赖于
“钥匙,整个钥匙,只有钥匙',这里不是问题。
闯入关系,使FD左手边是钥匙和右手边 是该键的非键依赖属性:
[Key(A), C, G, H]
[Key(D, E), F]
现在从封面中消除这些属性,剩下的就是独立的关系。
[Key(B)]
这应该是3NF / BCNF