BCNF
BCNF 要求什么?
- 要求: 对 R 中的任意非平凡函数依赖 , 属性组 必须是 R 的超键;
- 一句话: 任何非平凡函数依赖的左边都必须是超键;
- 定位: BCNF 是修正后更严格的 3NF;
BCNF 比第三范式严格在哪?
| 范式 | 对非平凡依赖 的要求 |
|---|---|
| 3NF | 是超键, 或 是某个键的子集 |
| BCNF | 必须是超键, 没有例外 |
- 差异来源: 当 不是超键但 属于某个键时, 3NF 放行, BCNF 拒绝;
BCNF 分解的代价是什么?
- 收益: 消除函数依赖带来的冗余;
- 代价: 分解后可能不再保持原有的函数依赖;
- 权衡: 与 3NF 的对比见 范式概览;
(source: 020-关系数据库设计理论.md §函数范式/§BCNF)