欢迎来到天天文库
浏览记录
ID:34143245
大小:307.50 KB
页数:32页
时间:2019-03-04
《关系数据库规范化理论》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第4章关系数据库规范化理论数据库设计的一个最基本的问题是怎样建立一个合理的数据库模式,使数据库系统无论是在数据存储方面,还是在数据操作方面都具有较好的性能。什么样的模型是合理的模型,什么样的模型是不合理的模型,应该通过什么标准去鉴别和采取什么方法来改进,这是在进行数据库设计之前必须明确的问题。为使数据库设计合理可靠、简单实用,长期以来,形成了关系数据库设计理论,即规范化理论。它是根据现实世界存在的数据依赖而进行的关系模式的规范化处理,从而得到一个合理的数据库设计效果。本章首先说明关系规范化的作用,接着引入函数依赖和范式等基本概念,然后介绍关系模式等价性判定和模式分解的方
2、法,最后简要介绍两种数据依赖的概念。4.1关系规范化的作用4.1.1问题的提出从前面的有关章节可知,关系是一张二维表,它是涉及属性的笛卡尔积的一个子集。从笛卡尔积中选取哪些元组构成该关系,通常是由现实世界赋予该关系的元组语义来确定的。元组语义实质上是一个n目谓词(n是属性集中属性的个数)。使该n目谓词为真的笛卡尔积中的元素(或者说凡符合元组语义的元素)的全体就构成了该关系。但由上述关系所组成的数据库还存在某些问题。为了说明的方便,我们先看一个实例。【例4.1】设有一个关于教学管理的关系模式R(U),其中U由属性Sno、Sname、Ssex、Dname、Cname、Tna
3、me、Grade组成的属性集合,其中Sno的含义为学生学号,Sname为学生姓名,Ssex为学生性别,Dname为学生所在系别,Cname为学生所选的课程名称,Tname为任课教师姓名,Grade为学生选修该门课程的成绩。若将这些信息设计成一个关系,则关系模式为:教学(Sno,Sname,Ssex,Dname,Cname,Tname,Grade)选定此关系的主键为(Sno,Cname)。由该关系的部分数据(如表4-1所示),我们不难看出,该关系存在着如下问题:1.数据冗余(DataRedundancy)l每一个系名对该系的学生人数乘以每个学生选修的课程门数重复存储。l每
4、一个课程名均对选修该门课程的学生重复存储。l每一个教师都对其所教的学生重复存储。2.更新异常(UpdateAnomalies)由于存在数据冗余,就可能导致数据更新异常,这主要表现在以下几个方面:⑴插入异常(InsertAnomalies):由于主键中元素的属性值不能取空值,如果新分配来一位教师或新成立一个系,则这位教师及新系名就无法插入;如果一位教师所开的课程无人选修或一门课程列入计划但目前不开课,也无法插入。⑵修改异常(ModificationAnomalies):如果更改一门课程的任课教师,则需要修改多个元组。如果仅部分修改,部分不修改,就会造成数据的不一致性。同样
5、的情形,如果一个学生转系,则对应此学生的所有元组都必须修改,否则,也出现数据的不一致性。⑶删除异常(DeletionAnomalies):如果某系的所有学生全部毕业,又没有在读及新生,当从表中删除毕业学生的选课信息时,则连同此系的信息将全部丢失。同样地,如果所有学生都退选一门课程,则该课程的相关信息也同样丢失了。由此可知,上述的教学管理关系尽管看起来能满足一定的需求,但存在的问题太多,从而它并不是一个合理的关系模式。表4-1教学关系部分数据SnoSnameSsexDnameCnameTnameGrade0450301张三恺男计算机系高等数学李刚830450301张三恺男
6、计算机系英语林弗然710450301张三恺男计算机系数字电路周斌920450301张三恺男计算机系数据结构陈长树860450302王薇薇女计算机系高等数学李刚790450302王薇薇女计算机系英语林弗然940450302王薇薇女计算机系数字电路周斌740450302王薇薇女计算机系数据结构陈长树68…………………0420131陈杰西男园林系高等数学吴相舆970420131陈杰西男园林系英语林弗然790420131陈杰西男园林系植物分类学花裴基930420131陈杰西男园林系素描丰茹884.1.2解决的方法不合理的关系模式最突出的问题是数据冗余。而数据冗余的产生有着较为复
7、杂的原因。虽然关系模式充分地考虑到文件之间的相互关联而有效地处理了多个文件间的联系所产生的冗余问题。但在关系本身内部数据之间的联系还没有得到充分的解决,正如例4.1所示,同一关系模式中各个属性之间存在着某种联系,如学生与系、课程与教师之间存在依赖关系的事实,才使得数据出现大量冗余,引发各种操作异常。这种依赖关系称之为数据依赖(DataIndependence)。关系系统当中数据冗余产生的重要原因就在于对数据依赖的处理,从而影响到关系模式本身的结构设计。解决数据间的依赖关系常常采用对关系的分解来消除不合理的部分,以减少数据冗余。在例4.1中
此文档下载收益归作者所有