1. 多值依赖的定义:
在这个关系模式中,对于一个教师,有一组他自己所教授的课程,无论他在哪个系都教授这几门课程。这样,每个教师所教授的课程只由这个教师决定,而与该教师在哪个系教课无关。例如:对于一个值(周,计算机)有一组值{c语言,数据结构},对于{周,电子工程}同样有一组值{c语言,数据结构},尽管系不同了,但对应课程C值仍然不变,因为这组值只取决于教师T的值。这就是课程C多值依赖于教师T。 2. 平凡的多值依赖 有关系模式R(U),当U=XY,即Z=时,若X→→Y总能成立,则称X→→Y为平凡的多值依赖。 3.多值依赖的性质 (1) 对称性:若X→→Y,则X→→Z,其中Z=U-X-Y。 在关系模式TDC 中,T→→C(课程),T→→(U-T-C),即T→→D(D=U-T-C)。 (2) 函数依赖可以看作是多值依赖的特例 即若X→Y,则X→→Y。这是因为当X→Y时,对X的每一个值x,Y有一个确定的值y与之相对应,所以X→→Y。 换句话说,对于每一对X和Z(Z=U-X-Y)的值,都有Y的一个值与之对应,这个Y值只依赖于X值,而不依赖于Z值。这符合多值依赖X→→Y的定义,只是将Y的一组值换成一个值,因此函数依赖是多值依赖的特殊情况。 (3)多值依赖的有效性与属性集的范围有关 多值依赖的有效性与属性集的范围有关,设属性集之间的包含关系是XYWU,那么,当X→→Y在R(U)上成立时,X→→Y也在R(W)上成立;反过来,当X→→Y在R(W)上成立时,X→→Y在R(U)上不一定成立。这是因为多值依赖的定义中,不仅涉及属性组X、Y,而且涉及U中其余的属性Z。 通常,在R(U)上若有X→→Y在R(W)(WU)上成立,则称X→→Y是R(U)的嵌入型多值依赖。 若X→→Y在R(U)上成立,而且Y'Y,我们不能断言X→→Y'在R(U)上成立。这也是因为多值依赖的定义中涉及了U中除了XY之外的其余属性Z,考虑X→→Y'是否成立时涉及的其余属性Z'=U-X-Y',比确定X→→Y成立时涉及的其余属性Z=U-X-Y包含的属性列多,因此X→→Y'不一定成立。 (4)多值依赖的传递性 若X→→Y,Y→→Z,则有X→→Z; 若X→→Y,X→→Z,则有X→→YZ 若X→→Y,X→→Z,则有X→→Y∩Z; 若X→→Y,X→→Z,则有X→→Y-Z,X→→Z-Y 4. 多值依赖与函数依赖的比较 (1) 与多值依赖相比较,在关系模式R(U)中,函数依赖X→Y只与属性集X和Y有关,与其他属性集Z(Z=U-X-Y)无关。只要X→Y在R(XY)上成立,则X→Y在任何R(W)(XYWU)上成立。 (2) 在关系模式R(U)中,若函数依赖X→Y在R(U)上成立,而且Y'Y,那么肯定X→Y'在R(U)上也成立。而多值依赖X→ → Y在R(U)上成立,当Y'Y,不能肯定X→→ Y'在R(U)上成立。 |