首页 > 范文大全 > 正文

数据库中的多值依赖

开篇:润墨网以专业的文秘视角,为您筛选了一篇数据库中的多值依赖范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:多值依赖对学习关系规范化理论方面有着重要的作用。本文就多值依赖的产生、定义、性质及如何消除由此引起的冗余等方面进行了简单的归纳总结。

关键词:多值依赖 冗余 关系规范化

一、多值依赖的产生

在学习数据库的相关知识时,我们会接触到关系数据库设计规范化的内容。在构造关系时,经常会发现数据冗余和更新异常等现象,这是由关系中各属性之间的相互依赖性和独立性造成的,也就是关系中的函数依赖和多值依赖。其中在函数依赖的范畴中,如果一个关系数据库中的所有关系模式都满足于BC范式,它就实现了模式的彻底分解,达到最高的规范化程度。下面给出其关系模式规范化流程图:

1NF

消除非主属性对键码的部分依赖

2NF

消除非主属性对键码的传递依赖

3NF

消除主属性对键码的部分和传递依赖

BCNF

但是我们有时会遇到这样的情况,设计一个关系模式满足BC范式,但该关系依然有和函数依赖无关的某种冗余。请看如下一个例题:

设学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。用关系模式Teaching(C,T,B)来表示课程C、教师T和参考书B之间的关系。

用二维表表示如下:

经过分析得出该关系模式主属性为(C,T,B),属于BC范式;但是它存在以下问题:

1. 数据冗余度大,有多少名任课教师,参考书就要存储多少次;

2. 增加操作复杂,当某一课程增加一名任课教师时,该课程有多少本参考书,就必须插入多少个元组;

3. 删除操作复杂,某一门课程要去掉一门参考书,该课程有多少名教师,就必须删除多少个元组;

4. 修改操作复杂,某一门课程要修改一门参考书,该课程有多少名教师,就必须修改多少个元组。

产生这些问题的原因是参考书和教师的取值彼此独立,它们都只取决于课程名,也就是存在多值依赖。

二、多值依赖的定义

假设关系模式为R(A,B,C),其中A,B,C均为属性(集)。如果在A上取特定值,而在B上取值的集合与在C上取值的集合无关,则称多值依赖AB在R中成立。多值依赖AB可称为A多值决定B或B多值依赖于A。

三、多值依赖的性质

1. 对称性:若AB,则AC,其中C=R-X-Y;

2. 函数依赖是多值依赖的特殊形式,即若AB,则AB。

四、多值依赖与函数依赖的区别

多值依赖AB的有效性与属性集的范围有关,不仅涉及到A和B,还涉及到C;而函数依赖AB的有效性只涉及到A和B。

五、消除多值依赖引起的冗余

如果把多值依赖用于新的关系分解算法中,那么由多值依赖引起的冗余是可以消除的,成为第四范式。我们来了解一下第四范式的定义。

若关系模式R属于第一范式,且每个非平凡多值依赖的决定因素都包含键码,则R就属于第四范式。

在本文例题中,Teaching(C,T,B)存在非平凡的多值依赖CT,且C不是主码,则不属于第四范式,这也正是它存在数据冗余和操作复杂的原因。我们可以用投影分解法将关系模式Teaching分解得到:

Teaching(C,T,B)CB(C,B)CT(C,T)

我们利用第四范式的定义分析得到CB、CT均属于第四范式,即消除了非平凡的多值依赖,这样开始的几个问题也得到了解决。

参考文献:

[1]史嘉权等.数据库系统概论.清华大学出版社.

“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文”

本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文