跳到主要内容

第四范式

第四范式要求什么?​

  • 要求: 对 R 中的任意非平凡多值依赖 A1A2⋯An↠B1B2⋯BmA_1A_2\cdots A_n \twoheadrightarrow B_1B_2\cdots B_m, 属性组 AA 必须是超键;
  • 一句话: 任一非平凡多值依赖的左边都必须是超键;
  • 等价说法: 消除多值依赖;

第四范式解决什么冗余?​

  • 对象: 两类互不相关的多值属性共处一个关系所产生的冗余;
  • 表现: 每个 AA 取值要与两侧多值属性的取值做笛卡尔配对;
  • 判定: 用多值依赖描述, 见 多值依赖;

第四范式分解的结果长什么样?​

  • 原关系: 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))