我正在尝试找出执行 BCNF 分解的正确步骤。我找到了这个示例,但我不明白如何执行正确的步骤。
架构 = (A,B,C,D,E,F,G,H) FD 的 + {A -> CGH,AD->C,DE->F,G->G}
谁能告诉我正确的步骤?
最佳答案
使用 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(参见阿姆斯特朗公理 - 增强)。
3NF 和 BCNF 定义涉及复合键的依赖性。唯一的复合键
你这里是 DE
。 D
或 E
均不参与任何其他非空 FD
因此消除传递依赖并确保依赖属性依赖于
“ key ,整个 key ,只有 key ”在这里不是问题。
打破关系,使得 FD 左侧是关键,右侧是关键 是该键的非键相关属性:
[Key(A), C, G, H]
[Key(D, E), F]
现在从封面中删除这些属性,剩下的就是独立的关系。
[Key(B)]
这应该是 3NF/BCNF
关于database - BCNF分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4368271/