我试图理解BCNF数据库,我无法完全理解它。
考虑以下关系:
R (A, B, C, D, E, F, G)
以下功能依赖性包含:
A -> E, F
A -> G
A, B -> D
B -> C
E, F -> G
A -> D
如何制作BCNF?
答案 0 :(得分:2)
非正式地说,在家庭作业问题上,你可以通过
进入BCNF部分密钥依赖性的一个例子是对
AB->D
A->D
由于A单独确定D,因此功能依赖性AB-> D具有部分密钥依赖性。
传递依赖的一个例子是对
A->EF
EF->G
无法保证您可以将给定关系规范化为BCNF 而不是更高。 (这似乎引起了大学生对SO的大量混淆。)删除部分密钥依赖关系以获得2NF可能会将所有关系留在5NF。
答案 1 :(得分:1)
)我们可以使用阿姆斯特朗公理来获得F +
A - > D,E,F,G
B - > C(A,B - > D被忽略,因为A - > D)
E,F - > ģ
我们可以获得主键(A,B)。
根据BCNF的定义,我们必须分开A-> (E,F),B-> C,A - > D和(E,F) - > G来自原始架构。
(A,B)主键(A,B)
(B,C)主键(B)
(A,D)主键(A)
(A,E,F)主键(A)
(E,F,G)主键(E,F)
这是BCNF分解。
答案 2 :(得分:0)
您可以尝试以下操作: 表1:具有复合主键(A,B)和外键(B)的A,B,D,E,F参见表2(B) 表2:B,C与B是主键 表3:具有复合主键(A,E,F)的A,E,F,G