我正在尝试理解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?
非正式地说,在家庭作业问题中,您可以通过以下方式进入 BCNF
部分键依赖的一个例子是对
AB->D
A->D
由于 A 单独决定 D,因此函数依赖 AB->D 具有部分键依赖。
传递依赖的一个例子是对
A->EF
EF->G
不能保证您可以将给定的关系规范化为 BCNF而不是更高的. (这似乎在大学生中引起了很多关于 SO 的困惑。)删除部分密钥依赖关系以达到 2NF 可能会留下 5NF 中的所有关系。
)我们可以使用阿姆斯壮公理得到 F+
A -> D,E,F,G
B -> C (A,B -> D 被忽略,因为 A -> D)
E,F -> G
我们可以得到主键(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 分解。
您可以试试这个: 表 1:A、B、D、E、F 与复合主键(A、B)和外键(B)参考表 2(B) 表 2:B、C 与 B 为主键表 3:A、E、F、G 和复合主键(A、E、F)