规范化理论:多值依赖的理解_依赖关联泛化实现

规范化理论:多值依赖的理解_依赖关联泛化实现多值依赖的定义我们用一个例子来引出多值依赖(MultivaluedDependency,MVD)的含义。假设学校中一门课程可由多名教师讲授,教学中他们使用相同的一套参考书,这样我们可用下图的非规范化的关系来表示课程C、教师T和参考书B间的关系。关系CTB如果关系CIB转化成规范化的关系,如图所示。规范后的关系CTB由此可以看出,规范后的关系模式…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

多值依赖的定义

我们用一个例子来引出多值依赖(Multivalued Dependency,MVD)的含义。

假设学校中一门课程可由多名教师讲授,教学中他们使用相同的一套参考书,这样我们可用下图的非规范化的关系来表示课程C、教师T和参考书B间的关系。

规范化理论:多值依赖的理解_依赖关联泛化实现
关系CTB

 

如果关系CIB转化成规范化的关系,如图所示。

规范化理论:多值依赖的理解_依赖关联泛化实现
规范后的关系CTB

 

由此可以看出,规范后的关系模式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(W\subsetU)上成立,而在属性集U上不一定成立的情况,所以,多值依赖的有效性与属性集的范围有关。如果在R(U)上有X→→Y在属性集W(W\subsetU)上成立,则称X→→Y为R(U)的嵌入型多值依赖。

(2)如果在关系模式R上存在函数依赖X→Y,则任何Y’\subsetY均有X→Y’成立,而多值依赖X→→Y在R上成立,但不能断言对于任何Y’\subsetY有X→Y’成立。

 

多值依赖公理及其推论

设有关系模式R(U),U是属性全集,X,Y,Z和W是属性集U的子集。

多值依赖公理

① 增广律:如果X→→Y,V\subseteq W\subseteqU,则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,Z\subseteqY,且存在W\subseteqU有W\capY=Φ,W→Z,则X→Z。

 

多值依赖推论

①合并律:如果X→→Y,X→→Z,则X→→YZ。

②伪传递律:如果X→→Y,WY→→Z,则XW→→(Z-W-Y)。

③ 分解律:如果X→→Y,X→→Z,则X→→(Y\capZ),X→→(Y-Z),X→→(ZY)。这说明,如果两个相交的属性子集均多值依赖于另一个属性子集,则这两个属性子集因相交而分割成三部分也都多值依赖于该属性子集。

④混合伪传递律:如果X→→Y,XY→→Z,则X→→(Z-Y)。

 

 

 

参考资料:[1]陈志泊,王春玲,许福,范春梅.数据库原理及应用教程(第3版)[M].北京:人民邮电出版社,2014:155-157.

 

 

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/210088.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • iOS逆向入门实践 — 逆向微信,伪装定位(二)

    iOS逆向入门实践 — 逆向微信,伪装定位(二)1.创建工程还是跟之前的步骤一致,创建工程,然后配置Makefile。注意创建工程时名字只能包含数字跟字母。Makefile上面引入的 FakeWeChatLocationManager.m 文件是主要代码实现的地方,分离出来好模块化。2.Reveal注入为了更好地定位代码,需要分析一下“附近的人”这个界面对应的类名是什么,然后进一步分析

    2022年6月2日
    42
  • java–集合

    java–集合

    2021年10月2日
    52
  • JS向数组添加元素,插入数据

    js中对于数组的操作很常见,下面记录一下js向数组添加元素的方法。letmyArray=[11,22,33];console.log(‘原数组:’,myArray);myArray.push(44,55);console.log(‘用push在数组后面插入元素:’,myArray);myArray.unshift(66,77);co…

    2022年4月5日
    893
  • Virtualbox下使用virt-p2v

    Virtualbox下使用virt-p2v1虚拟机迁移参考:http://www.ibm.com/developerworks/cn/linux/l-cn-mgrtvm1/index.html2物理机到虚拟机的迁移virt-p2vredhat官方文档:https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/V2V_Guide/cha

    2022年7月26日
    9
  • 锐捷交换机配置保存到计算机,锐捷交换机配置命令总结中篇

    锐捷交换机配置保存到计算机,锐捷交换机配置命令总结中篇锐捷交换机显示命令:显示交换机硬件及软件的信息Switch#showversion显示当前运行的配置参数Switch#showrunning-config显示保存的配置参数Switch#showconfigure常用锐捷交换机EXEC命令将当前运行的配置参数复制到flash:Switch#writememoryBuildingconfiguration…[OK]Switch#清…

    2022年6月30日
    139
  • Java中Calendar跨年的坑「建议收藏」

    Java中Calendar跨年的坑「建议收藏」上代码:publicstaticvoidmain(String[]args)throwsException{SimpleDateFormatsimpleDateFormat=newSimpleDateFormat(“yyyy-MM”);Calendarcalendar=Calendar.getInstance();calendar.setTime(simpleDateFormat.parse(“2021-08”)

    2022年6月14日
    28

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号