资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,数据库系统概论,An Introduction to Database System,第六章 关系数据理论,第六章 关系数据理论,6.1,问题的提出,6.2,规范化,6.3,数据依赖的公理系统,*,6.4,模式的分解,6.5,小结,6.1,问题的提出,关系数据库逻辑设计,针对具体问题,如何构造一个适合于它的数据模式,数据库逻辑设计的工具关系数据库的规范化理论,元组的每个分量必须是不可分的数据项。,数据库中的数据冗余应尽量的少,数据库中不必要的重复存储就是数据冗余(要尽量避免)。,关系数据库不能因为数据更新操作而引起数据不一致,由于数据的重复存储,会给更新带来很多麻烦。可能会导致 数据不一致,这将直接影响系统的质量。,关系模式基本要求,续,.,插入数据时,不能出现插入异常。(语法问题或者违反完整性约束),插入元组时出现不能插入的一些不合理现象(语义问题、逻辑错误)。,删除数据时,不能出现删除异常(同,6,、,7,)。,数据库设计应考虑查询的要求,数据组织要合理。,例题:,设有包括,11,个属性的教师任课关系模式,TDC,如下:,TDC,(,TNO,教师编号,,TNAME,教师姓名,,TITLE,职称,,ADDR,住址,,DNO,部门,/,系编号,,DNAME,部门,/,系名称,,LOC,部门,/,系所在地,,CNO,课程号,,CNAME,课程名,,LEVEL,课程类别,,CREDIT,课程学分),关系模式的冗余和异常问题,TNAME,ADDRESS,C#,CNAME,t1,a1,c1,n1,t1,a1,c2,n2,t1,a1,c3,n3,t2,a2,c4,n4,t2,a2,c5,n5,t3,a3,c6,n6,数据冗余,如果一个教师教几门课程,那么这个教师的地址就要重复几次存储。,操作异常,由于数据的冗余,在对数据操作时会引起各种异常:,1,、修改异常,例如教师,t1,教三门课程,在关系中就会有三个元组。如果他的地址变了,这三个元组中的地址都要改变。若有一个元组中的地址未更改,就会造成这个教师的地址不惟一,产生不一致现象。,关系模式的冗余和异常问题,关系模式的冗余和异常问题,2,、插入异常,如果一个教师刚调来,尚未分派教学任务,那么要将教师的姓名和地址存储到关系中去时,在属性,C#,和,CNAME,上就没有值(空值)。在数据库技术中空值的语义是非常复杂的,对带空值元组的检索和操作也十分麻烦。,3,、删除异常,如果在上图中要取消教师,t3,的教学任务,那么就要把这个教师的元组删去,同时也把,t3,的地址信息从表中删去了。这是一种不合适的现象。,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,关系模式分解的实例,解决方法:将模式分解,在该模式中就可能出现上述提到的一些异常。为解决这些异常,现将该模式分解如下:,T,(,TNO,,,TNAME,,,TITLE,,,ADDR,,,DNO,),D,(,DNO,,,DNAME,,,LOC,),C,(,CNO,,,CNAME,,,CREDIT,),TC,(,TNO,,,CNO,,,LEVEL,),这个新的关系模型包括四个关系模式:教师,T,、部门(或系),D,、课程,C,、教学,TC,。各个关系不是孤立的,它们相互间存在关联,因此构成了整个系统的模型。,例题:,问题的提出,一、概念回顾,二、关系模式的形式化定义,三、什么是数据依赖,四、关系模式的简化定义,五、数据依赖对关系模式影响,一、概念回顾,关系,:描述实体、属性、实体间的联系。,从形式上看,它是一张二维表,是所涉及属性的笛卡尔积的一个子集。,关系模式,:用来定义关系。,关系数据库,:基于关系模型的数据库,利用关系来描述现实世界。,从形式上看,它由一组关系组成。,关系数据库的模式,:定义这组关系的关系模式的全体。,二、关系模式的形式化定义,关系模式由五部分组成,即它是一个五元组:,R(U,D,DOM,F),R,:,关系名,U,:组成该关系的属性名集合,D,:属性组,U,中属性所来自的域,DOM,:属性向域的映象集合,F,:属性间数据的依赖关系集合,三、什么是数据依赖,1.,完整性约束的表现形式,限定属性取值范围:例如学生成绩必须在,0-100,之间,定义属性,值,间的相互关连(主要体现于值的,相等与否,),这就是数据依赖,它是数据库模式设计的关键,什么是数据依赖(续),2.,数据依赖,是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是,语义,的体现,什么是数据依赖(续),3.,数据依赖的类型,函数依赖(,Functional Dependency,,简记为,FD,),多值依赖(,Multivalued Dependency,,简记为,MVD,),其他,四、关系模式的简化表示,关系模式,R,(,U,D,DOM,F,),简化为一个三元组:,R,(,U,F,),当且仅当,U,上的一个关系,r,满足,F,时,,r,称为关系,模式,R,(,U,F,)的一个,关系,五、,数据依赖对关系模式的影响,例:描述学校的数据库:,学生的学号(,Sno,)、所在系(,Sdept,),系主任姓名(,Mname,)、课程名(,Cname,),成绩(,Grade,),单一,的关系模式:,Student,U,Sno,Sdept,Mname,Cname,Grade,数据依赖对关系模式的影响(续),学校数据库的语义:,一个系有若干学生,一个学生只属于一个系;,一个系只有一名主任;,一个学生可以选修多门课程,每门课程有若干学生选修;,每个学生所学的每门课程都有一个成绩。,数据依赖对关系模式的影响(续),属性组,U,上的一组函数依赖,F,:,F,Sno Sdept,Sdept Mname,(Sno,Cname)Grade,Sno,Cname,Sdept,M,nam,e,Grade,关系模式,Student,中存在的问题,数据冗余太大,浪费大量的存储空间,例:每一个系主任的姓名重复出现,更新异常(,Update Anomalies,),数据冗余,,,更新数据时,维护数据完整性代价大。,例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组,关系模式,Student,中存在的问题,插入异常(,Insertion Anomalies,),该插的数据插不进去,例,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。,删除异常(,Deletion Anomalies,),不该删除的数据不得不删,例,如果某个系的学生全部毕业了,我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。,数据依赖对关系模式的影响(续),结论:,Student,关系模式不是一个好的模式。,“,好,”,的模式:,不会发生插入异常、删除异常、更新异常,,数据冗余应尽可能少。,原因:,由存在于模式中的,某些数据依赖,引起的,解决方法:,通过,分解,关系模式来消除其中不合适,的数据依赖。,第六章 关系数据理论,6.1,问题的提出,6.2,规范化,6.3,数据依赖的公理系统,*,6.4,模式的分解,6.5,小结,6.2,规范化,规范化理论,正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。,6.2.1,函数依赖,一、函数依赖,二、平凡函数依赖与非平凡函数依赖,三、完全函数依赖与部分函数依赖,四、传递函数依赖,一、函数依赖,定义,6.1,设,R(U),是一个属性集,U,上的关系模式,,X,和,Y,是,U,的子集。,若对于,R(U),的,任意,一个可能的关系,r,,,r,中不可能存在两个元组在,X,上的属性值相等,而在,Y,上的属性值不等,则称,“,X,函数确定,Y,”,或,“,Y,函数依赖于,X,”,,记作,XY,。,X,称为这个函数依赖的,决定属性集,(Determinant),。,Y=f(x),说明:,1.,函数依赖不是指关系模式,R,的某个或某些关系实例满足的约束条件,而是指,R,的,所有关系实例,均要满足的约束条件。,2.,函数依赖是,语义范畴,的概念。只能根据数据的语义来确定函数依赖。,例如,“,姓名年龄,”,这个函数依赖只有在不允许有同名人的条件下成立,3.,数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖,“,姓名年龄,”,成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在,则拒绝装入该元组。,函数依赖(续),例,:Student(Sno,Sname,Ssex,Sage,Sdept),假设不允许重名,则有,:,Sno Ssex,,,Sno Sage,Sno Sdept,,,Sno,Sname,Sname Ssex,,,Sname Sage,Sname Sdept,但,Ssex Sage,若,XY,,并且,YX,则记为,X,Y,。,若,Y,不函数依赖于,X,则记为,XY,。,二、平凡函数依赖与非平凡函数依赖,在关系模式,R(U),中,对于,U,的子集,X,和,Y,,,如果,XY,,但,Y,X,,则称,XY,是,非平凡的函数依赖,若,XY,,但,Y,X,则称,XY,是,平凡的函数依赖,例:在关系,SC(Sno,Cno,Grade),中,,非平凡函数依赖:,(Sno,Cno),Grade,平凡函数依赖:,(Sno,Cno),Sno,(Sno,Cno)Cno,平凡函数依赖与非平凡函数依赖(续),于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明,我们总是讨论非平凡函数依赖,。,三、完全函数依赖与部分函数依赖,定义,6.2,在关系模式,R(U),中,如果,XY,,并且对于,X,的任何一个真子集,X,,都有,X,Y,则称,Y,完全函数依赖于,X,,记作,X,Y,。,若,XY,,但,Y,不完全函数依赖于,X,,则称,Y,部分函数依赖,于,X,,记作,X,P,Y,。,完全函数依赖与部分函数依赖(续),例,:,在关系,SC(Sno,Cno,Grade),中,,由于:,Sno Grade,,,Cno Grade,,,因此:,(Sno,Cno),Grade,举一个部分函数依赖的例子:,在关系,Std(Sno,Sdept,Mname),中,有:,(Sno,Sdept)Mname,,,Sdept Mname,Sdept Mname,因此:,(Sno,Sdept),p,Mname,四、传递函数依赖,定义,6.3,在关系模式,R(U),中,如果,XY,,,YZ,,且,Y,X,,,YX,,则称,Z,传递函数依赖,于,X,。,注,:,如果,YX,,即,XY,,则,Z,直接依赖,于,X,。,例,:,在关系,Std(Sno,Sdept,Mname),中,有:,Sno Sdept,,,Sdept Mname,Mname,传递函数依赖于,Sno,6.2.2,码,定义,6.4,设,K,为关系模式,R,中的属性或属性组合。若,K,U,,则,K,称为,R,的一个,侯选码,(,Candidate Key,)。若关系模式,R,有多个候选码,则选定其中的一个做为,主码,(,Primary key,)。,主属性与非主属性,ALL KEY,外部码,定义,6.5,关系模式,R,中属性或属性组,X,并非,R,的码,但,X,是另一个关系模式的码,则称,X,是,R,的,外部码(,Foreign key,),也称外码,主码又和外部码一起提供了表示关系间联系的手段,。,6.2.3,范式,范式是符合某一种级别的关系模式的集合。,关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。,范式的种类:,第一范式,(1NF),第二范式,(2NF),第三范式,(3NF),BC,范式,(BCNF),第四范式,(4NF),第五范式,(5NF),6.2.3,范式,各种范式之间存在联系:,某一关系模式,R,为第,n,范式,可简记为,RnNF,。,6.2.4 2NF,1NF,的定义,如果一个关系模式,R,的所有属性都是,不可分的基本数据项,,则,R1NF,。,第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。,但是满足第一范式的关系模式并不一定是一个好的关系模式。,2NF,例,:,关系模式,SLC(Sno,Sdept,Sloc,Cno,Grade),Sloc,为学生住处,假设每个系的学生住在同一个地方。,函数依赖包括:,(Sno,Cno),f,Grade,Sno Sdept,(Sno,Cno),P,Sdept,Sno Sloc,(Sno,Cno),P,Sloc,Sdept Sloc,2NF,SLC,的码为,(Sno,Cno),SLC,满足第一范式。,非主属性,Sdept,和,Sloc,部分函数依赖于码,(Sno,Cno),Sno,Cno,Grade,Sdept,Sloc,SLC,SLC,不是一个好的关系模式,(1),插入异常,假设,Sno,95102,,,Sdept,IS,,,Sloc,N,的学生还未选课,因课程号是主属性,因此该学生的信息无法插入,SLC,。,(2),删除异常,假定某个学生本来只选修了,3,号课程这一门课。现在因身体不适,他连,3,号课程也不选修了。因课程号是主属性,此操作将导致该学生信息的整个元组都要删除。,SLC,不是一个好的关系模式,(3),数据冗余度大,如果一个学生选修了,10,门课程,那么他的,Sdept,和,Sloc,值就要重复存储了,10,次。,(4),修改复杂,例如学生转系,在修改此学生元组的,Sdept,值的同时,还可能需要修改住处(,Sloc,)。如果这个学生选修了,K,门课,则必须无遗漏地修改,K,个元组中全部,Sdept,、,Sloc,信息。,2NF,原因,Sdept,、,Sloc,部分函数依赖于码。,解决方法,SLC,分解为两个关系模式,以消除这些部分函数依赖,SC,(,Sno,,,Cno,,,Grade,),SL,(,Sno,,,Sdept,,,Sloc,),2NF,SLC,的码为,(Sno,Cno),SLC,满足第一范式。,非主属性,Sdept,和,Sloc,部分函数依赖于码,(Sno,Cno),Sno,Cno,Grade,Sdept,Sloc,SLC,2NF,函数依赖图,:,Sno,Cno,Grade,SC,SL,Sno,Sdept,Sloc,2NF,2NF,的定义,定义,6.6,若关系模式,R1NF,,并且每一个,非主,属性都,完全,函数依赖于,R,的码,则,R2NF,。,例:,SLC(Sno,Sdept,Sloc,Cno,Grade)1NF,SLC(Sno,Sdept,Sloc,Cno,Grade)2NF SC,(,Sno,,,Cno,,,Grade,),2NF,SL,(,Sno,,,Sdept,,,Sloc,),2NF,第二范式(续),采用投影分解法将一个,1NF,的关系分解为多个,2NF,的关系,可以在一定程度上减轻原,1NF,关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。,将一个,1NF,关系分解为多个,2NF,的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。,6.2.5 3NF,例:,2NF,关系模式,SL(Sno,Sdept,Sloc),中,函数依赖:,SnoSdept,SdeptSloc,SnoSloc,Sloc,传递函数依赖于,Sno,,即,SL,中存在非主属性对码的传递函数依赖。,3NF,函数依赖图,:,SL,Sno,Sdept,Sloc,3NF,解决方法,采用投影分解法,把,SL,分解为两个关系模式,以消除传递函数依赖:,SD,(,Sno,,,Sdept,),DL,(,Sdept,,,Sloc,),SD,的码为,Sno,,,DL,的码为,Sdept,。,3NF,SD,的码为,Sno,,,DL,的码为,Sdept,。,Sno,Sdept,SD,Sdept,Sloc,DL,3NF,3NF,的定义,定义,6.7,关系模式,R,中若不存在这样的码,X,、属性组,Y,及,非主属性,Z,(,Z,Y,),使得,X,Y,,,Y,X,,,Y,Z,,成立,则称,R,3NF,。,例,,SL(Sno,Sdept,Sloc)2NF,SL(Sno,Sdept,Sloc)3NF,SD,(,Sno,,,Sdept,),3NF,DL,(,Sdept,,,Sloc,),3NF,3NF,若,R3NF,,则,R,的每一个,非主属性,既不部分函数依赖于候选码也不传递函数依赖于候选码。,如果,R3NF,,则,R,也是,2NF,。,采用投影分解法将一个,2NF,的关系分解为多个,3NF,的关系,可以在一定程度上解决原,2NF,关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。,将一个,2NF,关系分解为多个,3NF,的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。,6.2.6 BC,范式(,BCNF,),定义,6.8,设关系模式,R,1NF,,如果对于,R,的,每个函数依赖,XY,,若,Y,不属于,X,,则,X,必含有候选码,那么,RBCNF,。,若,RBCNF,每一个决定属性集(因素)都包含(候选)码,R,中的所有属性(主,非主属性)都完全函数依赖于码,R3NF,(证明),若,R3NF,则,R,不一定,BCNF,BCNF,例:在关系模式,STJ,(,S,,,T,,,J,)中,,S,表示学生,,T,表示教师,,J,表示课程。,每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称:,(S,,,J)T,,,(S,,,T)J,,,TJ,6.2.6 BCNF,S,J,T,S,T,J,STJ,BCNF,STJ3NF,(S,,,J),和,(S,,,T),都可以作为候选码,S,、,T,、,J,都是主属性,STJBCNF,TJ,,,T,是决定属性集,,T,不是候选码,BCNF,解决方法:将,STJ,分解为二个关系模式:,SJ(,S,,,J,)BCNF,,,TJ(,T,,,J)BCNF,没有,任何属性,对码的部分函数依赖和传递函数依赖,S,J,ST,T,J,TJ,BCNF,例,5C(CNO,CNAME,PCNO),例,6S(SNO,SNAME,SDEPT,SAGE),例,7SJP(S,J,P),学生,课程,名次,3NF,与,BCNF,的关系,如果关系模式,RBCNF,,,必定有,R3NF,如果,R3NF,,且,R,只有一个候选码,,则,R,必属于,BCNF,。,BCNF,的关系模式所具有的性质,所有,非主属性,都完全函数依赖于每个候选码,所有,主属性,都完全函数依赖于每个不包含它的候选码,没有任何属性完全函数依赖于,非码,的任何一组属性,6.2.7,多值依赖,例,9:,学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。,关系模式,Teaching(C,T,B),课程,C,、教师,T,和 参考书,B,课 程,C,教 员,T,参 考 书,B,物理,数学,计算数学,李 勇,王 军,李 勇,张 平,张 平,周 峰,普通物理学,光学原理,物理习题集,数学分析,微分方程,高等代数,数学分析,表,6.3,普通物理学,光学原理,物理习题集,普通物理学,光学原理,物理习题集,数学分析,微分方程,高等代数,数学分析,微分方程,高等代数,李 勇,李 勇,李 勇,王 军,王 军,王 军,李 勇,李 勇,李 勇,张 平,张 平,张 平,物 理,物 理,物 理,物 理,物 理,物 理,数 学,数 学,数 学,数 学,数 学,数 学,参考书,B,教员,T,课程,C,用二维表表示,Teaching,多值依赖(续),TeachingBCNF:,Teach,具有唯一候选码,(C,,,T,,,B),,即全码,Teaching,模式中存在的问题,(1),数据冗余度大:有多少名任课教师,参考书就要存储多少次,多值依赖(续),(2),插入操作复杂:当某一课程增加一名任课教师时,该课程有多少本参照书,就必须插入多少个元组,例如物理课增加一名教师刘关,需要插入两个元组:,(物理,刘关,普通物理学),(物理,刘关,光学原理),多值依赖(续),(3),删除操作复杂:某一门课要去掉一本参考书,该课程有多少名教师,就必须删除多少个元组,(4),修改操作复杂:某一门课要修改一本参考书,该课程有多少名教师,就必须修改多少个元组,产生原因,存在多值依赖,一、多值依赖,定义,6.9,设,R(U),是一个属性集,U,上的一个关系模式,,X,、,Y,和,Z,是,U,的子集,并且,Z,U,X,Y,,,多值依赖,XY,成立当且仅当对,R,的,任一关系,r,,,r,在(,X,,,Z,)上的每个值对应一组,Y,的值,这组值仅仅决定于,X,值而与,Z,值无关,例,Teaching,(,C,T,B,),对于,C,的每一个值,,T,有一组值与之对应,而不论,B,取何值,一、多值依赖,在,R,(,U,)的任一关系,r,中,如果存在元组,t,,,s,使得,t,X,=,s,X,,那么就必然存在元组,w,,,v,r,,(,w,,,v,可以与,s,,,t,相同),使得,w,X,=,v,X,=,t,X,,而,w,Y,=,t,Y,,,w,Z,=,s,Z,,,v,Y,=,s,Y,,,v,Z,=,t,Z,(即交换,s,,,t,元组的,Y,值所得的两个新元组必在,r,中),则,Y,多值依赖于,X,,记为,X,Y,。这里,,X,,,Y,是,U,的子集,,Z,=,U-X,-,Y,。,t x y1 z2,s x y2 z1,w x y1 z1,v x y2 z2,多值依赖(续),平凡多值依赖和非平凡的多值依赖,若,XY,,而,Z,,则称,XY,为,平凡的多值依赖,否则称,XY,为,非平凡的多值依赖,例,10,关系模式,WSC(W,S,C),W,表示仓库,S,表示保管员,C,表示商品,W,S,C,W1,S1,C1,W1,S1,C2,W1,S1,C3,W1,S2,C1,W1,S2,C2,W1,S2,C3,W2,S3,C4,W2,S3,C5,W2,S4,C4,多值依赖的性质,(,1,)多值依赖具有对称性,若,XY,,则,XZ,,其中,Z,U,X,Y,多值依赖的对称性可以用完全二分图直观地表示出来。,(,2,)多值依赖具有传递性,若,XY,,,YZ,,则,XZ-Y,多值依赖的对称性,X,i,Z,i1,Z,i2,Z,im,Y,i1,Y,i2,Y,in,多值依赖的对称性,物,理,普通物理学 光学原理 物理习题集,李勇 王军,多值依赖(续),(,3,)函数依赖是多值依赖的特殊情况。,若,XY,,则,XY,。,(,4,)若,XY,,,XZ,,则,XY,Z,。,(,5,)若,XY,,,XZ,,则,XYZ,。,(,6,)若,XY,,,XZ,,则,XY-Z,,,XZ-Y,。,多值依赖与函数依赖的区别,(1),有效性,多值依赖的有效性与属性集的范围有关,若,XY,在,U,上成立,则在,W,(,X Y,W,U,)上一定成立;反之则不然,即,XY,在,W,(,W,U,)上成立,在,U,上并不一定成立。,多值依赖的定义中不仅涉及属性组,X,和,Y,,而且涉及,U,中其余属性,Z,。,一般地,在,R,(,U,)上若有,XY,在,W,(,W,U,)上成立,则称,XY,为,R,(,U,)的嵌入型多值依赖。,多值依赖与函数依赖的区别,只要在,R,(,U,)的任何一个关系,r,中,元组在,X,和,Y,上的值满足定义,6.l,(函数依赖),,则函数依赖,XY,在任何属性集,W,(,X Y,W,U,)上成立,。,多值依赖(续),(2),若函数依赖,XY,在,R,(,U,)上成立,则对于任何,Y,Y,均有,XY,成立,多值依赖,XY,若在,R(U),上成立,不能断言对于任何,Y,Y,有,XY,成立,6.2.8,第四范式(,4NF,),定义,6.10,关系模式,R1NF,,如果对于,R,的每个非平凡多值依赖,XY,(,Y,X,),,X,都含有候选码,则,R4NF,。,如果,R 4NF,,则,R BCNF,不允许,有非平凡且非函数依赖的,多值依赖,允许,的是,函数依赖,(是非平凡多值依赖),第四范式(续),例:,Teach(C,T,B)4NF,存在非平凡的多值依赖,CT,,且,C,不是候选码,用投影分解法把,Teach,分解为如下两个关系模式:,CT(C,T)4NF,CB(C,B)4NF,CT,,,CB,是平凡多值依赖,例,:WSC(W,S,C),6.2.9,规范化,关系数据库的规范化理论是数据库逻辑设计的工具。,一个关系只要其分量都是不可分的数据项,它就是规范化的关系,但这只是最基本的规范化。,规范化程度可以有多个不同的级别。,规范化(续),规范化程度过低的关系不一定能够很好地描述现实世界,可能会存在插入异常、删除异常、修改复杂、数据冗余等问题,一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,这种过程就叫,关系模式的规范化,规范化(续),关系模式规范化的基本步骤,1NF,消除非主属性对码的部分函数依赖,消除决定属性,2NF,集非码的非平 消除非主属性对码的传递函数依赖,凡函数依赖,3NF,消除主属性对码的部分和传递函数依赖,BCNF,消除非平凡且非函数依赖的多值依赖,4NF,规范化的基本思想,消除不合适的数据依赖,的各关系模式达到某种程度的,“,分离,”,采用,“,一事一地,”,的模式设计原则,让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它,“,分离,”,出去,所谓规范化实质上是概念的单一化,规范化(续),不能说规范化程度越高的关系模式就越好,在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式。,上面的规范化步骤可以在其中任何一步终止。,规范化习题训练,1,、已知学生关系模式,S(Sno,,,Sname,,,SD,,,Sdname,,,Course,,,Grade),其中:,Sno,学号、,Sname,姓名、,SD,系名、,Sdname,系主任名、,Course,课程、,Grade,成绩。,(1),写出关系模式,S,的基本函数依赖和主码。,(2),原关系模式,S,为几范式?为什么?分解成高一级范式,并说明为什么,?,(3),将关系模式分解成,3NF,,并说明为什么,?,(1),写出关系模式,S,的基本函数依赖和主码。,答,:,关系模式,S,的基本函数依赖如下:,SnoSname,,,SDSdname,,,SnoSD,,,(Sno,,,Course)Grade,关系模式,S,的码为:(,Sno,,,Course,)。,(2),原关系模式,S,为几范式?为什么?分解成高一级范式,并说明为什么,?,答,:,原关系模式,S,是属于,1NF,的,码为,(Sno,,,Course),,非主属性中的成绩完全依赖于码,而其它非主属性对码的函数依赖为部分函数依赖,所以不属于,2NF,。,消除非主属性对码的函数依赖为部分函数依赖,将关系模式分解成,2NF,如下:,S1(Sno,,,Sname,,,SD,,,Sdname),、,S2(Sno,,,Course,,,Grade),(3),将关系模式分解成,3NF,,并说明为什么,?,答,:,将上述关系模式分解成,3NF,如下:,关系模式,S1,中存在,SnoSD,,,SDSdname,,即非主属性,Sdname,传递依赖于,Sno,,所以,S1,不是,3NF,。进一步分解如下:,S11(Sno,,,Sname,SD)S12(SD,,,Sdname),分解后的关系模式,S11,、,S12,满足,3NF,。,对关系模式,S2,不存在非主属性对码的传递依赖,故属于,3NF,。所以,原模式,S(Sno,,,Sname,,,SD,,,Sdname,,,Course,,,Grade),按如下分解满足,3NF,。,S11(Sno,,,Sname,,,SD)S12(SD,,,Sdname),S2(Sno,,,Course,,,Grade),2,、设有如图所示的学生关系,S,试问,S,是否属于,3NF?,为什么,?,若不是,它属于几范式,?,并将其规范化为,3NF.,解:,S,不属于,3NF,,它属于,2NF,。,S,的候选关键字为,“,学号,”,。,依赖关系:学号系号,系号系名,系号 学号,所以,:,学号系名,即存在非主属性系名对候选关键字,“,学号,”,的传递依赖,,S,不是,3NF.,在,S,中所有非主属性均依赖于码学号,所以,S,是,2NF,。将,S,分解成:,S1(,学号,学生名,年龄,性别,系号,),、,S2(,系号,系名,),分解后的,Sl,与,S2,如图所示,:,关系模式,S1,如下:,关系模式,S2,如下:,关系模式,S1,、,S2,上无传递依赖,它们是,3NF,。,3.,设有如下关系,R,(1),它为第几范式,?,为什么,?,(2),是否存在删除操作异常,?,若存在,则说明是在什么情况下发生的,?,(3),将它分解为高一级范式,分解后的关系是如何解决分解前可能存在的删除操作异常问题,?,(1),它为第几范式,?,为什么,?,解,:,它是,2NF,。,因为,R,的候选关键字为,“,课程名,”,。,依赖关系,:,课程名教师名,教师名 课程名,教师名教师地址,所以 课程名教师地址。即存在非主属性,“,教师地址,”,对候选关键字课程名的传递函数,因此,R,不是,3NF,。但:因为不存在非主属性对候选关键字的部分函数依赖,所以,R,是,2NF,。,(2),是否存在删除操作异常,?,若存在,则说明是在什么情况下发生的,?,解,:,存在。当删除某门课程时会删除不该删除的教师的有关信息。,(3),将它分解为高一级范式,分解后的关系是如何解决分解前可能存在的删除操作异常问题,?,解,:,分解为高一级范式如图所示。,R1,如下,:R2,如下,:,分解后,若删除课程数据时,仅对关系,R1,操作,教师地址信息在关系,R2,中仍然保留,不会丢失教师方面的信息。,4,设有如图所示的关系,R,试问,R,属于,3NF?,为什么,?,若不是,它属于第几范式,?,并如何规范化为,3NF?,解:,R,不属于,3NF,,它是,2NF,。,R,的候选关键字为职工号和职工名,而:,职工号单位号,单位号 职工号,单位号单位名,.,所以,职工号单位名,即存在非主属性,“,单位名,”,对候选关键字职工号的传递函数依赖,所以,R,不是,3NF,,规范化后的关系子模式为如下图。,5,假设某企业集团数据库中有一关系模式,R,如下:,R,(商店编号,商品编号,商品库存数量,部门编号,负责人),如果规定:,每个商店的每种商品只在该商店的一个部门销售;,每个商店的每个部门只有一个负责人;,每个商店的每种商品只有一个库存数量。,试分析:,根据上述规定,写出关系模式,R,的基本函数依赖;,指出该关系模式,R,的候选码,指出该关系模式,R,的范式级别,为什么?,若,R,不是,3NF,,将,R,分解为,3NF,。,(,1,)函数依赖如下:,(商店编号,商品编号),部门编号,,(商店编号,部门编号),负责人,,(商店编号,商品编号),商品库存数量,(,2,),R,的候选码是(商店编号,商品编号)。,由(商店编号,商品编号),商店编号(自反律)及,(商店编号,商品编号),部门编号(已知)(商店编号,商品编号),(商店编号,部门编号)(合并),又有,(商店编号,部门编号),负责人(商店编号,商品编号),负责人(传递),由,,,,,得(商店编号,商品编号),(商店编号,商品编号,商品库存数量,部门编号,负责人),根据关键字的定义,可得,R,的候选码是(商店编号,商品编号)。,(,3,)因为,R,中存在非主属性,“,负责人,”,对候选码(商店编号,商品编号)的传递函数依赖,所以,R,属于,2NF,,不属于,3NF,。,(,4,)将,R,分解成,R1,(,商店编号,商品编号,,商品库存数量,部门编号),,R2,(商店编号,部门编号,负责人),则,R1,,,R2,均为,3NF,。,P195,习题,2,、,12,2,建立一个关于系、学生、班级、学会等诸信息的关系数据库。,学生:学号、姓名、出生年月、系名、班号、宿舍区。,班级:班号、专业名、系名、人数、入校年份。,系:系名、系号、系办公地点、人数。,学会:学会名、成立年份、办公地点、人数。,语义如下:一个系有若干专业,每个专业每年只招一个班,每个班有若干学生。一个系的学生住在同一宿舍区。每个学生可参加若干学会,每个学会有若干学生。学生参加某学会有一个入会年份。,请给出关系模式,写出每个关系模式的极小函数依赖集,指出是否存在传递函数依赖,对于函数依赖左部是多属性的情况讨论函数依赖是完全函数依赖,还是部分函数依赖。指出各关系模式的候选码、外部码,有没有全码存在,?,解:,(1),关系模式如下:,学生:,S(Sno,,,Sname,,,Sbirth,,,Dept,,,Class,,,Rno),班级:,C(Class,,,Pname,,,Dept,,,Cnum,,,Cyear),系:,D(Dept,,,Dno,,,Office,,,Dnum),学会:,M(Mname,,,Myear,,,Maddr,,,Mnum),(2),每个关系模式的最小函数依赖集如下:,A,、学生,S(Sno,,,Sname,,,Sbirth,,,Dept,,,Class,,,Rno),的最小函数依赖集如下,:Sno,Sname,,,Sno,Sbirth,,,Sno,Class,,,Class,Dept,,,DEPT,Rno,传递依赖如下:,由于,Sno,Dept,,而,Dept,Sno,,,Dept,Rno,(宿舍区),所以,Sno,与,Rno,之间存在着传递函数依赖。,由于,Class,Dept,,,Dept,Class,,,Dept,Rno,所以,Class,与,Rno,之间存在着传递函数依赖。,由于,Sno,Class,,,Class,Sno,,,Class,Dept,所以,Sno,与,Dept,之间存在着传递函数依赖。,B,、班级,C(Class,,,Pname,,,Dept,,,Cnum,,,Cyear),的最小函数依赖集如下,:,Class,Pname,,,Class,Cnum,,,Class,Cyear,,,Pname,Dept.,由于,Class,Pname,,,Pname,Class,,,Pname,Dept,所以,C1ass,与,Dept,之间存在着传递函数依赖。,C,、系,D(Dept,,,Dno,,,Office,,,Dnum),的最小函数依赖集如下:,Dept,Dno,,,Dno,Dept,,,Dno,Office,,,Dno,Dnum,根据上述函数依赖可知,,Dept,与,Office,,,Dept,与,Dnum,之间不存在传递依赖。,D,、学会,M(Mname,,,Myear,,,Maddr,,,Mnum),的最小函数依赖集如下:,Mname,Myear,,,Mname,Maddr,,,Mname,Mnum,该模式不存在传递依赖。,(3),各关系模式的候选码、外部码,全码如下:,A,、学生,S,候选码:,Sno,;外部码:,Dept,、,Class,;无全码,B,、班级,C,候选码:,Class,;外部码:,Dept,;无全码,C,、系,D,候选码:,Dept,或,Dno,;无外部码;无全码,D,、学会,M,候选码:,Mname,;无外部码;无全码,12,下面的结论哪些是正确的,?,哪些是错误的,?,对于错误的请给一个反例说明之。,(1),任何一个二目关系是属于,3NF,。,答:正确。因为关系模式中只有两个属性,所以无传递。,(2),任何一个二目
展开阅读全文