资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,5,章 关系模式的规范化设计,软件工程系,刘金岭,2025/11/7 周五,1,本章重要概念,(,1),关系模式的冗余和异常问题。,(,2,)FD,的定义、逻辑蕴涵、闭包、推理规则、与关键码的联系;平凡,的,FD,;,属性集的闭包;推理规则的正确性和完备性;,FD,集的等价;最小依,赖集。,(,3,),无损分解的定义、性质、测试;保持依赖集的分解。,(,4,),关系模式的范式:,1,NF,,,2NF,,,3NF,,,BCNF,。,分解成,2,NF,、,3NF,模,式集的算法。,2025/11/7 周五,2,前 言,关系数据库的规范化设计是指面对一个现实问题,如何选择一个比较好,的关系模式集合,即应该构造几个关系模式,每个关系由哪些属性组成。,规范化设计理论主要包括三个方面的内容:数据依赖、范式和模式设计方法。其中数据依赖起着核心的作用。数据依赖研究数据之间的联系,范式是关系模式的标准,模式设计方法是自动化设计的基础。规范化设计理论对关系数据库结构的设计起着重要的作用。,2025/11/7 周五,3,例,设有一个关系模式,R,(,TNAME,,,ADDRESS,,,CNO,,,CNAME,),其属性分别表示教师姓名、教师地址、任教课程的编号和课程名。,TNAME,ADDRESS,CNO,CNAME,t1,a1,c1,n1,t1,a1,c2,n2,t1,a1,c3,n3,t2,a2,c4,n4,t2,a2,c5,n2,t3,a3,c6,n4,关系模式,R,的实例,在数据库设计中,如果一个关系模式设计得不好,就会出现像文件系统一样的数据冗余、异常、不一致等问题。,关系模式的冗余和异常问题(1),2025/11/7 周五,4,关系模式的冗余和异常问题(2),该模式出现的问题有:,(1),数据冗余,:,如果一个教师教几门课程,那么这个教师的地址就要重复几次存储。,(2),操作异常,:,由于数据的冗余,在对数据操作时会引起各种异常:,修改异常。,例如教师,t1,教三门课程,在关系中就会有三个元组。如果他的地址变了,这三个元组中的地址都要改变。若有一个元组中的地址未更改,就会造成这个教师的地址不惟一,产生不一致现象。,插入异常。,如果一个教师刚调来,尚未分派教学任务,那么要将教师的姓名和地址存储到关系中去时,在属性,CNO,和,CNAME,上就没有值(空值)。在数据库技术中空值的语义是非常复杂的,对带空值元组的检索和操作也十分麻烦。,删除异常。,如果在图中要取消教师,t3,的教学任务,那么就要把这个教师的元组删去,同时也把,t3,的地址信息从表中删去了。这是一种不合适的现象。,2025/11/7 周五,5,关系模式的冗余和异常问题(3),TNAME,ADDRESS,TNAME,CNO,CNAME,t,1,a,1,t,1,c,1,n,1,t2,a,2,t,1,c,2,n,2,t,3,a,3,t,1,c,3,n,3,t,2,c,4,n,4,t,2,c,5,n,2,t,3,c,6,n,4,图4.2 关系模式分解的实例,(,a,),关系模式,R,1,的实例,(,b,),关系模式,R,2,的实例,可以说,关系模式,R,不是一个好的模式。一个“好”的模式应当不会发生插入异常、删除异常、更新异常,数据冗余应尽量少。,规范化原则:“,关系模式有操作异常或冗余问题,就分解它,。”,是否算最佳分解?,那末,什么样的关系模式是最优的?标准是什么?如何实现?,2025/11/7 周五,6,本章的符号约定,英文字母表首部的大写字母“,A,,,B,,,C,,,D,,,”,表示单个属性。,英文字母表尾部的大写字母“,,,U,,,V,,,W,,,X,,,Y,,,Z,”,表示属性集。,大写字母,R,表示关系模式,小写字母,r,表示其关系。,属性集,A,1,,,A,2,,,,,An,简记为,A,1,A,2,An,。,属性集,X,和,Y,的并集,X,Y,简记为,XY,。,X,A,简写为,XA,或,AX,。,一般地,我们设计关系数据库模式时,要注意三方面的问题:,必须从语义上摸清这些数据联系(实体联系和属性联系)。,尽可能的将互相依赖密切的属性构成单独模式。,切忌把依赖关系不密切、特别是具有“排它”性的属性硬凑到一起。,2025/11/7 周五,7,5.2 函数依赖,主要内容,函数依赖的定义,FD,的逻辑蕴含,FD,的推理规则,FD,和关键码的联系,属性集的闭包,FD,集的最小依赖集,2025/11/7 周五,8,函数依赖的定义(2),例,有一个关于学生选课、教师任课的关系模式:,R,(,SNO,,,SNAME,,,CNO,,,GRADE,,,CNAME,,,TNAME,,,TAGE,),属性分别表示学生学号、姓名、选修课程的课程号、成绩、课程名、任课教师姓名和年龄等意义。,如果规定,每个学号只能有一个学生姓名,每个课程号只能决定一门课程,那么可写成下列,FD,形式:,SNOSNAME CNOCNAME,每个学生每学一门课程,有一个成绩,那么可写出下列,FD,:,(,SNO,,,CNO,),GRADE,还可以写出其他一些,FD,:,CNOCNAME,,,TNAME,,,TAGE,),TNAMETAGE,注意:函数依赖不是指关系,R,的某个或某些关系满足的约束条件,,而是指,R,的一切关系均要满足的约束条件。,2025/11/7 周五,10,对于函数依赖的定义注意以下三点:,函数依赖是一个基于关系模式(不是一个关系模式的特定实例)的函数概念,即如果一个关系模式,R,中存在函数依赖,X,Y,,则要求该模式的所有具体关系都满足,X,Y,。,函数依赖不取决于属性构成关系的方式(即关系结构),而是关系所表达的信息本身的语义特性,我们只能根据这种语义信息确定函数依赖,没有其他途径。,函数依赖是数据库设计者对于关系模式的一种断言或决策,即在设计关系型数据库时不仅要设计关系结构,而且要定义数据依赖的条件,限制进入关系的所有元组都必须符合所定义的条件,否则拒绝接受输入。,函数依赖的定义(3),2025/11/7 周五,11,FD的逻辑蕴涵,定义,设,F,是在关系模式,R,上成立的函数依赖的集合,,XY,是一个函数依赖。如果对于,R,的每个满足,F,的关系,r,也满足,XY,,那么称,F,逻辑蕴涵,XY,,记为,F XY,。,定义,设,F,是函数依赖集,被,F,逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集,F,的,闭包,(,closure,),记为,F,+,。即,F,+,=,XY|,记为,FXY,。,说明:,即使一个小的函数依赖集,F,,其闭包,F,+,也是很大的,一般情况下总有 。,研究逻辑蕴涵的目的是利用推理的方法,从一组已知的函数依赖推导出另一,组函数依赖,从而找出所有函数依赖,F,+,。,2025/11/7 周五,12,FD的推理规则(1),从已知的一些,FD,,可以推导出另外一些,FD,,这就需要一系列的推理规则。,设,U,是关系模式,R,的属性集,,F,是,R,上成立的只涉及到,U,中属性的函数依赖集。,FD,的推理规则有以下三条:,A1,(自反性,,Reflexivity,):,若,Y,X,U,,则,XY,在,R,上成立。,A2,(增广性,,Augmentation,):,若,XY,在,R,上成立,且,Z,U,,则,XZYZ,在,R,上成立。,A3,(传递性,,Transitivity,):,若,XY,和,YZ,在,R,上成立,则,XZ,在,R,上成立。,目的:是由,F,再通过这些,FD,推理规则找到,F,+,2025/11/7 周五,13,FD的推理规则(2),结论,FD,推理规则,A1,、,A2,和,A3,是正确的。也就是,如果,XY,是从,F,用推理规则导出,那么,XY,在,F,+,中。,FD,的其他五条推理规则,:,(1)A4,(合并性,,Union,):,XY,,,XZ,XYZ,。,(2)A5,(分解性,,Decomposition,):,XY,,,Z,Y,XZ,。,(3)A6,(伪传递性):,XY,,,WYZ,WXZ,。,(4)A7,(复合性,,Composition,):,XY,,,WZ,XWYZ,。,(5)A8,(通用一致性):,XY,,,WZ,X,(,W,Y,),YZ,。,例,设有关系模式,R,,,A,、,B,、,C,、,D,、,E,、,F,是它的属性集的子集,,R,满足下列函数依赖:,F=ABC,,,CDEF,,证明:函数依赖,ADF,成立。,证明,:,ABC (,已知,)AC (,分解性,),ADCD (,增广性,)CDEF (,已知,),ADEF (,传递性,)ADF (,分解性,),2025/11/7 周五,14,FD和关键码的联系,定义,设关系模式,R,的属性集是,U,,,X,是,U,的一个子集。如果,XU,在,R,上成立,那么称,X,是,R,的一个超键。如果,XU,在,R,上成立,但对于,X,的任一真子集,W,,都有,WU,不成立,那么称,X,是,R,上的一个,候选键,。,例,在学生选课、教师任课的关系模式中:,R(SNO,SNAME,CNO,CNAME,GRADE,TNAME,TAGE),如果规定:每个学生每学一门课只有一个成绩;每个学生只有一个姓名;每个课程号只有一个课程名;每门课程只有一个任课教师。,根据这些规则,可以知道(,SNO,,,CNO,)能函数决定,R,的全部属性,并且是一个候选键。虽然(,SNO,,,SNAME,,,CNO,,,TNAME,)也能函数决定,R,的全部属性,但相比之下,只能说是一个超键,而不能说是候选键,因为其中含有多余属性。,2025/11/7 周五,15,属性集的闭包,定义,设有关系模式,R(U),,,U=A,1,,,A,2,,,,,A,n,,,X,是,U,的子集,,F,是,U,上的一个函数依赖集,则称所有用,Armstrong,公理从,F,推出的函数依赖,XA,i,(i=1,,,2,,,,,n),中,A,i,的集合为,X,的属性集闭包,记为 ,即,=A,i,|A,i,U,,且,XA,i,可用,Armstrong,公理从,F,推出,例,设关系模式,R(ABC),的函数依赖集为,F=AB,,,BC,,分别求,A,、,B,、,C,的闭包。,解:若,X=A AB,,,BC(,已知,)AC(,传递性,),AA (,自反性,),=A,,,B,,,C (,据定义,),若,X=B BB (,自反性,)BC (,已知,),=B,,,C (,据定义,),若,X=C,,,CC (,自反性,),=C (,据定义,),2025/11/7 周五,16,FD集的最小依赖集(1),如果关系模式,R(U),上的两个函数依赖集,F,和,G,,有,F,+,=G,+,,则称,F,和,G,是等价的函数依赖集。,函数依赖集,F,中的,FD,很多,应该从,F,中去掉平凡的,FD,、无关的,FD,,以求得,F,的最小依赖集,F,min,。形式定义如下:,定义,设,F,是属性集,U,上的,FD,集,如果满足:,F,中每一个函数依赖的右部都是单个属性;,对,F,中任一个函数依赖,XA,,,F-XA,都不与,F,等价;,对于,F,中的任一个函数依赖,XA,和,X,的任一子集,Z,,,F-XAZA,都不与,F,等价。,则称,F,是一个,最小函数依赖集,,记为,F,min,。,上述三个条件的作用分别是:条件保证了每个函数依赖的右部都不会有多个属性;条件保证了,F,中没有多余的函数依赖;条件保证了函数依赖的左部没有重复属性。,2025/11/7 周五,17,例:,设,R,(,A,,,B,,,C,,,D,),,F=A,B,,,B,C,,,C,D,,,C,B,,,G=A,C,,,B,D,,,B,C,,,C,B,。用函数依赖图表示,F,、,G,及,F,+,、,G,+,,这两个函数依赖图完全相同,所以,,F,与,G,等价。,FD集的最小依赖集(2),F,和,F,+,G,和,G,+,A,B,D,C,A,B,D,C,2025/11/7 周五,18,算法,4.2,计算函数依赖集,F,的最小依赖集,G,的步骤:,第一步:根据分解性推理规则,得到一个与,F,等价的,FD,集,G,,,G,中每个,FD,的右边均为单属性。,第二步:在,G,的每个,FD,中消去左边冗余的属性。,第三步:在,G,中消除冗余的,FD,。,FD集的最小依赖集(3),2025/11/7 周五,19,例,设,F,是关系模式,R(ABC),的,FD,集,,F=ABC,,,BC,,,AB,,,ABC,,试求,Fmin,。,解:先把,F,中的,FD,写成右边是单属性形式:,F=AB,,,AC,,,BC,,,AB,,,ABC,显然多多了一个,AB,,可删去。得,F=AB,,,AC,,,BC,,,ABC,在,F,中,由,AB,和,BC,可以推出,AC,,所以,AC,是冗余的,可删去。得,F=AB,,,BC,,,ABC,F,中,ABC,可从,BC,推出,因此,ABC,也可删去。最后得,F=AB,,,BC,,即为所求的,F,min,。,FD集的最小依赖集(4),2025/11/7 周五,20,5.3 关系模式的分解,主要内容,模式分解问题,无损分解,保持函数依赖分解,2025/11/7 周五,21,模式分解问题,对于存在数据冗余、插入异常、删除异常问题的关系模式,应采取将一个关系模式分解为多个关系模式的方法进行处理,但是这种分解过程必须是“可逆”的,即模式分解的结果应该能重新映像到分解前的关系模式。,定义,F,是关系模式,R(U),的一个函数依赖集,记为,R(F,,,U),。如果若干个关系模式的集合,=R,1,(U,1,F,1,),,,R,2,(U,2,F,2,),,,,,R,k,(U,k,F,k,),其中:,/*,关系模式,R,的属性全集,U,是分解后所有小关系模式的属性集,Ui,的并集*,/,对于每个,i,,,j(1i,jk),,有,U,i,U,j,/*,分解的小属性集间不会相互为子集*,/,F,i,=XY|XY,F,+,XY,U,i,/*F,i,(i=1,,,2,,,,,k),是,F,在,U,i,上的投影*,/,则称,是关系模式,R(F,,,U),的一个分解。,定义实际上仅给出了模式分解必须满足的基本条件,有时也会出现将原模式存储信息丢失的现象。,2025/11/7 周五,22,无损分解(1),例,5.7,设关系模式,R,(,ABC,),分解成,=AB,,,AC,。,r,C,r,A,B,C,r,1,A,B,r,2,A,1,1,1,1,1,1,1,1,2,1,1,2,未丢失信息的分解,(,b),(,c),(,a),4,C,3,4,3,r,A,B,C,r,1,A,B,r,2,A,C,r,1,r,2,A,B,1,1,4,1,1,1,4,1,1,1,2,3,1,2,1,3,1,1,1,2,1,2,(,a),(,b),(,c),(,d),丢失信息的分解,上,图分解后的关系可以通过自然连接还原。而下图分解后的关系通过自然连接后不能还原。,称比,r,多出来的元组为,”,噪音,”,2025/11/7 周五,23,无损分解(2),定义,设,R,是一个关系模式,,F,是,R,上的一个,FD,集。,R,分解成数据库模式,=,R,1,,,,,R,k,。如果对,R,中满足,F,的每一个关系,r,,都有,r=,R,1,(,r,),R,2,(,r,),R,k,(,r,),那么称分解,相对于,F,是“,无损联接分解,”,(lossless join decomposition),简称为“,无损分解,”,否则称为“,损失分解,”(,lossy decomposition,)。,例给出了“无损分解”和“损失分解”的例子。,2025/11/7 周五,24,无损分解(3),例,设关系模式,R,(,ABC,)分解成,=,AB,,,BC,。(,a,)和,(,b,)分别是模式,AB,和,BC,上的值,r,1,和,r,2,,(,c,)是,r,1,r,2,的值。显然,BC,(,r,1,r,2,),r,2,。这里,r,2,中元组(,b,2,c,2,)就是一个,悬挂元组,,由于它的存,在,使得,r,1,和,r,2,不存在泛关系,r,。,r,1,A,B,r,2,B,C,A,B,C,a,1,b,1,a,1,b,1,c,1,b,c,1,b,1,2,c,2,(,a),关系,r,1,(,b),关系,r,2,r,r,1,2,(,c),r,r,1,2,模式分解的目的就是为了消除冗余和操作异常现象,但有时会,产生存储泛关系中无法存储的信息(悬挂元组)。,2025/11/7 周五,25,本次课小结,本次课主要讲解了函数依赖、推理规则、,FD,确定关键码、属性集闭包、最小依赖集等概念。最后又介绍了无损分解的概念。,重点掌握:,函数依赖的语义确定;,属性集闭包的求法;,最小函数依赖集的求法。,习题,习题,5 5-1,,,5-2,,,5-3,,,5-4,2025/11/7 周五,26,上次课主要内容,上次课主要讲解了函数依赖、推理规则、,FD,确定关键码、属性集闭包、最小依赖集等概念。最后又介绍了无损分解的概念。,需要重点掌握:,函数依赖的语义确定;,属性集闭包的求法;,最小函数依赖集的求法。,2025/11/7 周五,27,无损分解(4),算法,无损分解的测试,构造一张,k,行,n,列的表格,每列对应一个属性,A,j,(,1,j,n,),每行对应一个模式,R,i,(,1,i,k,)。如果,A,j,在,R,i,中,那么在表格的第,i,行第,j,列处填上符号,a,j,,否则填上,b,ij,。,把表格看成模式,R,的一个关系,反复检查,F,中每个,FD,在表格中是否成立,若不成立,则修改表格中的值。修改方法如下:,对于,F,中一个,FD XY,,如果表格中有两行在,X,值上相等,在,Y,值上不相等,那么把这两行在,Y,值上也改成相等的值。如果,Y,值中有一个是,a,j,,那么另一个也改成,a,j,;如果没有,a,j,,那么用其中一个,b,ij,替换另一个值(尽量把下标,ij,改成较小的数)。一直到表格不能修改为止。(这个过程称为,chase,过程),若修改的最后一张表格中有一行是全,a,,即,a,1,a,2,a,n,,那么称,相对于,F,是无损分解,否则称损失分解。,2025/11/7 周五,28,无损分解(5),a,4,a,3,b,32,b,31,CD,b,24,a,3,a,2,b,2,1,BC,b,14,b,13,a,2,a,1,AB,D,C,B,A,a,4,a,3,b,32,b,31,CD,a,4,a,3,a,2,a,1,BC,b,14,b,13,a,2,a,1,AB,D,C,B,A,(,a),初始表格,(,a),修改后的表格,a,4,a,3,b,32,b,31,CD,b,24,a,3,a,2,b,2,1,BC,b,14,b,13,a,2,a,1,AB,D,C,B,A,a,4,a,3,b,32,b,31,CD,a,4,a,3,a,2,b,1,BC,b,14,b,13,a,2,a,1,AB,D,C,B,A,(,b),初始表格,(,b),修改后的表格,例,设关系,R(ABCD),R,分解成,=AB,,,BC,,,CD,,如果,R,上成立的函数依赖集,F1=BA,,,CD,,则,对,F1,是否为无损分解?如果,F1,换为,F2=AB,,,CD,呢?,本行全是,a,是无损连接,无,a,行,是有损连接,2025/11/7 周五,29,无损分解(6),对于分解为两个模式的情况,可根据下列定理分解:,定理,设,=,R,1,,,R,2,是关系模式,R,的一个分解,,F,是,R,上成立的,FD,集,那么分解,相对于,F,是无损分解的充分必要条件是:,(,R,1,R,2,),(,R,1,R,2,)或(,R,1,R,2,),(,R,2,R,1,)。,说明:该定理中的两个函数依赖不一定属于,F,,只要属于,F,+,即可。,例:,设有关系模式,R,(,SNO,,,Sname,CNO,Grade,SNO,Sname,(SNO,CNO)Grade,),的一个分解为:,=R,1,(,SNO,,,Sname,SNOSname),R,2,SNO,CNO,Grade,(SNO,CNO)Grade),因为,R,1,R,2,=SNO,R,1,-R,2,=Sname,所以,R,1,R,2,R,1,-R,2,即,SNO,Sname,它属于,F,,由定理可知,分解具有无损性连接。,如果两个关系模式间的公共属性集至少包含其中一个关系模式的主健,,则此分解是无损分解。,2025/11/7 周五,30,保持函数依赖分解(1),定义,设,F,是属性集,U,上的,FD,集,,Z,是,U,的子集,,F,在,Z,上的投影用,Z,(,F,)表示,定义为,Z,(,F,),=,XY|XYF,+,,且,XY,Z,定义,设,=,R,1,,,,,R,K,是,R,的一个分解,,F,是,R,上的,FD,集,,如果有,R,i,(,F,),F,,那么称,分解,保持函数依赖集,F,。,定理,保持函数依赖分解的充要条件是,保持函数依赖分解的意义:在作任何数据输入和修改时,只要每个关系模式本身的函数依赖约束可满足,就可以确保整个数据库中数据的语义完整性不受破坏。,2025/11/7 周五,31,保持函数依赖分解(2),WNO,WS,WNO,WG,WNO,WS,WG,W1,8,级,W1,2000,W1,8,级,2000,W2,6,级,W2,1600,W2,6,级,1600,W3,6,级,W3,1400,W3,6,级,1400,例,设关系模式,R,(,WNO,,,WS,,,WG,)的属性分别表示职工的工号、工资级别和工资数目。如果规定每个职工只有一个工资级别,并且一个工资级别只有一个工资数目,那么,R,上的,FD,有,WNO,WS,和,WSWG,。,(,c),r,r,1,2,(,a),关系,r,1,(,b),关系,r,2,R1,上,FD,是,F1=WNOWS,,,R2,上的,FD,是,F2=WNOWG,。但从这两个,FD,推导不出在,R,上成立的,FD WSWG,,因此分解,把,WSWG,丢失了,即,不保持,F,。,如果,R,分解成,=R1,,,R2,,其中,R1=WNO,,,WS,,,R2=WNO,,,WG,,可以验证这个分解是无损分解。,2025/11/7 周五,32,一个无损连接不一定具有函数依赖保持性,反之一个具有函数依赖保持性的分解也不一定是无损连接。,例,设,R,(,ABCD,),,F=A,B,,,CD,,,=R,1,(,A,,,B,,,AB,),,R,2,(,C,,,D,,,CD,),。,因为,F=AB,,,CD,F,1,F,2,=AB,,,CD,所以,F,+,=(F,1,F,2,),+,即分解,具有依赖保持性,易验证,不具有无损性。,例,设,R(ABC),,,F=AB,,,CB,,,=R,1,(A,,,B,,,F,1,),,,R,2,(A,,,C,,,F,2,),,其中,F,1,=AB,,,F,2,=AC,。,因为,R,1,R,2,=A,,,R,1,-R,2,=B,,,R,2,-R,1,=C,所以,R,1,R,2,R,1,-R,2,为,AB,F,,但,F,+,(F,1,F,2,),+,可见,具有无损分解,但不具有保持函数依赖分解。,保持函数依赖分解(3),2025/11/7 周五,33,关系模式的范式,关系模式的好与坏,用什么标准衡量?这个标准就是模式的范式,(,Normal Forms,,简记为,NF,)。范式的种类与数据依赖有着直接的联系,基于,FD,的范式有,1NF,、,2NF,、,3NF,、,BCNF,等多种。,在不提及,FD,时,关系中是不可能有冗余的问题,但是当存在,FD,时,关系中就有可能存在数据冗余问题。,1NF,是关系模式的基础;,2NF,已成为历史,一般不再提及;在数据库设计中最常用的是,3NF,和,BCNF,。,对于各种范式之间的联系有:,5NF,4NF,2NF,BCNF,3NF,1NF,2025/11/7 周五,35,第一范式,定义,如果关系模式,R,的每个关系,r,的属性值都是不可分的原子值,那么称,R,是,第一范式(,first normal form,,简记为,1NF,),的模式。,满足,1NF,的关系称为规范化的关系,否则称为非规范化的关系。关系数据库研究的关系都是规范化的关系。例如关系模式,R,(,NAME,,,ADDRESS,,,PHONE,),如果一个人有两个电话号码(,PHONE,),那么在关系中至少要出现两个元组,以便存储这两个号码。,1NF,是关系模式应具备的最起码的条件。,非规范模式变为,1NF,:,(1),把不含单纯值的属性分解为多个原子值。,(2),把关系模式分解。,2025/11/7 周五,36,第二范式(1),定义,对于,FD WA,,如果存在,XW,有,XA,成立,那么称,WA,是,局部依赖,(,A,局部依赖于,W,);否则称,WA,是,完全依赖,。完全依赖也称为“,左部不可约依赖,”。,定义,如果,A,是关系模式,R,的候选键中属性,那么称,A,是,R,的,主属性,;否则称,A,是,R,的,非主属性,。,定义,如果关系模式,R,是,1NF,,且每个非主属性完全函数依赖于候选键,那么称,R,是,第二范式(,2NF,),的模式。如果数据库模式中每个关系模式都是,2NF,,则称数据库模式为,2NF,的数据库模式,。,2025/11/7 周五,37,第二范式(2),例,设关系模式,R,(,SNO,,,CNO,,,GRADE,,,TNAME,,,TADDR,)的属性分别表示学生学号、选修课程的编号、成绩、任课教师姓名和教师地址等意义。(,SNO,,,CNO,)是,R,的候选键。,R,上有两个,FD,:(,SNO,,,CNO,),(,TNAME,,,TADDR,)和,CNO,(,TNAME,,,TADDR,),因此前一个,FD,是局部依赖,,R,不是,2NF,模式。此时,R,的关系就会出现冗余和异常现象。譬如某一门课程有,100,个学生选修,那么在关系中就会存在,100,个元组,因而教师的姓名和地址就会重复,100,次。,如果把,R,分解成,R1,(,CNO,,,TNAME,,,TADDR,)和,R2,(,SNO,,,CNO,,,GRADE,)后,局部依赖(,SNO,,,CNO,),(,TNAME,,,TADDR,)就消失了。,R1,和,R2,都是,2NF,模式。,2025/11/7 周五,38,第二范式(3),算法,分解成,2NF,模式集的算法,设关系模式,R,(,U,),主键是,W,,,R,上还存在,FD XZ,,并且,Z,是,非主属性和,X,W,,那么,WZ,就是一个局部依赖。此时应把,R,分解成两个模式,R1,(,XZ,),主键是,X,;,R2,(,Y,),其中,Y=U-Z,,主键仍是,W,,外键是,X,(,REFERENCES R1,)。,利用外键和主键的联接可以从,R1,和,R2,重新得到,R,。,如果,R1,和,R2,还不是,2NF,,则重复上述过程,一直到数据库模式中每一个关系模式都是,2NF,为止。,如,:,在关系模式,R,(,SNO,,,CNO,,,GRADE,,,TNAME,,,TADDR,)中,,W=SNO,,,CNO Z=TNAME,,,TADDR,,,X=CNO,,,Y=SNO,,,CNO,,,GRADE,2025/11/7 周五,39,第三范式(1),定义,如果,XY,,,YA,,且,YX,和,AY,,那么称,XA,是,传递依赖,(,A,传递依赖于,X,)。,定义,如果关系模式,R,是,1NF,,且每个非主属性都不传递依赖于,R,的候选键,那么称,R,是,第三范式(,3NF,),的模式。如果数据库模式中每个关系模式都是,3NF,,则称其为,3NF,的数据库模式,。,例,在例中,,R2,是,2NF,模式,而且也已是,3NF,模式。但,R1,(,CNO,,,TNAME,,,TADDR,)是,2NF,模式,却不一定是,3NF,模式。如果,R1,中存在函数依赖,CNOTNAME,和,TNAMETADDR,,那么,CNOTADDR,就是一个传递依赖,即,R1,不是,3NF,模式。此时,R1,的关系中也会出现冗余和异常操作。譬如一个教师开设五门课程,那么关系中就会出现五个元组,教师的地址就会重复五次。如果把,R2,分解成,R21,(,TNAME,,,TADDR,)和,R22,(,CNO,,,TNAME,)后,,CNOTADDR,就不会出现在,R21,和,R22,中。这样,R21,和,R22,都是,3NF,模式。,2025/11/7 周五,40,第三范式(2),算法,分解成,3NF,模式集的算法,设关系模式,R,(,U,),主键是,W,,,R,上还存在,FD XZ,。并且,Z,是非主属,性,,Z,X,,且,X,不是候选键,这样,WZ,就是一个传递依赖。此时应把,R,分,解成两个模式:,R1,(,XZ,),主键是,X,;,R2,(,Y,),其中,Y=U-Z,,主键仍是,W,,外键是,X,(,REFERENCES,R1,)。,利用外键和主键相匹配机制,,R1,和,R2,通过联接可以重新得到,R,。,如果,R1,和,R2,还不是,3NF,,则重复上述过程,一直到数据库模式中每一,个关系模式都是,3NF,为止。,如果,R,是,3NF,模式,那么,R,也是,2NF,模式。,定理,设关系模式,R,,当,R,上每一个,FD XA,满足下列三个条件之一时:,AX,(即,XA,是一个平凡的,FD,);,X,是,R,的超键;,A,是主属性。,则关系模式,R,就是,3NF,模式。,2025/11/7 周五,41,例 设关系模式R(SNO,CNO,GRADE,TNAME,TADDR)的属性分别表示学生学号、选修课程的编号、成绩、任课教师姓名和教师地址等意义。,对于r的任意两个元组,如果X值相同,则要求Y值也相同,即对一个X值有唯一个Y值与之对应。,例 设关系R(ABCD),R分解成=AB,BC,CD,如果R上成立的函数依赖集F1=BA,CD,则对F1是否为无损分解?如果F1换为F2=AB,CD呢?,大写字母R表示关系模式,小写字母r表示其关系。,目的:是由F再通过这些FD推理规则找到F+,(这个过程称为chase过程),如果关系模式R(U)上的两个函数依赖集F和G,有F+=G+,则称F和G是等价的函数依赖集。,修改异常。,函数依赖是数据库设计者对于关系模式的一种断言或决策,即在设计关系型数据库时不仅要设计关系结构,而且要定义数据依赖的条件,限制进入关系的所有元组都必须符合所定义的条件,否则拒绝接受输入。,利用外键和主键的联接可以从R1和R2重新得到R。,在分解成BCNF模式集时,分离与依赖等价有时是不兼容的。,(SNO,CNO)Grade),例 设F是关系模式R(ABC)的FD集,F=ABC,BC,AB,ABC,试求Fmin。,数据依赖研究数据之间的联系,范式是关系模式的标准,模式设计方法是自动化设计的基础。,完全依赖也称为“左部不可约依赖”。,第三范式(3),违反3,NF,的传递依赖的三种情况,部分依赖,键是超键,传递依赖,2025/11/7 周五,42,局部依赖和传递依赖是模式产生数据冗余和操作异常的两个重要原因。由于,3NF,模式中不存在非主属性对候选键的局部依赖和传递依赖,因此消除了很大一部分存储异常,具有较好的性能。,定义,5.16,设,F,是关系模式,R,的,FD,集,如果对,F,中每个非平凡的函数依赖,XY,,都有,X,是,R,的超键,或者,Y,的每个属性都是主属性,那么称,R,是,3NF,的模式。,这个定义表明,:如果非平凡的函数依赖,XY,,,X,不包含超键(并且,Y,不是主属性),那么,Y,必传递依赖于候选键,因此,R,不是,3NF,模式。,第三范式(4),2025/11/7 周五,43,BCNF范式(1),定义,如果关系模式,R,是,1NF,,且每个属性都不传递依赖于,R,的候选键,那么称,R,是,BCNF,的模式,。如果数据库模式中每个关系模式都是,BCNF,,则称为,BCNF,的数据库模式。,如果,R,是,BCNF,模式,那么,R,也是,3NF,模式。,设,F,是关系模式,R,的,FD,集,如果对,F,中每个非平凡的,FD XY,,都有,X,是,R,的超键,那么称,R,是,BCNF,的模式,。,一个满足,BCNF,的关系模式有:,所有非主属性对每一个码都是完全函数依赖;,所有的主属性对每一个不包含它的码,也是完全函数依赖;,没有任何属性完全函数依赖于非码的任何一组属性。,2025/11/7 周五,44,BCNF范式(2),例,关系模式,S(SNO,,,SNAME,,,SDEPT,,,AGE),,假定,SNAME,也具有唯一性,那么,S,就有两个键,这两个键都由单个属性组成,彼此不相交。其他属性不存在对键的传递依赖与部分依赖,所以,S,是,3NF,。同时,S,中除,SNO,,,SNAME,外没有其他决定因素,所以,S,也是,BCNF,。,例,关系模式,STJ(S,,,T,,,J),中,,S,表示学生,,T,表示教师,,J,表示课程。每一教师只教一门课。每门课有若干教师,某一学生选定某门课,就对应一个固定的教师。由语义可得到如下的函数依赖。,(S,,,J)T,;,(S,,,T)J,;,TJ,。,这里,(S,,,J),、,(S,,,T),都是候诜键。,STJ,是,3NF,,因为没有任何非主属性对键函数传递依赖或部分函数依赖。但,STJ,不是,BCNF,模式,是因为,T,是决定因素,而,T,不包含键。,3NF,和,BCNF,是在函数依赖的条件下对模式分解所能达到的分离程度的测度。一个数据库中的关系模式如果都是,BCNF,,那么在函数依赖范畴内,它已经实现彻底的分离,已消除了插入和删除异常。,2025/11/7 周五,45,本章小结(1),本章讨论如何设计关系模式问题。关系模式设计得好与坏,直接影响到数据冗余度、数据一致性等问题。要设计好的数据库模式,必须有一定的理论为基础。这就是模式规范化理论。,在数据库中,数据冗余是指同一个数据存储了多次,由数据冗余将会引起各种操作异常。通过把模式分解成若干比较小的关系模式可以消除冗余。,函数依赖,XY,是数据之间最基本的一种联系,在关系中有两个元组,如果,X,值相等那么要求,Y,值也相等。,FD,有一个完备的推理规则集。,关系模式在分解时应保持“等价”,有数据等价和语义等价两种,分别用无损分解和保持依赖两个特征来衡量。前者能保持泛关系在投影联接以后仍能恢复回来,而后者能保证数据在投影或联接中其语义不会发生变化,也就是不会违反,FD,的语义。但无损分解与保持依赖两者之间没有必然的联系。,2025/11/7 周五,47,本章小结(2),范式是衡量模式优劣的标准,范式表达了模式中数据依赖之间应满足的联系。如果关系模式,R,是,3NF,,那么,R,上成立的非平凡,FD,都应该左边是超键或右边是非主属性。如果关系模式,R,是,BCNF,,那么,R,上成立的非平凡的,FD,都应该左边是超键。范式的级别越高,其数据冗余和操作异常现象就越少。,分解成,BCNF,模式集的算法能保持无损分解,但不一定能保持,FD,集。而分解成,3NF,模式集的算法既能保持无损分解,又能保持,FD,集。,关系模式的规范化过程实际上是一个“分解”过程:把逻辑上独立的信息放在独立的关系模式中。分解是解决数据冗余的主要方法,也是规范化的一条原则:“关系模式有冗余问题就分解它”。,2025/11/7 周五,48,本次课小结,本次课主要讲解了无损分解的方法,保持函数依赖分解的方法。在关系模式的范式中,分别讲解的第一、二、三、,BCNF,范式。最后讲解了数据库的设计原则。,范式特点:,第一范式:属性的原子性;,第二范式:不存在局部函数依赖;,第三范式:不存在传递函数依赖。,作业,习题,5 5-1,,,5-5,,,5-6,,,5-7,
展开阅读全文