多值依赖(Multivalued Dependency,简称MVD)是数据库关系模式规范化理论中的重要概念,主要用于描述关系中属性之间的一对多依赖关系,是第四范式(4NF)的核心基础。
一、多值依赖的概念
在关系模式 ( R(U) ) 中,( U ) 是属性全集,( X、Y、Z ) 是 ( U ) 的三个子集(且 ( Z = U - X - Y ))。若对于 ( X ) 的任意一个确定值,存在 ( Y ) 的一组值与之对应,且这组 ( Y ) 的值不依赖于 ( Z ) 的值(即无论 ( Z ) 取何值,( Y ) 的这组值始终不变),则称 ( Y ) 多值依赖于 ( X ),记为 ( X \rightarrow!!!\rightarrow Y )。
多值依赖的核心特征:
- 对称性:若 ( X \rightarrow!!!\rightarrow Y ),则必然有 ( X \rightarrow!!!\rightarrow Z )(因为 ( Z ) 与 ( Y ) 对称,均不依赖于对方)。
- 不依赖于其他属性:( Y ) 的取值仅由 ( X ) 决定,与 ( Z ) 无关;反之,( Z ) 的取值也仅由 ( X ) 决定,与 ( Y ) 无关。
- 平凡与非平凡:
- 平凡多值依赖:当 ( Y \subseteq X ) 或 ( X \cup Y = U ) 时,( X \rightarrow!!!\rightarrow Y ) 必然成立(无实际意义)。
- 非平凡多值依赖:当 ( Y \nsubseteq X ) 且 ( X \cup Y \neq U ) 时,( X \rightarrow!!!\rightarrow Y ) 才是需要关注的(会导致数据冗余)。
二、多值依赖的例子
最经典的例子是“课程-教师-参考书”关系,具体如下:
关系模式:( R(课程C, 教师T, 参考书B) )
假设存在以下事实:
- 课程 ( C1 ) 由教师 ( T1、T2 ) 授课,推荐参考书 ( B1、B2 );
- 教师的分配与参考书的选择无关(即“哪些教师教C1”和“C1有哪些参考书”是独立的)。
具体数据(关系实例):
课程C | 教师T | 参考书B |
---|---|---|
C1 | T1 | B1 |
C1 | T1 | B2 |
C1 | T2 | B1 |
C1 | T2 | B2 |
多值依赖分析:
- 对于课程 ( C1 )(( X = {C} )),对应的教师集合是 ( {T1, T2} )(( Y = {T} )),且这组教师的值与参考书 ( B )(( Z = {B} ))无关(无论B是B1还是B2,T的集合始终是{T1,T2})。因此,存在 ( C \rightarrow!!!\rightarrow T )。
- 同理,对于课程 ( C1 ),对应的参考书集合是 ( {B1, B2} )(( Z = {B} )),且这组参考书的值与教师 ( T ) 无关。根据对称性,存在 ( C \rightarrow!!!\rightarrow B )。
问题:
这种多值依赖会导致数据冗余。例如,课程C1的教师和参考书的组合是笛卡尔积(2名教师×2本参考书=4条记录),但实际需要存储的核心信息仅为“C1有T1、T2”和“C1有B1、B2”,冗余度很高。这也是为什么需要通过4NF消除非平凡多值依赖(将关系拆分为 ( R1(C, T) ) 和 ( R2(C, B) ))。
总结:多值依赖描述了“一个属性值决定另一组属性值,且与其他属性无关”的关系,是数据库规范化中消除冗余的重要依据。