Mik*_*ike 10 database relational-database
我试图找出执行BCNF分解的正确步骤.我找到了这个例子,但我不明白如何执行正确的步骤.
模式=(A,B,C,D,E,F,G,H)FD's + {A - > CGH,AD-> C,DE-> F,G-> G}
有人可以显示正确的步骤吗?
Nea*_*alB 11
使用您的FD确定最小封面:
{A -> C, A -> G, A -> H,
B -> nothing,
C -> nothing,
D -> nothing,
E -> nothing,
F -> nothing
G -> nothing
H -> nothing
DE -> F}
Run Code Online (Sandbox Code Playgroud)
注意AD -> C因为A单独确定C哪个暗示D在FD中是多余的(参见阿姆斯特朗的公理 - 增强).
3NF和BCNF定义涉及有关复合密钥的依赖关系.你在这里唯一的复合键是DE.无论是D或E参与任何其他非空FD的这样省去传递依赖,并确保相关的属性依靠"键,整个键,并没有什么,但关键"是不是这里的问题.
分成关系,以便FD左侧是键,右侧是该键的非键依赖属性:
[Key(A), C, G, H]
[Key(D, E), F]
Run Code Online (Sandbox Code Playgroud)
现在从封面中消除这些属性,剩下的就是独立的关系.
[Key(B)]
Run Code Online (Sandbox Code Playgroud)
这应该是3NF/BCNF