【发布时间】:2012-07-31 04:43:18
【问题描述】:
我正在尝试理解 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?
【问题讨论】:
标签: database database-design relational-database normalization
我正在尝试理解 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?
【问题讨论】:
标签: database database-design relational-database normalization
非正式地说,在家庭作业问题中,您可以通过
进入 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)
【讨论】: