多值依赖
多值依赖描述什么约束?
- 定义: 对 R 中每个在属性组 上取值一致的元组对 与 , R 中总存在满足以下三条的元组:
- 在 上取值与 、 相同;
- 在 上取值与 相同;
- 在不属于 与 的其余属性上取值与 相同;
- 记法: ;
- 直觉: 的一个取值对应 的一组取值, 这组取值与其余属性彼此独立;
什么场景会产生多值依赖?
- 场景: 同一个关系里存放了两类互不相关的多值属性;
- 例子:
Movies(title, year, starName, producerName), 演员集合与制片人集合相互独立; - 后果: 不拆表时每个演员要与每个制片人配对, 产生大量冗余;
- 依赖:
title, year ↠ starName与title, year ↠ producerName同时成立;
多值依赖与函数依赖有什么区别?
| 维度 | 函数依赖 | 多值依赖 |
|---|---|---|
| 取值 | 的一个取值决定 的一个取值 | 的一个取值决定 的一组取值 |
| 来源 | 属性之间的决定关系 | 两组互不相关多值属性的并存关系 |
| 消除 | 3NF 及以上 | 4NF, 见 第四范式 |
(source: 020-关系数据库设计理论.md §函数依赖/§多值依赖 (MVD))