- 设 U 是关系模式R的属性集合,X,Y,Z是 U 的子集,并且 Z = U - X - Y,多值依赖X→→Y成立。当且仅当对R的任一关系r,r在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值而与Z值无关
- 当表中的两个属性彼此独立但两者都依赖于第三个属性时,会发生多值依赖性。多值依赖包含至少两个依赖于第三个属性的属性,这就是它总是需要至少三个属性的原因
自行车型号 |
生产年份 |
颜色 |
M2011 |
2008 |
White |
M2001 |
2008 |
Black |
M3001 |
2013 |
White |
M3001 |
2013 |
Black |
M4006 |
2017 |
White |
M4006 |
2017 |
Black |
- 这里列 [颜色] 和 [生产年份] 依赖于 [自行车型号] 并且彼此独立。
- 在这种情况下,可以根据 [自行车型号] 将这两列调用为多值。 这些依赖关系的表示如下所示:
[自行车型号] → → [生产年份]
[自行车型号] → → [颜色]
- 这可以理解为[自行车型号] 多值依赖于 [生产年份] 和 [自行车型号] 多值依赖于 [颜色] 。
- 多值依赖具有下列性质:
- 多值依赖具有对称性。即若 X→→Y,则X →→ Z,其中 Z=U-X-Y。
- 多值依赖具有传递性。即若 X→→Y,Y →→ Z,则 X →→ Z-Y。
- 函数依赖可以看作是多值依赖的特殊情况。
- 若 X→→Y,X→→Z,则 X→→ YZ。
- 若 X→→Y,X→→Z,则 X→→ Y∩Z。
- 若 X→→Y,X→→Z,则 X→→ Y-Z,X →→ Z-Y。
- 多值依赖的有效性与属性集的范围有关。
- 若多值依赖 X→→Y 在R(U)上成立,对于Y'⊂Y,并不一定有X→→Y’成立。但是如果函数依赖 X→Y 在R上成立,则对于任何Y'⊂Y均有X→Y’成立。
平凡多值依赖
- 若X→→Y,而Z为空集,则称X→→Y为平凡的多值依赖
非平凡多值依赖
- 若X→→Y,若Z不为空,则称其为X→→Y为非平凡的多值依赖