我正在努力理解 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 ?
最佳答案
非正式地说,在作业问题中,您可以通过
- 假设您至少处于 1NF 状态,
- 删除部分关键依赖项以达到 2NF(至少),
- 移除传递依赖以达到 3NF(至少),最后
- 删除剩余的功能依赖性,其中左侧不是进入 BCNF 的候选键(至少)。
部分键依赖的一个例子是对
AB->D
A->D
由于A单独决定D,函数依赖AB->D存在部分键依赖。
传递依赖的一个例子是对
A->EF
EF->G
不能保证您可以将给定的关系规范化为 BCNF 并且没有更高的。 (这似乎在 SO 上引起了很多大学生的困惑。)去除部分键依赖以得到 2NF 可能会留下 5NF 中的所有关系。
关于database - BCNF转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11773606/