大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
多值依赖的定义
我们用一个例子来引出多值依赖(Multivalued Dependency,MVD)的含义。
假设学校中一门课程可由多名教师讲授,教学中他们使用相同的一套参考书,这样我们可用下图的非规范化的关系来表示课程C、教师T和参考书B间的关系。
如果关系CIB转化成规范化的关系,如图所示。
由此可以看出,规范后的关系模式CIB的键是(C, T, B),即全码,CTB属于BC范式。但是,进步分析可以看出,CTB还存在着如下弊端。
① 数据冗余大:课程、教师和参考书都被多次存储。
② 插入异常:若增加一名教授“数据结构”的教师“李静”时,由于这个教师也使用相同的一套参考书,所以需要添加两个元组,即:(数据结构, 李静, 算法与数据结构)和(数据结构, 李静, 数据结构教程)。
③ 删除异常:若要删除某一门课的一本参考书,则与该参考书有关的元组都要删除,如删除数据库原理”课程的“数据库系统”,则需要删除(数据库原理, 吴胜利, 数据库系统)和(数据库原理, 陈晨, 数据库系统)两个元组。
产生以上弊端的原因主要有以下两方面:
①对于关系CTB中C的一个具体值来说,有多个T值与其相对应;同样,C与B间也存在着类似的联系。
②对于关系CTB中的一个确定的C值,与其所对应的一组T值与B值无关。如,与“数据库原理”课程对应的一组教师与此课程的参考书毫无关系。
以上两个方面可以看出,C与T间的联系显然不是函数依赖,在此我们称之为多值依赖。
多值依赖的定义:设有关系模式R(U),U是属性全集,X,Y和Z是属性集U的子集,且Z=U-X-Y,如果对于R的任一关系,对于X的一个确定值,存在Y的一组值与之对应,且Y的这组值仅仅决定于X的值而与Z值无关,此时称Y多值依赖于X,或X多值决定Y,记作X→→Y。
多值依赖与函数依赖间的区别
(1)在关系模式R中,函数依赖X→Y的有效性仅仅取决于X,Y这两个属性集,不涉及第三个属性集,而在多值依赖中,X→→Y在属性集U(U=X+Y+Z)上是否成立,不仅要检查属性集X,Y上的值,而且要检查属性集U的其余属性Z上的值。因此,可能会有X→→Y在属性集W(WU)上成立,而在属性集U上不一定成立的情况,所以,多值依赖的有效性与属性集的范围有关。如果在R(U)上有X→→Y在属性集W(WU)上成立,则称X→→Y为R(U)的嵌入型多值依赖。
(2)如果在关系模式R上存在函数依赖X→Y,则任何Y’Y均有X→Y’成立,而多值依赖X→→Y在R上成立,但不能断言对于任何Y’Y有X→Y’成立。
多值依赖公理及其推论
设有关系模式R(U),U是属性全集,X,Y,Z和W是属性集U的子集。
多值依赖公理
① 增广律:如果X→→Y,V WU,则WX→→VY。
② 传递律:如果X→→Y,Y→→Z,则X→→Z-Y。
③ 补余律:如果X→→Y,则X→→U-X-Y。
函数依赖公理与多值依赖混合公理
① 复制规则:从FD导出MVD,如果X→Y,则X→→Y。
② 接合规则:从MVD导出FD,如果X→Y,ZY,且存在WU有WY=Φ,W→Z,则X→Z。
多值依赖推论
①合并律:如果X→→Y,X→→Z,则X→→YZ。
②伪传递律:如果X→→Y,WY→→Z,则XW→→(Z-W-Y)。
③ 分解律:如果X→→Y,X→→Z,则X→→(YZ),X→→(Y-Z),X→→(ZY)。这说明,如果两个相交的属性子集均多值依赖于另一个属性子集,则这两个属性子集因相交而分割成三部分也都多值依赖于该属性子集。
④混合伪传递律:如果X→→Y,XY→→Z,则X→→(Z-Y)。
参考资料:[1]陈志泊,王春玲,许福,范春梅.数据库原理及应用教程(第3版)[M].北京:人民邮电出版社,2014:155-157.
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/210088.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...