第4章 关系数据库设计理论

上传人:豆浆 文档编号:6201646 上传时间:2017-08-08 格式:PPT 页数:73 大小:451.50KB
返回 下载 相关 举报
第4章 关系数据库设计理论_第1页
第1页 / 共73页
第4章 关系数据库设计理论_第2页
第2页 / 共73页
第4章 关系数据库设计理论_第3页
第3页 / 共73页
第4章 关系数据库设计理论_第4页
第4页 / 共73页
第4章 关系数据库设计理论_第5页
第5页 / 共73页
点击查看更多>>
资源描述

《第4章 关系数据库设计理论》由会员分享,可在线阅读,更多相关《第4章 关系数据库设计理论(73页珍藏版)》请在金锄头文库上搜索。

1、第4章 关系数据库设计理论,本章要点 关系数据库设计理论主要包括数据依赖、范式及规范化方法这三部分内容。关系模式中数据依赖问题的存在,可能会导致库中数据冗余、插入异常、删除异常、修改复杂等问题,规范化模式设计方法使用范式这一概念来定义关系模式所符合的不同级别的要求。较低级别范式的关系模式,经模式分解可转换为若干符合较高级别范式要求的关系模式。本章的重点是函数依赖相关概念及基于函数依赖的范式及其判定。,关系模式的表示,定义 关系的描述称为关系模式(Relation Schema)。一个关系模式应当是一个五元组。它可以形式化地表示为:R(U, D, dom, F)。其中R为关系名,U为组成该关系的

2、属性名集合,D为属性组U中属性所来自的域的集合,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。 关系模式通常可以简记为:R(A1, A2, , An)或R(U)。其中R为关系名,A1, A2, , An为属性名。而域名及属性向域的映象常常直接说明为属性的类型、长度。,4.1 问题的提出,如何使用关系模型设计关系数据库?也就是面对一个现实问题,如何选择一个比较好的关系模式的集合?其中每个关系模式又由哪些属性组成?这就是数据库逻辑设计主要关心的问题,4.1.1 规范化理论概述,关系数据库设计理论主要包括三个方面的内容:函数依赖、范式(Normal Form)和模式设计。其中函数依赖起着

3、核心作用,是模式分解和模式设计的基础,范式是模式分解的标准。关系数据库设计时要遵循一定的规范化理论。只有这样才可能设计出一个较好的数据库来。前面已经讲过关系数据库设计的关键所在是关系数据库模式的设计,也就是关系模式的设计。那么到底什么是好的关系模式呢?某些不好的关系模式可能导致哪些问题?下面通过例子对这些问题进行分析。,4.1.2 不合理的关系模式存在的问题,例1 要求设计学生-课程数据库,其关系模式SDC如下:SDC(SNO,SN,AGE,DEPT,MN,CNO,SCORE) 根据实际情况,这些数据有如下语义规定: (1) 一个系有若干个学生,但一个学生只属于一个系; (2) 一个系只有一名

4、系主任,但一个系主任可以同时兼几个系的系主任; (3) 一个学生可以选修多门功课,每门课程可被若干个学生选修; (4) 每个学生学习每门课程有一个成绩。,4.1.2 不合理的关系模式存在的问题,根据上述语义规定并分析以上关系中的数据,我们可以看出,(SNO,CNO)属性的组合能唯一标识一个元组(每行中SNO与CNO的组合均是不同的),所以(SNO,CNO)是该关系模式的主关系键(即主键,又名主码等)。但在进行数据库的操作时,会出现以下几方面的问题。 数据冗余 (2) 插入异常 (3) 删除异常 (4) 修改异常 因此,把不好的关系数据库模式转变为较好的关系数据库模式,即关系的规范化,4.1.2

5、 不合理的关系模式存在的问题,示例数据 主码是(SNO ,CNO),4.1.2 不合理的关系模式存在的问题,数据冗余总字节数=(5+8+4+8+8+3+4)*9系名和系负责人重复9次学号和姓名重复3次课程名重复3次,4.1.2 不合理的关系模式存在的问题,插入异常 计算机系成立,尚未招生无法插入 - 在学生表存储数据必须保证其实体完整性-主属性不能为空,故 学号和课程名不能为空。 招生完毕,但学生尚未选课无法插入 - 学号是有了,但学生尚未选修,所以课程名不知道 求学校有多少系? - 结果不正确,在学生表中还未有计算机系含在内 问计算机负责人是谁? -不知道,计算机系不存在 由于信息不全,导致

6、应该存储的数据无法存储。,4.1.2 不合理的关系模式存在的问题,删除异常计算机系06级学生毕业,删除所有该年级学生 -由于计算机系只有06级学生,被删除后,连带计算机系负责人信息一起被删除。问学校有几个系?问计算机系负责人是谁?若s2学生取消三门选修课程,则学要删除对该学生对应的三条记录。 该学生记录信息也因此被删除这个时候如果问问计算机系有多少学生?删除元组时导致额外信息的丢失,4.1.2 不合理的关系模式存在的问题,修改异常(更新异常) 计算机系负责人改为张文瑞 需要修改9条记录 某学生改名,则该学生的所有记录都要逐一修改SN的值由于数据重复存储导致更新操作复杂。,4.1.2 不合理的关

7、系模式存在的问题,上述问题的根本原因学生关系模式的规范化程度较低解决办法 通过规范化理论对其进行规范化,可以逐步降低和消除上述问题,4.2 规范化,本节将讨论下述内容:首先讨论一个关系属性间不同的依赖情况,讨论如何根据属性间的依赖情况来判定关系是否具有某些不合适的性质。通常按属性间依赖情况来区分关系规范化的程度为第一范式、第二范式、第三范式、BC范式和第四范式等。然后直观地描述如何将具有不合适性质的关系转换为更合适的形式。,4.2.1 函数依赖, 函数依赖 定义4.1 设关系模式R(U,F),U是属性全集,F是U上的函数依赖集,X和Y 是U的子集,如果对于R(U)的任意一个可能的关系r,对于X

8、的每一个具体值,Y都有唯一的具体的值与之对应,则称X函数决定Y,或Y函数依赖于X,记XY。我们称X为决定因素,Y为依赖因素。当Y不函数依赖于X时,记作:X Y。当XY且YX时, 则记作:X Y。 函数依赖有几点需要说明: (1)平凡的函数依赖与非平凡的函数依赖 当属性集Y是属性集X的子集时,则必然存在着函数依赖XY,这种类型的函数依赖称为平凡的函数依赖。如果Y不是X子集,则称XY为非平凡的函数依赖。若不特别声明,我们讨论的都是非平凡的函数依赖。,4.2.1 函数依赖,(2)函数依赖与属性间的联系类型有关 在一个关系模式中,如果属性X与Y有1:1联系时,则存在函数依赖XY,YX,即XY。例如,当

9、学生没有重名时,SNOSN。 如果属性X与Y有m:1的联系时,则只存在函数依赖XY。例如,SNO与AGE,DEPT之间均为m:1联系,所以有SNOAGE ,SNODEPT。 如果属性X与Y有m:n的联系时,则X与Y之间不存在任何函数依赖关系。例如,一个学生可以选修多门课程,一门课程又可以为多个学生选修,所以SNO与CNO之间不存在函数依赖关系。,4.2.1 函数依赖,(3)函数依赖的语义范畴的概念 我们只能根据语义来确定一个函数依赖,而不能按照其形式化定义来证明一个函数依赖是否成立。 (4)函数依赖关系的存在与时间无关 (5)函数依赖可以保证关系分解的无损连接性 函数依赖的基本性质 (1) 投

10、影性 根据平凡的函数依赖的定义可知,一组属性函数决定它的所以子集。例如,在关系SDC中,(SNO,CNO)SNO和(SNO,CNO)CNO。 说明:投影性产生的是平凡的函数依赖,需要时也能使用的。,4.2.1 函数依赖,(2)扩张性 若XY且WZ,则(X,W)(Y,Z)。例如,SNO(SN,AGE),DEPTMN,则有(SNO,DEPT)(SN,AGE,MN)。 说明:扩张性实现了两函数依赖决定因素与被决定因素的分别合并作用。 (3)合并性 若XY且XZ则必有X(Y,Z)。例如,在关系SDC中,SNO(SN,AGE),SNODEPT,则有SNO(SN,AGE,DEPT)。 说明:决定因素相同的

11、两函数依赖被决定因素的可以合并。,4.2.1 函数依赖,(4)分解性 若X(Y,Z),则XY且XZ。很显然,分解性为合并性的逆过程。 说明:决定因素能决定全部,当然也能决定全部中的部分。 由合并性和分解性,很容易得到以下事实: XA1,A2,,An成立的充分必要条件是XAi(i=1,2,n)成立。,4.2.1 函数依赖,3完全/部分函数依赖和传递/非传递函数依赖 定义4.2 设有关系模式R(U),U是属性全集,X和Y是U的子集,XY,并且对于X的任何一个真子集X,都有X Y,则称Y对X完全函数依赖(Full Functional Dependency), 记作X f Y。如果对X的某个真子集X

12、,有XY,则称Y对X部分函数依赖(Partial Functional Dependency),记作X p Y,4.2.1 函数依赖,定义4.3 设有关系模式R(U),U是属性全集,X,Y,Z是U的子集,若XY,但Y X,而YZ,(Y X)则称Z对X传递函数依赖(Transitive Functional Dependency),记作:X t Z 注意:如果有YX,则X Y,这时称Z对X直接函数依赖,而不是传递函数依赖。 综上所述,函数依赖可以有不同的分类,即有如下之分:平凡的函数依赖与非平凡的函数依赖;完全函数依赖与部分函数依赖;传递函数依赖与非传递函数依赖(即直接函数依赖),这些是比较重要

13、的概念,它们将在关系模式的规范化进程中作为准则的主要内容而被使用到。,4.2.2 码,定义4.4 设K为R(U,F)中的属性或属性集合,若K f U,则K为R的候选码(或候选关键字或候选键)(Candidate key)。若候选码多于一个,则选定其中的一个为主码(或称主键,Primary key).包含在任何一个候选码中的属性,叫做主属性(Prime attribute)。不包含在任何候选码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute)。在最简单的情况,单个属性是码。最极端的情况,整个属性组U是码,称为全码(All-key)。,4.

14、2.2 码,已知关系模式R(U,F),如何来找出R的所有候选键呢?方法的步骤为:1、查看函数依赖集F中的每个形如XiYi的(i=1,n)函数依赖关系。看哪些属性在所有Yi(i=1,n)中没有出现过,设没出现过的属性集为P(P=U-Y1-Y2-Yn)。则当P=(表示空集)时,转4;当P时,转2。2、根据候选键的定义,候选键中应必含P(因为没有其它属性能决定P)。考察P,若有P f U成立,则P为候选键,并且候选键只有一个P(考虑一下为什么呢?),转5结束;若P f U不成立,则转3。,4.2.2 码,3、P可以分别与U-P中的每一个属性合并,形成P1,P2,Pm。再分别判断Pj f U(j=1,

15、m)是否成立?能成立则找到了一个候选键,没有则放弃。合并一个属性若不能找到或不能找全候选键,可进一步考虑P与U-P中的两个(或三个,四个,)属性的所有组合分别进行合并,继续判断分别合并后的各属性组对U的完全函数决定情况;如此直到找出R的所有候选键为止。转5结束。(需要提醒的是:如若属性组K已有K f U,则完全不必去考察含K的其它属性组合了,显然它们都不可能再是候选键了)。,4.2.2 码,4、若P=,则可以先考察XiYi(i=1,n)中的单个Xi,判断是否有Xi f U?若成立则Xi为候选键。剩下不是候选键的Xi,可以考察它们两个或多个的组合,查看其是否能完全函数决定U,从而找出其它还有可能

16、的候选键。转5结束。5、本方法结束。 定义4.5 关系模式R中属性或属性组X并非R的主码,但X是另外一个关系模式S的主码,则称X是R的外部码或外部关系键(Foreign Key),也称外码。,4.2.3 范式,规范化的基本思想是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据插入、删除与修改时发生的异常现象。这就要求关系数据库设计出来的关系模式要满足一定的条件。我们把关系数据库的规范化过程中为不同程度的规范化要求设立的不同的标准或准则称为范式(Normal Form)。满足最低要求的叫第一范式,简称1NF。 当把某范式看成是满足该范式的所有关系模式的集合时,各个范式之间的集合关系可以表示为: 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号