第四范式
第四范式要求什么?
- 要求: 对 R 中的任意非平凡多值依赖 , 属性组 必须是超键;
- 一句话: 任一非平凡多值依赖的左边都必须是超键;
- 等价说法: 消除多值依赖;
第四范式解决什么冗余?
- 对象: 两类互不相关的多值属性共处一个关系所产生的冗余;
- 表现: 每个 取值要与两侧多值属性的取值做笛卡尔配对;
- 判定: 用多值依赖描述, 见 多值依赖;
第四范式分解的结果长什么样?
- 原关系:
Movies(title, year, starName, producerName); - 两个非平凡多值依赖:
title, year ↠ starName与title, year ↠ producerName; - 分解一:
Movies(title, year, starName); - 分解二:
Producers(title, year, producerName); - 效果: 演员集合与制片人集合不再互相配对, 冗余消失;
第四范式与 BCNF 的关系是什么?
- 蕴含: 4NF 蕴含 BCNF, 满足 4NF 的关系必然满足 BCNF;
- 增量: 4NF 在 BCNF 之上进一步消除多值依赖带来的冗余;
- 代价: 与 BCNF 一样可能不保持原有的函数依赖, 见 范式概览;
(source: 020-关系数据库设计理论.md §函数范式/§第四范式 (4NF))