BCNF分解

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.无论是DE参与任何其他非空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