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

规范化理论:多值依赖的理解_依赖关联泛化实现多值依赖的定义我们用一个例子来引出多值依赖(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)
上一篇 2025年7月28日 上午9:43
下一篇 2025年7月28日 上午10:15


相关推荐

  • 软件测试的出路

    软件测试的出路先说结论 测试肯定是以后的大趋势 前景很好 但是前景好针对的是技术好的人 这个行业深刻的践行了一句话 学如逆水行舟 不进则退 并且退了基本就只能退出这个行业 为什么这么说 18 年后 很多大公司及创业公司都在调整和优化自己的团队结构 特别是对于大厂来说 并不是简单地裁人 而是裁掉普通的手工测试 然后用更高的薪水去吸纳其他技术更好的自动测试及测试开发人员 在这个过程中 原有的一大部分测试人员被筛出来 在一段时间内外行人以为测试这个行业已经在缩水 呈现一种正在衰落的假象 但其实在行业内由于核心人才的紧缺及薪资

    2026年2月7日
    2
  • windows下面安装Python和pip终极教程「建议收藏」

    windows下面安装Python和pip终极教程「建议收藏」在大二的时候接触过一段时间的Python,最近又开始玩起了这门语言。总的来说,个人很喜欢Python的语言风格,但是这门语言对于windows并不算很友好,因为如果是初学者在windows环境下安装,

    2022年7月5日
    23
  • jsp 注释

    jsp 注释由于 JSP 页面有 HTML JSP Java 脚本等组成 所以在其中可以使用多种注释格式 1 HTML 中的注释 HTML 语言的注释不会被显示在网页中 但是在浏览器中选择查看网页源代码时 还是能够看到注释信息的 语法 注释文本 2 带有 JSP 表达式的注释在 JSP 页面中可以嵌入代码片段 在代码片段中也可加入注释 在代码片段中加入的注释同 Java 的注释相同 同样也是包括以下 3 种情况 2 1 单行注释 注释内容示例 在 JSP 页面中加入单行注释 lt

    2026年3月18日
    2
  • allegro16.6转pads9.5实战攻略

    allegro16.6转pads9.5实战攻略1)要建立两个用户变量(如已存在,不需要建立) 。AEX_BIN_ROOTD:\MentorGraphics\9.5PADS\SDD_HOME\translators\win32\bi

    2022年7月3日
    41
  • 微软2014校园招聘笔试试题

    微软2014校园招聘笔试试题

    2021年11月29日
    43
  • js 图片base64转file文件的两种方式

    js 图片base64转file文件的两种方式nbsp nbsp nbsp nbsp 最近项目中需要实现把图片的 base64 编码转成 file 文件的功能 然后再上传至服务器 起初是直接通过 newFile 的方式进行转换 在各个主流的浏览器基本上都支持 Android 也没问题 但是在 ios 系统埋了个坑 ios11 4 以下的系统上传失败 定位 bug 发现是 newFile 这个方法不兼容 ios 系统 只能另辟蹊径 最后找到一个方法就是 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp

    2026年3月16日
    1

发表回复

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

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