收藏 分享(赏)

数据库第07章.ppt

上传人:hwpkd79526 文档编号:5164295 上传时间:2019-02-11 格式:PPT 页数:71 大小:509.50KB
下载 相关 举报
数据库第07章.ppt_第1页
第1页 / 共71页
数据库第07章.ppt_第2页
第2页 / 共71页
数据库第07章.ppt_第3页
第3页 / 共71页
数据库第07章.ppt_第4页
第4页 / 共71页
数据库第07章.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

1、第7章 关系数据库设计理论,7.1 数据依赖对关系模式的影响 7.2 函数依赖 7.3 范 式 7.4 多值依赖与第4范式(4NF) 7.5 关系模式的规范化 7.6 数据依赖的公理系统,退出,7.1 数据依赖对关系模式的影响,关系数据库规范化理论中的重要概念是数据依赖。 数据依赖是一个关系内部属性与属性之间的一种约束关系。这种约束关系是通过属性值之间的依赖关系来体现的。 数据依赖中最重要的是函数依赖(Functional Dependency,FD)和多值依赖(Multivalued Dependency,MVD)。,属性间的这种依赖关系类似于数学中的函数y = f(x),自变量x确定之后,

2、相应的函数值y也就惟一地确定了。 现在我们建立一个描述学校教务的数据库,该数据库涉及的对象包括学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、 课程名(Cname)和成绩(Grade)。假设我们用一个单一的关系模式Student来表示,则该关系模式的属性集为: U Sno,Sdept,Mname,Cname,Grade ,现实世界的已知事实(语义)告诉我们: (1)一个系有若干学生,但一个学生只属于一个系。 (2)一个系只有一名主任。 (3)一个学生可以选修多门课程,每门课程有若干学生选修。 (4)每个学生所学的每门课程都有一个成绩。,从上述事实我们可以得到属性集U上的一

3、组函数依赖F(如图7.1所示): F Sno Sdept, Sdept Mname, (Sno,Cname) Grade 如果只考虑函数依赖这一种数据依赖,我们就得到了一个描述学生的关系模式: Student ,1数据冗余太大 例如,每一个系主任的姓名重复出现。 2更新异常(Update Anomalies) 例如,某系更换系主任后,系统必须修改与该系学生有关的每一个元组。 3插入异常(Insertion Anomalies) 如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。,4删除异常(Deletion Anomalies) 如果某个系的学生全部毕业了,我们在删除该

4、系学生信息的同时,把这个系及其系主任的信息也丢掉了。 一个关系模式之所以会产生上述问题,是由存在于模式中的某些数据依赖引起的。规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。,7.2 函数依赖,7.2.1 函数依赖 定义7.1 设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系实例r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作XY。,对于函数依赖,需要说明以下几点: (1)函数依赖不是指关系模式R的某个或某些关系实例满足的

5、约束条件,而是指R的所有关系实例均要满足的约束条件。 (2)函数依赖和别的数据之间的依赖关系一样,是语义范畴的概念。我们只能根据数据的语义来确定函数依赖。例如,“姓名年龄”这个函数依赖只有在没有同名人的条件下成立。 如果有相同名字的人,则“年龄”就不再函数依赖于“姓名”了。,(3)XY,但YX 则称XY是非平凡的函数依赖。 (4)XY,但Y X 则称XY是平凡的函数依赖。对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义。若不特别声明,总是讨论非平凡的函数依赖。 (5)若XY,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。,(6)若XY,并且YX,则记

6、为XY。 (7)若Y函数不依赖于X,则记为XY。 (8)若XY,并且对于X的任何一个真子集X,都有X Y,则称Y完全函数依赖于X,记作XY,否则称Y部分函数依赖于X,记作X Y。,(9)若XY,YZ,且YX,YX,则称Z传递函数依赖于X。 加上条件Y X,是因为如果Y X,则X Y,实际上是X Z,即是直接函数依赖而不是传递函数依赖。 属性集U上的关系模式R(U)常常表示为R ,F是属性集U上的一组函数依赖。,7.2.2 码 码是关系模式中一个重要概念。下面我们用函数依赖的概念来定义码。 定义7.2 设K为关系模式R 中的属性或属性组合,若KU,则K称为R的一个候选码(Candidate Ke

7、y)。若关系模式R有多个候选码,则选定其中的一个作为主码(Primary key)。主码用下横线(_)显示出来。,包含在任何一个候选码中的属性,叫作主属性(Prime attribute)。不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute)。 最简单的情况,单个属性是码。最极端的情况,全部属性是码,称为全码(All-key)。 例如,在关系模式S(Sno,Sdept,Sage)中Sno是码。,关系模式R(P,W,A),属性P表示演奏者,W表示作品,A表示听众。假设一个演奏者可以演奏多个作品,某一作品可被多个演奏者演奏。听众

8、也可以欣赏不同演奏者的不同作品,这个关系模式的码为(P,W,A),即All-key。 定义7.3 关系模式R中属性或属性组X并非R的码,但X是另一个关系模式S的码,则称X是R的外部码(Foreign key)也称外码。,例如,在SC(Sno,Cno,Grade)中,Sno不是码,但Sno是关系模式Student(Sno,Sdept,Sage)的码,则Sno是关系模式SC的外部码。 主码与外部码表示了关系之间的联系。例如,关系模式Student与SC的联系就是通过Sno来体现的。,7.3 范 式,范式是符合某一种级别的关系模式的集合。 满足最低要求的叫第1范式,简称为1NF。在第1范式基础上进一

9、步满足一些要求的为第2范式,简称为2NF。其余以此类推。显然各种范式之间存在以下关系: 4NF BCNF 3NF 2NF lNF,如图7.2所示。 我们通常把某一关系模式R为第n范式简记为RnNF。,7.3.1 第1范式(1NF) 定义7.4 如果一个关系模式R 的所有属性都是不可分的基本数据项,则R1NF。 SLC(Sno,Cno,Sdept,Sloc,Grade) 其中Sloc为学生住处,假设每个系的学生住在同一个地方。SLC的码为(Sno,Cno)。函数依赖包括:,(Sno,Cno) Grade Sno Sdept (Sno,Cno) Sdept Sno Sloc (Sno,Cno) S

10、loc Sdept Sloc(因为每个系只住一个地方),f,p,p,SLC关系存在以下问题: (1)插入异常。 (2)删除异常。 (3)数据冗余度大。 (4)修改复杂。,7.3.2 第2范式(2NF) 关系模式SLC出现上述问题的原因是Sdept、 Sloc对码的部分函数依赖。为了消除这些部分函数依赖,我们可以采用投影分解法,把SLC分解为两个关系模式: SC(Sno,Cno,Grade) SL(Sno,Sdept,Sloc) 这两个关系模式的函数依赖如图7.4所示。,定义7.5 若关系模式R1NF,并且每一个非主属性都完全函数依赖于R的码,则R 2NF。 杂的问题。 例如2NF关系模式SL(

11、Sno,Sdept,Sloc)中有下列函数依赖: SnoSdept SdeptSloc SnoSloc,(1)插入异常。 (2)删除异常。 (3)数据冗余度大。 (4)修改复杂。,7.3.3 第3范式(3NF) 关系模式SL出现上述问题的原因是Sloc传递函数依赖于Sno。为了消除该传递函数依赖,我们可以采用投影分解法,把SL分解为两个关系模式: SD(Sno,Sdept) SD的码为Sno,DL(Sdept,Sloc) DL的码为Sdept。,定义7.6 如果关系模式R 中不存在候选码X、属性组Y及非主属性Z(Z Y),使得XY(Y X)和YZ成立,则R3NF。 例如,在关系模式STJ(S,

12、T,J)中,S表示学生,T表示教师,J表示课程。假设每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。于是,我们有函数依赖(S,J)T,TJ。同时我们可以发现STJ(S,T,J)中(S,J)、(S,T)都是候选码,因此(S,T)J成立。用图7.5表示如下:,3NF的STJ关系模式也存在以下问题: (1)插入异常。 (2)删除异常。 (3)数据冗余度大。 (4)修改复杂。,7.3.4 BC范式(BCNF) 关系模式STJ出现上述问题的原因在于主属性J依赖于T,即主属性J部分依赖于码(S,T)。解决这一问题仍然可以采用投影分解法,将STJ分解为两个关系模式:ST(

13、S,T), ST的码为STJ(T,J), TJ的码为T,定义7.7 设关系模式R1NF,如果对于R的每个函数依赖XY,若YX,则X必含有候选码,那么RBCNF。,BCNF的关系模式具有如下3个性质: (1)所有非主属性都完全函数依赖于每个候选码。 (2)所有主属性都完全函数依赖于每个不包含它的候选码。 (3)没有任何属性完全函数依赖于非码的任何一组属性。 如果一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已实现了模式的彻底分解,达到了最高的规范化程度,消除了插入异常和删除的异常。,7.4 多值依赖与第4范式(4NF),例1 设学校中某一门课程由多个教员讲授,他们使用相同

14、的一套参考书。我们可以用一个关系模式Teach(C,T,B)来表示。,把这张表变成一张规范化的二维表,如表7.2所示。 (1)数据冗余度大。 (2)增加操作复杂。 (3)删除操作复杂。 (4)修改操作复杂。,7.4.1 多值依赖 定义7.8 设R(U)是一个属性集U上的一个关系模式,X、Y和Z是U的子集,并且ZUXY。多值依赖XY成立,当且仅当 对R的任一关系r,r在(X,Z)上的每个值对应一组Y值,这组值仅仅决定于X值而与Z值无关。 多值依赖具有下列性质: (1)多值依赖具有对称性。即若XY,则XZ,其中ZUXY。,(2)函数依赖可以看作是多值依赖的特殊情况。即若XY,则XY。多值依赖与函数

15、依赖相比,具有下面两个基本区别:,(1)多值依赖的有效性与属性集的范围有关。 若XY在U上成立则在W(X Y W U)上一定成立;反之则不然,即XY在W(W U)上成立,在U上并不一定成立。这是因为多值依赖的定义中不仅涉及属性组X和Y,而且涉及U中其余属性Z。 (2)若函数依赖XY在R(U)上成立,则对于任何Y Y均有XY成立。而多值依赖XY若在R(U)上成立,却不能断言对于任何YY有XY成立。,7.4.2 第4范式(4NF)定义7.9 关系模式R lNF,如果对于R的每个非平凡多值依赖XY(YX),X都含有候选码,则称R 4NF。,7.5 关系模式的规范化,规范化的基本思想是逐步消除数据依赖

16、中不合适的部分,使模式中的各关系模式达到某种程度的“分离”,即采用“一事一地”的模式设计原则,让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它“分离”出去。因此所谓规范化实质上是概念的单一化。 关系模式规范化的基本步骤如图7.7所示。,(1)对1NF关系进行投影,消除原关系中非主属性对码的函数依赖,将1NF关系转换为若干个2NF关系。 (2)对2NF关系进行投影,消除原关系中非主属性对码的传递函数依赖,从而产生一组3NF关系。,(3)对3NF关系进行投影,消除原关系中主属性对码的部分函数依赖和传递函数依赖(也就是说,使决定属性都成为投影的候选码),得到一组BCNF关系

17、。 以上三步也可以合并为一步:对原关系进行投影,消除决定属性不是候选码的任何函数依赖。 (4)对BCNF关系进行投影,消除原关系中非平凡且非函数依赖的多值依赖,从而产生一组4NF关系。,7.6 数据依赖的公理系统,Armstrong公理系统。 定义7.10 对于满足一组函数依赖F的关系模式R ,其任何一个关系r,若函数依赖XY都成立(即r中任意两元组t,s,若tX=sX,则tY=sY),则称F逻辑蕴含X Y。,Armstrong公理系统 设U为属性集总体,F是U上的一组函数依赖,于是有关系模式R 。对R 来说有以下的推理规则: Al. 自反律(Reflexivity):若Y X U,则X Y为

18、F所蕴含。 A2. 增广律(Augmentation):若XY为F所蕴含,且Z U,则XZYZ为F所蕴含。 A3. 传递律(Transitivity):若XY及YZ为F所蕴含,则XZ为F所蕴含。,定理7.l Armstrong推理规则是正确的。 证 (l)设YXU 。 对R 的任一关系r中的任意两个元组t,s: 若tX=sX,由于Y X,有ty=sy, 所以XY成立,自反律得证。,(2)设XY为F所蕴含,且Z U。 设R 的任一关系r中任意的两个元组t,s; 若tXZ=sXZ,则有tX=sX和tZ=sZ; 由XY,于是有tY=sY,所以tYZ=sYZ,所以XZYZ为F所蕴含,增广律得证。,(3

19、)设XY及YZ为F所蕴含。 对R 的任一关系r中的任意两个元组t,s。 若tX=sX,由于XY,有tY=sY; 再由YZ,有tZ=sZ,所以XZ为F所蕴含,传递律得证。 根据A1,A2,A3这3条推理规则可以得到下面3条很有用的推理规则:, 合并规则:由XY,XZ,有XYZ。 伪传递规则:由XY,WYZ,有XWZ。 分解规则:由XY及ZY,有XZ。 根据合并规则和分解规则,很容易得到这样一个重要事实: 引理7.l XA1 A2Ak成立的充分必要条件是XAi成立(i=l,2,k)。,定义7.l1 在关系模式R中为F所逻辑蕴含的函数依赖的全体叫作F的闭包,记为F+。 人们把自反律、传递律和增广律称

20、为Armstrong公理系统。Armstrong公理系统是有效的、完备的。Armstrong公理的有效性指的是:由F出发根据Armstrong公理推导出来的每一个函数依赖一定在F+中;完备性指的是F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理推导出来。,要证明完备性,首先要解决如何判定一个函数依赖是否属于由F根据Armstrong公理推导出来的函数依赖的集合。当然,如果能求出这个集合,问题就解决了。但不幸的是,这 是一个NP完全问题。比如从F=XA1,XAn 出发,至少可以推导出2n个不同的函数依赖为此引入了下面的概念:,定义7.12 设F为属性集U上的一组函数依赖,X U

21、,XF+= A|XA能由F根据Armstrong公理导出,XF+ 称为属性集X关于函数依赖集F的闭包。 由引理7.1容易得出: 引理7.2 设F为属性集U上的一组函数依赖,X,Y U,XY能由F根据Armstrong公理导出的充分必要条件是Y XF+。 于是,判定XY是否能由F根据Armstrong公理导出的问题,就转换为求出XF+,判定Y是否为XF+的子集的问题。这个问题由算法7.l解决了。,算法7.l 求属性集X(X U)关于U上的函数依赖集F的闭包XF+。输入:X,F输出:XF+,步骤: (1)令X(0)=X,i=0 (2)求B,这里B = A |(V)(W)(VWFVX(i)AW);

22、(3)X(i+1)=BX(i) (4)判断X(i+1)=x(i)吗? (5)若相等或X(i)=U 则X(i)就是XF+,算法终止。 (6)若否,则i=i+l,返回第(2)步。,例1 已知关系模式R, 其中U=A,B,C,D,E;F=ABC,BD,CE,ECB,ACB。 求(AB)F+ 。 解 由算法7.1,设X(0)=AB; 计算X(1);逐一扫描F集合中各个函数依赖,找左部为A,B或AB的函数依赖,得到两个:ABC,BD,于是X(1)=ABCD=ABCD。,因为X(0)X(1),所以再找出左部为ABCD子集的那些函数依赖,又得到CE,ACB,于是X(2)=X(1)BE=ABCDE。 因为X(

23、2)已等于全部属性集合,所以(AB)F+ =ABCDE。 对于算法7.l,令ai=|X(i)|,ai 形成一个步长大于1的严格递增的序列,序列的上界是 | U |,因此该算法最多 |U|X| 次循环就会终止。,定理7.2 Armstrong公理系统是有效的、完备的。 Armstrong公理系统的有效性可由定理7.l得到证明。完备性的证明从略,有兴趣的读者请参考7。 Armstrong公理的完备性及有效性说明了“导出”与“蕴含”是两个完全等价的概念。于是F+ 也可以说成是由F出发借助Armstrong公理导出的函数依赖的集合。 从蕴含(或导出)的概念出发,又引出了两个函数依赖集等价和最小依赖集的

24、概念。,定义7.13 如果G+=F+,就说函数依赖集F覆盖G(F是G的覆盖,或G是F的覆盖),或F与G等价。 引理7.3 F+ = G+ 的充分必要条件是F G+,和G F+ 。 证 必要性显然,只证充分性。 (1)若FG+,则XF+ XG+ 。 (2)任取XYF+ 则有 Y XF+ 。 所以XY (G+)+= G+。即F+ G+。,(3)同理可证G+ F+,所以F+ = G+。而要判定F G+,只须逐一对F中的函数依赖XY,考察 Y 是否属于就行了。因此引理7.3给出了判断两个函数依赖集等价的可行算法。,定义7.14 如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集

25、或最小覆盖。 (1)F中任一函数依赖的右部仅含有一个属性。 (2)F中不存在这样的函数依赖XA,使得F与FXA等价。 (3)F中不存在这样的函数依赖XA,X有真子集Z使得FXAZA与F等价。,例2 考察关系模式S,其中:U=Sno,Sdept,MName,Cname,Grade,F=SnoSdept,SdeptMName,(Sno,Cname)Grade 设F=SnoSdept,SnoMName,SdeptMName,(Sno,Cname)Grade,(Sno,Sdept)Sdept 根据定义7.14可以验证F是最小覆盖,而F不是。因为FSnoMName与F等价,F(Sno,Sdept)Sde

26、pt与F等价。,定理7.3 每一个函数依赖集F均等价于一个极小函数依赖集Fm。此Fm称为F的最小依赖集。 证 这是一个构造性的证明,分3步对F进行“极小化处理”,找出F的一个最小依赖集来。 (1)逐一检查F中各函数依赖FDi:XY,若Y=A1A2 Ak,k2,则用XAj |j=1,2,k来取代XY。,(2)逐一检查F中各函数依赖FDi:XA,令G=FXA,若AXG+,则从F中去掉此函数依赖(因为F与G等价的充要条件是AXG+)。 (3)逐一取出F中各函数依赖FDi:XA,设X=B1B2Bm,逐一考查Bi(i=l,2,m),若A (XBi)F+,则以XBi 取代X(因为F与FXAZA等价的充要条

27、件是AZF+ 其中Z=XBi)。,最后剩下的F就一定是极小依赖集,并且与原来的F等价。因为对F的每一次“改造”都保证了改造前后的两个函数依赖集等价。这些证明很显然,请读者自行补上。 应当指出,F的最小依赖集Fm不一定是惟一的,它与对各函数依赖FDi 及XA中X各属性的处置顺序有关。,例3 F = AB,BA,BC,AC,CA Fm1= AB,BC,CA Fm2= AB,BA,AC,CA 这里给出了F的两个最小依赖集Fm1,Fm2 。 若改造后的F与原来的F相同,说明F本身就是一个最小依赖集,因此定理7.3的证明给出的极小化过程也可以看成是检验F是否为极小依赖集的一个算法。,两个关系模式R1 ,R2,如果F与G等价,那么R1的关系一定是R2的关系。反过来,R2的关系也一定是R1的关系。所以在R中用与F等价的依赖集G来取代F是允许的。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 数据库

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报