”多值依赖“是数据库基础理论的重要概念,具有一定的学习难度。本文基于多值依赖的3种常见定义,对其分别给出实例图,并以文字进行恰当解释,使这一技术重点和难点变得易于理解。
1. 概念的引入
【例】学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。每个教师可以讲授多门课程,每种参考书可以供多门课程使用。可以用一个非规范化的关系来表示教师T,课程C和参考书B之间的关系(如表1所示)。
把这张表变成一张规范化的二维表,如表2所示。
• 关系模型Teaching(C,T,B)的码是(C,B,T),即all-key,因而Teaching∈BCNF。但是当某一课程(如物理)增加一名讲课教师(如周英)时,必须插入多个(这里是三个)元组:
(物理,周英,普通物理学),(物理,周英,光学原理),(物理,周英,物理习题集)。
• 同样,某一门课(如数学)要去掉一本参考书(如微分方程),则必须删除多个(这里是两个)元组:
(数学,李勇,微分方程),(数学,张平,微分方程)。
因而对数据的增删改很不方便,数据的冗余也十分明显。仔细考察这类关系模式,发现它具有一种称之为多值依赖(Multi-Valued Dependency,MVD)的数据依赖。
2. 多值依赖的标准定义及实例图
例如,在关系模式Teaching中,对于一个(物理,光学原理)有一组T值{李勇,王军},这组值仅仅决定于C上的值(物理)。也就是说对于另一个(物理,普通物理学),它对应的一组T值仍然是{李勇,王军},尽管此时参考书B的值已经改变了。因此T多值依赖于C,即C→→T。
[对教材的补充说明] 对于一个(物理,李勇)也是如此,即C→→B也成立。
3. 多值依赖的形式化定义及实例图
【说明】在以下两图中,字符的含义如下。
1)以带圈的“原”字表示:元组在属性Y上的值原本所处的位置;
2)以“√”号表示:如果交换s、t元组的Y值,那么,元组在属性Y上的值在移动后所处的位置。
4. 多值依赖的平实定义及实例图