第4章 关系数据库的规范化设计

上传人:dfg****19 文档编号:242863025 上传时间:2024-09-10 格式:PPT 页数:81 大小:421KB
返回 下载 相关 举报
第4章 关系数据库的规范化设计_第1页
第1页 / 共81页
第4章 关系数据库的规范化设计_第2页
第2页 / 共81页
第4章 关系数据库的规范化设计_第3页
第3页 / 共81页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,第,4,章 关系数据库的规范化设计,2024/9/10,1,本章重要概念,(,1,)关系模式的冗余和异常问题。,(,2,),FD,的定义、逻辑蕴涵、闭包、推理规则、与关键码的联系;平凡的,FD,;,属性集的闭包;推理规则的正确性和完备性;,FD,集的等价;最小依赖集。,(,3,)无损分解的定义、性质、测试;保持依赖集的分解。,(,4,)关系模式的范式:,1,NF,,,2NF,,,3NF,,,BCNF,。,分解成,2,NF,、,3NF,模式集的算法。,2024/9/10,2,前 言,关系数据库的规范化设计是指面对一个现实问题,如何选择一个比较好的关系模式集合。规范化设计理论主要包括三个方面的内容:数据依赖、范式和模式设计方法。其中数据依赖起着核心的作用。数据依赖研究数据之间的联系,范式是关系模式的标准,模式设计方法是自动化设计的基础。规范化设计理论对关系数据库结构的设计起着重要的作用。,2024/9/10,3,4.1.1,关系模型的外延和内涵,外延就是通常所说的关系、表或当前值,它的基本性质已在前面介绍过。由于用户经常对关系进行插入、删除和修改操作,因此外延是与时间有关的,随着时间的推移在不断变化。,内涵是与时间独立的,是对数据的定义以及数据完整性约束的定义。对数据的定义包括对关系、属性、域的定义和说明。对数据完整性约束的定义涉及面较广,主要包括以下几个方面:,静态约束,涉及到数据之间联系(称为“数据依赖,,data dependences,)、主键和值域的设计。,动态约束,定义各种操作(插入、删除、修改)对关系值的影响。,2024/9/10,4,4.1.2,关系模式的冗余和异常问题(一),例,4.1,TNAME,ADDRESS,C#,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,图4.1 关系模式,R,的实例,2024/9/10,5,4.1.2,关系模式的冗余和异常问题(二),数据冗余,如果一个教师教几门课程,那么这个教师的地址就要重复几次存储。,操作异常,由于数据的冗余,在对数据操作时会引起各种异常:,修改异常。例如教师,t1,教三门课程,在关系中就会有三个元组。如果他的地址变了,这三个元组中的地址都要改变。若有一个元组中的地址未更改,就会造成这个教师的地址不惟一,产生不一致现象。,插入异常。如果一个教师刚调来,尚未分派教学任务,那么要将教师的姓名和地址存储到关系中去时,在属性,C#,和,CNAME,上就没有值(空值)。在数据库技术中空值的语义是非常复杂的,对带空值元组的检索和操作也十分麻烦。,删除异常。如果在图,4.1,中要取消教师,t3,的教学任务,那么就要把这个教师的元组删去,同时也把,t3,的地址信息从表中删去了。这是一种不合适的现象。,2024/9/10,6,4.1.2,关系模式的冗余和异常问题(三),TNAME,ADDRESS,TNAME,C#,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,的实例,2024/9/10,7,4.2.1,函数依赖的定义(一),定义,4.1,设有关系模式,R,(,U,),,,X,和,Y,是属性集,U,的子集,函数依赖(,Functional Dependency,,简记为,FD,)是形为,X,Y,的一个命题,只要,r,是,R,的当前关系,对,r,中任意两个元组,t,和,s,,都有,t,X,=,s,X,蕴涵,t,Y,=,s,Y,,那么称,FD,X,Y,在关系模式,R,(,U,),中成立。,2024/9/10,8,4.2.1,函数依赖的定义(二),例,4.2,A,B,C,D,A,B,C,D,a,1,b,1,c,1,d,1,a,1,b,1,c,1,d,1,a,1,b,1,c,2,d,2,a,1,b,2,c,2,d,2,a,2,b,2,c,3,d,3,a,2,b,2,c,3,d,3,a,3,b,1,c,4,d,4,a,3,b,2,c,4,d,4,图4.3 关系模式,R,的两个关系,2024/9/10,9,4.2.1,函数依赖的定义(三),例,4.3,有一个关于学生选课、教师任课的关系模式:,R,(,S#,,,SNAME,,,C#,,,GRADE,,,CNAME,,,TNAME,,,TAGE,),属性分别表示学生学号、姓名、选修课程的课程号、成绩、课程名、任课教师姓名和年龄等意义。,如果规定,每个学号只能有一个学生姓名,每个课程号只能决定一门课程,那么可写成下列,FD,形式:,S#SNAME C#CNAME,每个学生每学一门课程,有一个成绩,那么可写出下列,FD,:,(,S#,,,C#,),GRADE,还可以写出其他一些,FD,:,C#,(,CNAME,,,TNAME,,,TAGE,),TNAMETAGE,2024/9/10,10,4.2.2 FD,的逻辑蕴涵,定义,4.2,设,F,是在关系模式,R,上成立的函数依赖的集合,,XY,是一个函数依赖。如果对于,R,的每个满足,F,的关系,r,也满足,XY,,那么称,F,逻辑蕴涵,XY,,记为,F XY,。,定义,4.3,设,F,是函数依赖集,被,F,逻辑蕴涵的函数依赖全体构成的集合,称为函数依赖集,F,的闭包(,closure,),记为,F,+,。即,F,+,=,XY |,记为,F XY,。 ,2024/9/10,11,4.2.3 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,上成立。,2024/9/10,12,4.2.3 FD,的推理规则(二),定理,4.1 FD,推理规则,A1,、,A2,和,A3,是正确的。也就是,如果,XY,是从,F,用推理规则导出,那么,XY,在,F,+,中。,定理,4.2 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,,,W Z, X,(,W,Y,),YZ,。,2024/9/10,13,4.2.3 FD,的推理规则(三),例,4.5,已知关系模式,R,(,ABC,),,F=,AB,,,BC,,求,F,+,。,根据,FD,的推理规则,可推出,F,的,F,+,有,43,个,FD,。,例如,据规则,A1,可推出,A,(,表示空属性集),,AA,,,。据已知的,AB,及规则,A2,可推出,ACBC,,,ABB,,,AAB,,,。据已知条件及规则,A3,可推出,AC,等。,有兴趣的同学可推出这,43,个,FD,。,2024/9/10,14,4.2.3 FD,的推理规则(四),定义,4.4,对于,FD XY,,如果,Y,X,,那么称,XY,是一个“平凡的,FD”,,否则称为“非平凡的,FD”,。,定理,4.3,如果,A1An,是关系模式,R,的属性集,那么,XA1An,成立的充分必要条件是,XA,i,(,i,=1,,,,,n,)成立。,2024/9/10,15,4.2.4 FD,和关键码的联系,定义,4.5,设关系模式,R,的属性集是,U,,,X,是,U,的一个子集。如果,XU,在,R,上成立,那么称,X,是,R,的一个超键。如果,XU,在,R,上成立,但对于,X,的任一真子集,X,1,都有,X,1,U,不成立,那么称,X,是,R,上的一个候选键。本章的键都是指候选键。,例,4.6,在学生选课、教师任课的关系模式中:,R,(,S#,,,SNAME,,,C#,,,GRADE,,,CNAME,,,TNAME,,,TAGE,),如果规定:每个学生每学一门课只有一个成绩;每个学生只有一个姓名;每个课程号只有一个课程名;每门课程只有一个任课教师。,根据这些规则,可以知道(,S#,,,C#,)能函数决定,R,的全部属性,并且是一个候选键。虽然(,S#,,,SNAME,,,C#,,,TNAME,)也能函数决定,R,的全部属性,但相比之下,只能说是一个超键,而不能说是候选键,因为其中含有多余属性。,2024/9/10,16,4.2.5,属性集的闭包,定义,4.6,设,F,是属性集,U,上的,FD,集,,X,是,U,的子集,那么(相对于,F,)属性集,X,的闭包用,X,+,表示,它是一个从,F,集使用,FD,推理规则推出的所有满足,XA,的属性,A,的集合:,X,+,=, 属性,A | XA,在,F,+,中 ,定理,4.4 XY,能用,FD,推理规则推出的充分必要条件是,Y,X,+,。,例,4.7,属性集,U,为,ABCD,,,FD,集为,AB,,,BC,,,DB,。则用上述算法,可求出,A,+,=ABC,,,(,AD,),+,=ABCD,,(,BD,),+,=BCD,,等等。,2024/9/10,17,4.2.5 FD,推理规则的完备性,推理规则的正确性是指“从,FD,集,F,使用推理规则集推出的,FD,必定在,F,+,中”,完备性是指“,F,+,中的,FD,都能从,F,集使用推理规则集导出”。也就是正确性保证了推出的所有,FD,是正确的,完备性保证了可以推出所有被蕴涵的,FD,。这就保证了推导的有效性和可靠性。,定理,4.5 FD,推理规则,A1,,,A2,,,A3,是完备的。,2024/9/10,18,4.2.6 FD,集的最小依赖集(一),定义,4.7,如果关系模式,R,(,U,)上的两个函数依赖集,F,和,G,,有,F,+,=G,+,,则称,F,和,G,是等价的函数依赖集。,定义,4.8,设,F,是属性集,U,上的,FD,集。如果,F,min,是,F,的一个最小依赖集,那么,F,min,应满足下列四个条件:, F,+,min,=F,+,;,每个,FD,的右边都是单属性;,F,min,中没有冗余的,FD,(即,F,中不存在这样的函数依赖,XY,,使得,F,与,F,XY,等价);,每个,FD,的左边没有冗余的属性(即,F,中不存在这样的函数依赖,XY,,,X,有真子集,W,使得,F,XY,WY,与,F,等价)。,2024/9/10,19,4.2.6 FD,集的最小依赖集(二),例,4.8,设,F,是关系模式,R,(,ABC,)的,FD,集,,F=,ABC,,,BC,,,AB,,,ABC,,试求,F,min,。,先把,F,中的,FD,写成右边是单属性形式:,F=,AB,,,AC,,,BC,,,AB,,,ABC,显然多了一个,AB,,可删去。得,F=,AB,,,AC,,,BC,,,ABC, F,中,AC,可从,AB,和,BC,推出,因此,AC,是冗余的,可删去。得,F=,AB,,,BC,,,ABC, F,中,ABC,可从,AB,和,BC,推出,因此,ABC,也可删去。最后得,F=,AB,,,BC,,即所求的,F,min,。,2024/9/10,20,4.3,关系模式的分解,4.3.1,模式分解问题 (一),定义,4.9,设有关系模式,R(U),,属性集为,U,,,R,1,、,、,R,k,都是,U,的子集,并且有,R,1,R,2,R,k,U,。关系模式,R,1,、,、,R,k,的集合用,表示,,=,R,1,,,,,R,k,。用,代替,R,的过程称为关系模式的分解。这里,称为,R,的一个分解,也称为数据库模式。,2024/9/10,21,4.3.1,模式分解问题 (二),图4.5 模式分解示意图,2024/9/10,22,4.3.2,无损分解(一),例,4.9,r,C,C,4,3,4,3,r,A,B,C,r,1,A,B,2,A,1,1,1,1,1,1,1,1,2,1,1,2,图4.6 未丢失信息的分解,(,b),(,c),(,a),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),图4.7 丢失信息的分解,2024/9/10,23,4.3.2,无损分解(二),定义,4.10,设,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,)。,2024/9/10,24,4.3.2,无损分解(三),定理,4.6,设,=,R,1,,,,,R,k,是关系模式,R,的一个分解,,r,是,R,的任一关系,,r,i,=,R,i,(,r,)(,1,i,k,),那么有下列性质:,r,m,(,r,);,若,s,=,m,(,r,),则,R,i,(,s,),=,r,i,;,m,(,m,(,r,),=,m,(,r,),这个性质称为幂等性(,Idempotent,)。,2024/9/10,25,4.3.2,无损分解(四),R,=,R,1,,,R,2,,,,,R,k,r,r,1,,,r,2,,,,,r,k,s,s,1,,,s,2,,,,,s,k,图中:,r,i,=,Ri,(,r,)(,1,i,k,),s,i,=,Ri,(,r,)(,1,i,k,),据性质,1.,有,r,m,(,r,),据性质,2.,有,s,i,=,r,i,(,1,i,k,),图4.8,r,的投影连接变换示意图,2024/9/10,26,4.3.2,无损分解(五),图4.9 泛关系假设下的示意图,图4.9 泛关系假设时的示意图,2024/9/10,27,4.3.2,无损分解(六),例,4.10,设关系模式,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,2024/9/10,28,4.3.3,无损分解的测试方法(一),算法,4.3,无损分解的测试,构造一张,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,是无损分解,否则称损失分解。,2024/9/10,29,4.3.3,无损分解的测试方法(二),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,图4.12 算法4.3的运用示意图(一),(,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,b,1,AB,D,C,B,A,(,a),初始表格,(,a),修改后的表格,图4.13 算法4.3的运用示意图(二),2024/9/10,30,4.3.3,无损分解的测试方法(三),定理,4.7,设,=,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,)。,定理,4.8,如果,FD XY,在模式,R,上成立,且,XY=,,那么,R,分解成,=R,Y,,,XY ,是无损分解。,2024/9/10,31,4.3.4,保持函数依赖的分解(一),定义,4.11,设,F,是属性集,U,上的,FD,集,,Z,是,U,的子集,,F,在,Z,上的投影用,Z,(,F,)表示,定义为,Z,(,F,),=,XY | XYF,+,,且,XY,Z,定义,4.12,设,=,R,1,,,,,R,k,是,R,的一个分解,,F,是,R,上的,FD,集,如果有,R,i,(,F,),F,,那么称分解,保持函数依赖集,F,。,2024/9/10,32,4.3.4,保持函数依赖的分解(二),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,例,4.12,(,c),r,r,1,2,(,a),关系,r,1,(,b),关系,r,2,2024/9/10,33,4.3.5,模式分解与模式等价问题(一),本节讨论的关系模式分解的两个特性实际上涉及到两个数据库模式的等价问题,这种等价包括数据等价和依赖等价两个方面。数据等价是指两个数据库实例应表示同样的信息内容,用“无损分解”衡量。如果是无损分解,那么对泛关系反复的投影和联接都不会丢失信息。依赖等价是指两个数据库模式应有相同的依赖集闭包。在依赖集闭包相等情况下,数据的语义是不会出差错的。违反数据等价或依赖等价的分解很难说是一个好的模式设计。,2024/9/10,34,4.3.5,模式分解与模式等价问题(二),例,4.13,设关系模式,R,(,ABC,),,=,AB,,,AC,是,R,的一个分解。试分析分别在,F,1,=,AB,,,F,2,=,AC,,,BC,,,F,3,=,BA,,,F,4,=,CB,,,BA,情况下,,是否具有无损分解和保持,FD,的分解特性。,相对于,F1 =,AB,,分解,是无损分解且保持,FD,的分解。,相对于,F2,=,AC,,,BC,,分解,是无损分解,但不保持,FD,集。因为,BC,丢失了。,相对于,F3,=,BA,,分解,是损失分解但保持,FD,集的分解。,相对于,F4,=,CB,,,BA,,分解,是损失分解且不保持,FD,集的分解,(,丢失了,CB),2024/9/10,35,4.4,关系模式的范式,关系模式的好与坏,用什么标准衡量?这个标准就是模式的范式(,Normal Forms,,简记为,NF,)。范式的种类与数据依赖有着直接的联系,基于,FD,的范式有,1NF,、,2NF,、,3NF,、,BCNF,等多种。,在不提及,FD,时,关系中是不可能有冗余的问题,但是当存在,FD,时,关系中就有可能存在数据冗余问题。,1NF,是关系模式的基础;,2NF,已成为历史,一般不再提及;在数据库设计中最常用的是,3NF,和,BCNF,。为了叙述的方便,我们还是从,1NF,、,2NF,、,3NF,、,BCNF,顺序来介绍。,2024/9/10,36,4.4.1,第一范式(,1NF,),定义,4.13,如果关系模式,R,的每个关系,r,的属性值都是不可分的原子值,那么称,R,是第一范式(,first normal form,,简记为,1NF,)的模式。,满足,1NF,的关系称为规范化的关系,否则称为非规范化的关系。关系数据库研究的关系都是规范化的关系。例如关系模式,R,(,NAME,,,ADDRESS,,,PHONE,),如果一个人有两个电话号码(,PHONE,),那么在关系中至少要出现两个元组,以便存储这两个号码。,1NF,是关系模式应具备的最起码的条件。,2024/9/10,37,满足第一范式的,(,不好的,),关系模式的例子,例4:设有一关系,R(S#,,,C#,,,G,,,TN,,,D),,,其中(,S#),为学号,,C#,为课程号,,G,为成绩,,TN,为任课教师姓名,,D,为教师所在系名,这些数据具有下列语义:,(1) 学号是一个学生的标识,课程号是一门课程的标识。,(2) 一位学生所修的每门课程都有一个成绩。,(3) 每门课程只有一位任课教师,但一位教师可以教多门课。,(4) 教师中没有重名,每位教师只属于一个系。,2024/9/10,38,下面是一个具体实例:,S#,C#,G,TN,D,s1,c1,g1,t1,d1,s1,c2,g2,t2,d2,s2,c1,g3,t1,d1,s2,c2,g4,t2,d2,s3,c2,g5,t2,d2,s3,c3,g6,t2,d2,学号 课程号 成绩 教师 系名,2024/9/10,39,虽然上述的关系模式只有四个属性,但在使用过程中有以下几个问题:,(1),数据冗余,。例如,教师所在系名对选该教师所开课的所有学生都重复一次。,(2),插入异常,。由于关系的主键,S#, C#,不能为空值,如果一个教师不教课,则这位教师的姓名及所属的系名就不能插入表中。,2024/9/10,40,(3),删除异常,。如果所有学生都退选某一门课,则有关该门课的其它数据,(,任课教师名及所在系名,),也将被删除。,(4),修改异常,。例如,如果改变一门课的任课教师,则需要修改表中的多行记录,如果部分修改,部分不修改,则会导致数据的不一致。,上述关系模式只所以是一个不好的关系模式,是因为模式中存在,部分函数依赖和传递函数依赖,。消除这些部分函数依赖和传递函数依赖,就可以得到一个比较好的关系模式。,2024/9/10,41,4.4.2,第二范式(,2NF,)(一),定义,4.14,对于,FD WA,,如果存在,XW,有,XA,成立,那么称,WA,是局部依赖(,A,局部依赖于,W,);否则称,WA,是完全依赖。完全依赖也称为“左部不可约依赖”。,定义,4.15,如果,A,是关系模式,R,的候选键中属性,那么称,A,是,R,的主属性;否则称,A,是,R,的非主属性。,定义,4.16,如果关系模式,R,是,1NF,,且每个非主属性完全函数依赖于候选键,那么称,R,是第二范式(,2NF,)的模式。如果数据库模式中每个关系模式都是,2NF,,则称数据库模式为,2NF,的数据库模式。,2024/9/10,42,4.4.2,第二范式(,2NF,)(二),例,4.14,设关系模式,R,(,S#,,,C#,,,GRADE,,,TNAME,,,TADDR,)的属性分别表示学生学号、选修课程的编号、成绩、任课教师姓名和教师地址等意义。(,S#,,,C#,)是,R,的候选键。,R,上有两个,FD,:(,S#,,,C#,),(,TNAME,,,TADDR,)和,C#,(,TNAME,,,TADDR,),因此前一个,FD,是局部依赖,,R,不是,2NF,模式。此时,R,的关系就会出现冗余和异常现象。譬如某一门课程有,100,个学生选修,那么在关系中就会存在,100,个元组,因而教师的姓名和地址就会重复,100,次。,如果把,R,分解成,R1,(,C#,,,TNAME,,,TADDR,)和,R2,(,S#,,,C#,,,GRADE,)后,局部依赖(,S#,,,C#,),(,TNAME,,,TADDR,)就消失了。,R1,和,R2,都是,2NF,模式。,2024/9/10,43,4.4.2,第二范式(,2NF,)(三),算法,4.4,分解成,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,为止。,2024/9/10,44,例:是,1NF,但不是,2NF,的关系模式,设有关系模式如下:,REPROT(,S#,C#,TITLE, LNAME, ROOM#, MARKS),其中,S#,是学号,,C#,是课程号,,TITLE,为课程名,,LNAME,是教师名,,ROOM#,是教室号,,MARKS,是分数。,关系中的一个元组,表示学生,s,在课程,c,中的得分为,m,,,课程名为,t,由教师,l,讲授,其教室编号为,r,。,若每门课只由一位教师讲授,每位教师只有一个教室,即只在一个教室中讲课,则,REPORT,的函数依赖如下:,(,S#, C#),MARKS,C# TITLE,C# LNAME,LNAME ROOM#,2024/9/10,45,关系模式,REPROT(,S#,C#,TITLE, LNAME, ROOM#, MARKS),的码是,(S#, C#),,非主属性,TITLE,,,LNAME,和,ROOM#,对码是部分函数依赖,并存在传递函数依赖,C#, LNAME,,,LNAME ROOM#,。,REPORT,属于,1NF,,不属于,2NF,。,S#,C#,MARKS,TITLE,LANME,ROOM#,图,5-3,2024/9/10,46,消除部分函数依赖,为消除部分函数依赖,将,REPORT,关系模式分解为,REPORT1,和,COURSE,这二个关系模式:,REPORT1(,S#, C#,MARKS),函数依赖是,(S#, C#) MARKS,COURSE(,C#, TITLE, LNAME, ROOM#),函数依赖是,C# TITLE, C# LNAME,LNAME ROOM#,。,REPORT1,和,COURSE,都消除了对码的部分函数依赖,因此都属于,2NF,。,2024/9/10,47,一个关系模式仅仅满足,2NF,仍是不够的,如在关系模式,COURSE,(C#, TITLE, LNAME, ROOM#),中,仍存在着插入,删除和修改异常问题:,新来的教师,还没有分配授课之前,教师的姓名及教室编号都不能加到关系模式中;,如果要修改教室编号,必须修改与教师授课相对应的各元组中的教室编号,因为一位教师可能会教多门课。,存在上述这些问题的原因是关系模式,COURSE,中存在,传递函数依赖,,所以要把关系模式,COURSE,向第三范式转化,除去非主属性对码的传递函数依赖。,2024/9/10,48,4.4.3,第三范式(,3NF,)(一),定义,4.17,如果,XY,,,YA,,且,YX,和,AY,,那么称,XA,是传递依赖(,A,传递依赖于,X,)。,定义,4.18,如果关系模式,R,是,1NF,,且每个非主属性都不传递依赖于,R,的候选键,那么称,R,是第三范式(,3NF,)的模式。如果数据库模式中每个关系模式都是,3NF,,则称其为,3NF,的数据库模式 。,2024/9/10,49,4.4.3,第三范式(,3NF,)(二),例,4.15,在例,4.14,中,,R2,是,2NF,模式,而且也已是,3NF,模式。但,R1,(,C#,,,TNAME,,,TADDR,)是,2NF,模式,却不一定是,3NF,模式。如果,R1,中存在函数依赖,C#TNAME,和,TNAMETADDR,,那么,C#TADDR,就是一个传递依赖,即,R1,不是,3NF,模式。此时,R1,的关系中也会出现冗余和异常操作。譬如一个教师开设五门课程,那么关系中就会出现五个元组,教师的地址就会重复五次。,如果把,R2,分解成,R21,(,TNAME,,,TADDR,)和,R22,(,C#,,,TNAME,)后,,C#TADDR,就不会出现在,R21,和,R22,中。这样,R21,和,R22,都是,3NF,模式。,2024/9/10,50,4.4.3,第三范式(,3NF,)(三),算法,4.5,分解成,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,为止。,2024/9/10,51,4.4.3,第三范式(,3NF,)(四),定理,4.9,如果,R,是,3NF,模式,那么,R,也是,2NF,模式。,定理,4.10,设关系模式,R,,当,R,上每一个,FD XA,满足下列三个条件之一时:,AX,(即,XA,是一个平凡的,FD,);,X,是,R,的超键;,A,是主属性。关系模式,R,就是,3NF,模式。,2024/9/10,52,4.4.3,第三范式(,3NF,)(五),图4.15 违反3,NF,的传递依赖的三种情况,2024/9/10,53,在前面的例子中,关系模式:,COURSE(C#, TITLE, LNAME, ROOM#),其中存在非主属性,ROOM#,对码的传递依赖,即:,C# LNAME, LNAME ROOM#,,,因此,COURSE,不属于3,NF,。,将,COURSE,分解为:,COURSE1(C#, TITLE, LNAME),和,LECTURE(LNAME, ROOM#),则关系模式,COURSE1,和,LECTURE,中都没有传递函数依赖,因此,COURSE1,和,LECTURE,都属于,3NF,。,2024/9/10,54,至此,关系模式,REPORT,分解为下列,3,个属于,3NF,的一组关系模式:,REPORT1 (S#, C#, MARKS),COURSE1 (C#, TITLE, LNAME),LECTURE (LNAME, ROOM#),和关系模式,REPORT,相比,这些关系模式是对现实世界更加精确的描述。把这,3,个关系进行连接,总能重构初始的关系。,2024/9/10,55,4.4.4 BCNF,(,Boyce,Codd,NF,)(一),图4.16 主属性对候选键的传递依赖,2024/9/10,56,4.4.4 BCNF,(,Boyce,Codd,NF,)(二),定义,4.19,如果关系模式,R,是,1NF,,且每个属性都不传递依赖于,R,的候选键,那么称,R,是,BCNF,的模式。如果数据库模式中每个关系模式都是,BCNF,,则称为,BCNF,的数据库模式。,定理,4.11,如果,R,是,BCNF,模式,那么,R,也是,3NF,模式。,定义,4.19,设,F,是关系模式,R,的,FD,集,如果对,F,中每个非平凡的,FD XY,,都有,X,是,R,的超键,那么称,R,是,BCNF,的模式。,2024/9/10,57,4.4.5,分解成,BCNF,模式集的算法,算法,4.6,无损分解成,BCNF,模式集,对于关系模式,R,的分解,(初始时,=R,),如果,中有一个关系模式,R,i,相对于,R,i,(,F,)不是,BCNF,。据定义,4-20,可知,,R,i,中存在一个非平凡,FD XY,,有,X,不包含超键。此时把,R,i,分解成,XY,和,R,i,Y,两个模式。重复上述过程,一直到,中每一个模式都是,BCNF,。,2024/9/10,58,例:一个是,3NF,但不是,BCNF,的关系模式,设有关系模式,STJ(S, T, J),,,S,表示学生,,T,表示教师,,J,表示课程。每一教师只教一门课,每门课有若干教师,某一学生选定某门课,就对应一个固定的教师,由语义可得到如下的函数依赖。,(S, J),T; (S, T) J; TJ,即,学生,所选课程决定授课教师;,学生,授课教师决定所选课程;,教师决定所授课程;,如下图所示:,2024/9/10,59,则,(S,,,J),,,(S,,,T),都是候选码;,S,,,T,,,J,都是主属性。,STJ,3NF,,因为没有任何非主属性对候选码的传递依赖或部分依赖。,STJ,BCNF,,,因为主属性,J,传递函数依赖于候选码,S,,,J,。,S,J,T,S,T,J,图,STJ,中的函数依赖,2024/9/10,60,模式设计示例,例,:,学生基本情况的关系模式:,STUDENT,(,SNO,,,SNAME,,,AGE,,,SEX,,,CLASS,,,DEP,,,CNO,,,CNAME,,,GRADE,,,SCORE,),该关系模式的函数依赖集,F= SNO,SNAME,,,SNO,AGE,,,SNO,SEX,,,SNO,CLASS,,,SNO,DEP,,,CLASS,DEP,,,CNO,CNAME,,,CNO,SCORE,,,SNO+CNO,GRADE ,该模式的码是,(SNO, CNO),该模式是属于,1NF,:满足的条件是元组的每个分量必须是不可分的数据项。不是一个好的关系模式。同学自己分析为什么是一个不好的关系模式?,2024/9/10,61,修改设计使其满足第二范式,2NF,关系模式,STUDENT,不符合,2NF,要求。因为其中存在部分函数依赖。,关系模式,STUDENT,的主码是,(SNO,,,CNO),。,非主属性,SNAME,,,AGE,,,SEX,,,CLASS,,,DEP,,,CNAME,,,GRADE,,,SCORE,非主属性中存在对码的部分函数依赖,如,,SNO,SNAME,,,CNO,CNAME,。,2024/9/10,62,消除部分函数依赖,将,STUDENT,关系模式分解,消除部分函数依赖,得到三个关系模式符合,2NF,要求:,STUDENT2,(,SNO,,,SNAME,,,AGE,,,SEX,,,CLASS,,,DEP,),COURSE,(,CNO,,,CNAME,,,SCORE,),SC,(,SNO,,,CNO,,,GRADE,),在,STUDENT2,模式中,仍然存在数据冗余,以及插入和删除异常。,2024/9/10,63,修改设计使其满足第三范式,3NF,关系模式,STUDENT2,不满足第三范式要求,存在传递依赖。如,SNO,CLASS,DEP,,消除传递依赖,分解,STUDENT2,如下:,STUDENT3,(,SNO,,,SNAME,,,AGE,,,SEX,,,CLASS,),CLASS,(,CLASS,,,DEP,),2024/9/10,64,满足第三范式要求,至此,关系模式,STUDENT,分解为,4,个,3NF,的关系模式:,STUDENT3,(,SNO,,,SNAME,,,AGE,,,SEX,,,CLASS,),CLASS,(,CLASS,,,DEP,),COURSE,(,CNO,,,CNAME,,,SCORE,),SC,(,SNO,,,CNO,,,GRADE,),2024/9/10,65,修改设计使其满足,BCNF,范式,例如,关系模式课程,COUSE(CNO,,,CNAME,,,SCORE),,,只有一个码,CNO,,没有任何属性对码有部分和传递函数以来,所以,COUSE,3NF,。,同时,,COUSE,中,CNO,是唯一的决定因素,因此,COUSE,BCNF,。,2024/9/10,66,模式分解习题,设有关系模式,R(U, F),其中,U=A,,,B,,,C,,,D,,,E ,,,F = AB,C,,,B D,,,D E,,,C B ,,试问,R,最高为第几范式,并解释原因?如果,R,不是,3NF,或,BCNF,,要求将其分解为,3NF,和,BCNF,。,2024/9/10,67,关系,R,中的函数依赖如下图表示,R (A,B,C,D,E),:,A,,,B,C,;,B D,;,D E,;,C B,A,B,C,D,E,候选键:,(A,B),和,(A,C),候选键是什么?,能够唯一标识一个元组的某一属性或属性组。,2024/9/10,68,是否满足第一范式,第一范式规定关系的每一个分量必须是一个不可分的数据项。,可以看出,该关系满足第一范式。,A,B,C,D,E,2024/9/10,69,是否满足第二范式,如果关系模式,R,满足第一范式,且它的任何一个,非主属性,都完全函数依赖于任一个候选码,则,R,满足,第二范式,(简记为,2NF,)。,A,B,C,D,E,R (A,B,C,D,E),:,A,,,B,C,;,B D,;,D E,;,C B,所以不是第二范式,2024/9/10,70,分解成第二范式,R1,(A,B,C),:,A,,,B,C,;,C B,R2,(B,D,E):,B D,;,D E,;,A,B,C,B,D,E,2024/9/10,71,是否满足第三范式,如果关系模式,R,满足,2NF,,并且它的任何一个非主属性,都不传递依赖,于任何候选码,则称,R,是第三范式,(3NF),记作,R,3NF,。,A,B,C,B,D,E,R1,(A,B,C),:,A,,,B,C,;,C B,R2 (B,D,E):,B D,;,D E,;,所以不是第三范式,2024/9/10,72,分解成第三范式,R1(A,B,C),:,A,,,B,C,;,C B,R21(B,D):,B D,R22(D,E):,D E,A,B,C,D,D,B,E,2024/9/10,73,是否满足,BCNF,范式,如果关系模式,R,是,1NF,,且,每个属性,都不传递依赖于,R,的候选码,那么称,R,是,BCNF,的模式。,A,B,C,D,D,B,E,R1(A,B,C),:,A,,,B,C,;,C B,R21(B,D):,B D,R22(D,E):,D E,R1,中属性,B,传递依赖于,R,的候选码,AB,,故,R1,不是,BCNF,范式,2024/9/10,74,是否满足,BCNF,范式,关系模式,R,1NF,,若,X,Y,,且,Y,X,时,,X,必含有候选码,则,R,BCNF,。,A,B,C,D,D,B,E,R1(A,B,C),:,A,,,B,C,;,C B,R21(B,D):,B D,R22(D,E):,D E,R1,中,C,B,,且,B,C,,但,B,不含有任何候选码,故,R1,不是,BCNF,范式,2024/9/10,75,分解成,BCNF,范式,A,C,B,D,D,B,E,R11(A,C),:,A,,,C,R12,(B,C),:,C B,R21(B,D):,B D,R22(D,E):,D E,C,2024/9/10,76,小 结(一),本章讨论如何设计关系模式问题。关系模式设计得好与坏,直接影响到数据冗余度、数据一致性等问题。要设计好的数据库模式,必须有一定的理论为基础。这就是模式规范化理论。,在数据库中,数据冗余是指同一个数据存储了多次,由数据冗余将会引起各种操作异常。通过把模式分解成若干比较小的关系模式可以消除冗余。,2024/9/10,77,小 结(二),函数依赖,XY,是数据之间最基本的一种联系,在关系中有两个元组,如果,X,值相等那么要求,Y,值也相等。,FD,有一个完备的推理规则集。,关系模式在分解时应保持“等价”,有数据等价和语义等价两种,分别用无损分解和保持依赖两个特征来衡量。前者能保持泛关系在投影联接以后仍能恢复回来,而后者能保证数据在投影或联接中其语义不会发生变化,也就是不会违反,FD,的语义。但无损分解与保持依赖两者之间没有必然的联系。,2024/9/10,78,小 结(三),范式是衡量模式优劣的标准,范式表达了模式中数据依赖之间应满足的联系。如果关系模式,R,是,3NF,,那么,R,上成立的非平凡,FD,都应该左边是超键或右边是非主属性。如果关系模式,R,是,BCNF,,那么,R,上成立的非平凡的,FD,都应该左边是超键。范式的级别越高,其数据冗余和操作异常现象就越少。,2024/9/10,79,小 结(四),分解成,BCNF,模式集的算法能保持无损分解,但不一定能保持,FD,集。而分解成,3NF,模式集的算法既能保持无损分解,又能保持,FD,集。,关系模式的规范化过程实际上是一个“分解”过程:把逻辑上独立的信息放在独立的关系模式中。分解是解决数据冗余的主要方法,也是规范化的一条原则:“关系模式有冗余问题就分解它”。,2024/9/10,80,本章的重点篇幅,(,1,)教材中,P148,的例,4.13,。(无损联接和保持,FD,的例子),(,2,)教材中,P149,的例,4.14,和,P150,的例,4.15,。(分解成,2,NF,和,3,NF,的例子),2024/9/10,81,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 方案规范


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!