- 1、本文档共34页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
关系数据模型规范化处理
关系数据模型规范化处理
篇一:关系数据库规范化理论
第4章 关系数据库规范化理论
数据库设计的一个最基本的问题是怎样建立一个合理的数据库模式,使数据库系统无论是在数据存储方面,还是在数据操作方面都具有较好的性能。什么样的模型是合理的模型,什么样的模型是不合理的模型,应该通过什么标准去鉴别和采取什么方法来改进,这是在进行数据库设计之前必须明确的问题。
为使数据库设计合理可靠、简单实用,长期以来,形成了关系数据库设计理论,即规范化理论。它是根据现实世界存在的数据依赖而进行的关系模式的规范化处理,从而得到一个合理的数据库设计效果。
本章首先说明关系规范化的作用,接着引入函数依赖和范式等基本概念,然后介绍关系模式等价性判定和模式分解的方法,最后简要介绍两种数据依赖的概念。
4.1 关系规范化的作用
4.1.1问题的提出
从前面的有关章节可知,关系是一张二维表,它是涉及属性的笛卡尔积的一个子集。从笛卡尔积中选取哪些元组构成该关系,通常是由现实世界赋予该关系的元组语义来确定的。元组语义实质上是一个n目谓词(n是属性集中属性的个数)。使该n目谓词为真的笛卡尔积中的元素(或者说凡符合元组语义的元素)的全体就构成了该关系。
但由上述关系所组成的数据库还存在某些问题。为了说明的方便,我们先看一个实例。
【例4.1】设有一个关于教学管理的关系模式R(U),其中U由属性Sno、Sname、Ssex、Dname、Cname、Tname、Grade组成的属性集合,其中Sno的含义为学生学号,Sname为学生姓名,Ssex为学生性别,Dname为学生所在系别,Cname为学生所选的课程名称,Tname为任课教师姓名,Grade为学生选修该门课程的成绩。若将这些信息设计成一个关系,则关系模式为:
教学(Sno,Sname,Ssex,Dname,Cname,Tname,Grade)
选定此关系的主键为(Sno,Cname)。 由该关系的部分数据(如表4-1所示),我们不难看出,该关系存在着如下问题: 1. 数据冗余(Data Redundancy)
? 每一个系名对该系的学生人数乘以每个学生选修的课程门数重复存储。 ? 每一个课程名均对选修该门课程的学生重复存储。 ? 每一个教师都对其所教的学生重复存储。
2. 更新异常(Update Anomalies)
由于存在数据冗余,就可能导致数据更新异常,这主要表现在以下几个方面: 插入异常(Insert Anomalies):由于主键中元素的属性值不能取空值,如果新分配来一位教师或新成立一个系,则这位教师及新系名就无法插入;如果一位教师所开的课程无人选修或一门课程列入计划但目前不开课,也无法插入。 修改异常(Modification Anomalies):如果更改一门课程的任课教师,则需要修改多个元组。如果仅部分修改,部分不修改,就会造成数据的不一致性。同样的情形,如果一个学生转系,则对应此学生的所有元组都必须修改,否则,也出现数据的不一致性。
删除异常(Deletion Anomalies):如果某系的所有学生全部毕业,又没有在读及新生,当从表中删除毕业学生的选课信息时,则连同此系的信息将全部丢失。同样地,如果所有学生都退选一门课程,则该课程的相关信息也同样丢失了。
由此可知,上述的教学管理关系尽管看起来能满足一定的需求,但存在的问题太多,从而它并不是一个合理的关系模式。
表4-1 教学关系部分数据
4.1.2 解决的方法
不合理的关系模式最突出的问题是数据冗余。而数据冗余的产生有着较为复杂的原因。虽然关系模式充分地考虑到文件之间的相互关联而有效地处理了多个文件间的联系所产生
的冗余问题。但在关系本身内部数据之间的联系还没有得到充分的解决,正如例4.1所示,同一关系模式中各个属性之间存在着某种联系,如学生与系、课程与教师之间存在依赖关系的事实,才使得数据出现大量冗余,引发各种操作异常。这种依赖关系称之为数据依赖(Data Independence)。
关系系统当中数据冗余产生的重要原因就在于对数据依赖的处理,从而影响到关系模式本身的结构设计。解决数据间的依赖关系常常采用对关系的分解来消除不合理的部分,以减少数据冗余。在例4.1中,我们将教学关系分解为三个关系模式来表达:学生基本信息(Sno,Sname,Ssex,Dname),课程信息(Cno,Cname,Tname,)及学生成绩(Sno,Cno,Grade),其中Cno为学生选修的课程编号;分解后的部分数据如表4-2、表4-3与表4-4所示。
表4-2 学生信息
表4-3 课程信息
对教学关系进行分解后,我们再来考察一下:
数据存储量减少。
设有n个学生,每个学生平均选修m门课程,则表4-1中学生信息就有
文档评论(0)