4.4.1 问题的引入

4.4.1 问题的引入

先看下述例子:

【例4.3】 设有一个课程安排关系见表4-9:

表4-9 课程安排示意图

在这里的课程安排具有如下语义:

①“算法分析与设计”这门课程可以由2个教师担任,同时有2本教材可以选用。

②“数据结构”这门课程可以由3个教师担任,同时有3本教材可以选用。

把表4-9变换成一个规范化的二维表CTB(表4-10)。

很明显,这个关系表是数据高度冗余的。

表4-10 关系CTB

通过仔细分析关系CTB,可以发现它有如下特点:

①属性集{C}与{T}之间存在着数据依赖关系,在属性集{C}与{B}之间也存在着数据依赖关系,而这两个数据依赖都不是“函数依赖”,当属性子集{C}的一个值确定之后,另一属性子集{T}就有一组值与之对应。例如当课程名称C的一个值“算法分析与设计”确定之后,就有一组任课教师T的值“张山,周一名”与之对应。对于C与B的数据依赖也是如此,显然,这是一种“一对多”的情形。

②属性集{T}和{B}也有关系,这种关系是通过{C}建立起来的间接关系。

如果属性X与Y之间依赖关系具有上述特征,就不为函数依赖关系所包容,需要引入新的概念予以刻画与描述,这就是多值依赖的概念。