《厦门大学计算机科学系020》由会员分享,可在线阅读,更多相关《厦门大学计算机科学系020(177页珍藏版)》请在金锄头文库上搜索。
1、数据库系统原理厦门大学计算机科学系林子雨2016版厦门大学计算机科学系 2016版林子雨林子雨厦门大学计算机科学系厦门大学计算机科学系E-mail:主页:主页:http:/ Sno, Sdept, Mname, Cname, Grade 单一单一的关系模式的关系模式 : Student U 数据库系统原理厦门大学计算机科学系林子雨2016版学校数据库的语义:学校数据库的语义:一个系有若干学生,一个系有若干学生,一个学生只属于一个系;一个学生只属于一个系;一个系只有一名主任;一个系只有一名主任;一个学生可以选修多门课程,一个学生可以选修多门课程,每门课程有若干学生选修;每门课程有若干学生选修;每
2、个学生所学的每门课程都有一个成绩。每个学生所学的每门课程都有一个成绩。6.1问题的提出数据依赖对关系模式的影响数据依赖对关系模式的影响U Sno, Sdept, Mname, Cname, Grade 属性组属性组U上的一组函数依赖上的一组函数依赖F: F Sno Sdept, Sdept Mname, (Sno, Cname) Grade 数据库系统原理厦门大学计算机科学系林子雨2016版6.1问题的提出数据依赖对关系模式的影响数据依赖对关系模式的影响 SnoCnameSdeptMnameGrade数据库系统原理厦门大学计算机科学系林子雨2016版6.1问题的提出关系模式关系模式Studen
3、t中存在的问题中存在的问题学学号号Sno系主任系主任Mname课程名课程名Cname成绩成绩Grade所所在在系系Sdept95001李勇李勇高数高数80IS95002李勇李勇高数高数73IS95003王敏王敏高数高数91MA95004李勇李勇外语外语67IS数据库系统原理厦门大学计算机科学系林子雨2016版6.1问题的提出关系模式关系模式Student中存在的问题中存在的问题数据冗余太大数据冗余太大浪费大量的存储空间浪费大量的存储空间例:每一个系主任的姓名重复出现例:每一个系主任的姓名重复出现更新异常(更新异常(UpdateAnomalies)数据冗余数据冗余,更新数据时,维护数据完整性代价
4、大。更新数据时,维护数据完整性代价大。例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组例:某系更换系主任后,系统必须修改与该系学生有关的每一个元组插入异常(插入异常(InsertionAnomalies)该插的数据插不进去该插的数据插不进去例,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息例,如果一个系刚成立,尚无学生,我们就无法把这个系及其系主任的信息存入数据库。存入数据库。删除异常(删除异常(DeletionAnomalies)不该删除的数据不得不删不该删除的数据不得不删例,如果某个系的学生全部毕业了,例,如果某个系的学生全部毕业了,我们在删除该系学生信息的同时
5、,我们在删除该系学生信息的同时,把这个系及其系主任的信息也丢掉了。把这个系及其系主任的信息也丢掉了。数据库系统原理厦门大学计算机科学系林子雨2016版6.1问题的提出结论:结论:Student关系模式不是一个好的模式。关系模式不是一个好的模式。“好好”的模式:的模式:不会发生插入异常、删除异常、更新异常,不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少。数据冗余应尽可能少。原因:原因:由存在于模式中的由存在于模式中的某些数据依赖某些数据依赖引起的引起的解决方法:解决方法:通过通过分解分解关系模式来消除其中不合适的数据依赖。关系模式来消除其中不合适的数据依赖。数据依赖对关系模式的影响数据
6、依赖对关系模式的影响数据库系统原理厦门大学计算机科学系林子雨2016版6.1问题的提出问题的提出6.2规范化规范化6.3数据依赖的公理系统数据依赖的公理系统6.4模式的分解模式的分解第6章关系数据理论数据库系统原理厦门大学计算机科学系林子雨2016版6.2规范化规范化理论规范化理论正是用来改造关系模式,通过正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异赖,以解决插入异常、删除异常、更新异常和数据冗余问题。常和数据冗余问题。数据库系统原理厦门大学计算机科学系林子雨2016版6.2.1函数依赖一、函数依赖一、函
7、数依赖二、平凡函数依赖与非平凡函数依赖二、平凡函数依赖与非平凡函数依赖三、完全函数依赖与部分函数依赖三、完全函数依赖与部分函数依赖四、传递函数依赖四、传递函数依赖数据库系统原理厦门大学计算机科学系林子雨2016版6.2.1函数依赖定义定义6.1设设R(U)是一个属性集是一个属性集U上的关系模式,上的关系模式,X和和Y是是U的子集。的子集。若对于若对于R(U)的的任意任意一个可能的关系一个可能的关系r,r中不可能存在两个元组在中不可能存在两个元组在X上的属性值相等,上的属性值相等,而在而在Y上的属性值不等,上的属性值不等,则称则称“X函数确定函数确定Y”或或“Y函数依赖于函数依赖于X”,记作,记
8、作XY。X称为这个函数依赖的称为这个函数依赖的决定属性集决定属性集(Determinant)。Y=f(x)一、函数依赖数据库系统原理厦门大学计算机科学系林子雨2016版6.2.1函数依赖1.函数依赖不是指关系模式函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,的某个或某些关系实例满足的约束条件,而是指而是指R的的所有关系实例所有关系实例均要满足的约束条件。均要满足的约束条件。2.函数依赖是函数依赖是语义范畴语义范畴的概念。只能根据数据的语义来确定函数依赖。的概念。只能根据数据的语义来确定函数依赖。例如例如“姓名姓名年龄年龄”这个函数依赖只有在不允许有同名人的条件下这个函数依赖只有在
9、不允许有同名人的条件下成立成立3.数据库设计者可以对现实世界作强制的规定。例如规定不允许同名数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖人出现,函数依赖“姓名姓名年龄年龄”成立。所插入的元组必须满足规成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在,定的函数依赖,若发现有同名人存在,则拒绝装入该元组。则拒绝装入该元组。说明:说明:数据库系统原理厦门大学计算机科学系林子雨2016版例例:Student(Sno,Sname,Ssex,Sage,Sdept)假设不允许重名,则有假设不允许重名,则有:SnoSsex,SnoSage,SnoSdept,SnoSn
10、ame,SnameSsex,SnameSageSnameSdept但但SsexSage若若XY,并且,并且YX,则记为则记为XY。若若Y不函数依赖于不函数依赖于X,则记为则记为XY。6.2.1函数依赖数据库系统原理厦门大学计算机科学系林子雨2016版6.2.1函数依赖在关系模式在关系模式R(U)中,对于中,对于U的子集的子集X和和Y,如果如果XY,但,但Y X,则称,则称XY是是非平凡的函数依赖非平凡的函数依赖若若XY,但,但Y X,则称则称XY是是平凡的函数依赖平凡的函数依赖例:在关系例:在关系SC(Sno,Cno,Grade)中,中,非平凡函数依赖:非平凡函数依赖:(Sno,Cno)Gra
11、de平凡函数依赖:平凡函数依赖:(Sno,Cno)Sno(Sno,Cno)Cno于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明,义,因此若不特别声明,我们总是讨论非平凡函数依赖。我们总是讨论非平凡函数依赖。二、二、平凡函数依赖与非平凡函数依赖平凡函数依赖与非平凡函数依赖数据库系统原理厦门大学计算机科学系林子雨2016版6.2.1函数依赖定义定义6.2在关系模式在关系模式R(U)中,如果中,如果XY,并且对于,并且对于X的任何一个真子集的任何一个真子集X,都有,都有XY,则称则称Y完全函数依赖于完全函数依赖
12、于X,记作,记作XY。若若XY,但,但Y不完全函数依赖于不完全函数依赖于X,则称,则称Y部分函数依赖部分函数依赖于于X,记作,记作XPY。三、完全函数依赖与部分函数依赖例例:在关系在关系SC(Sno,Cno,Grade)中,中,由于:由于:SnoGrade,CnoGrade,因此:因此:(Sno,Cno)Grade数据库系统原理厦门大学计算机科学系林子雨2016版6.2.2码定义定义6.4设设K为关系模式为关系模式R中的属性或属性组合。中的属性或属性组合。若若KU,则,则K称为称为R的一个的一个侯选码侯选码(CandidateKey)。若关系模式)。若关系模式R有多个候选码,则选定其中的一有多
13、个候选码,则选定其中的一个做为个做为主码主码(Primarykey)。)。主属性与非主属性主属性与非主属性ALLKEY数据库系统原理厦门大学计算机科学系林子雨2016版6.2.2码外部码外部码定义定义6.5 6.5 关系模式关系模式 R R 中属性或属性组中属性或属性组X X 并非并非 R R的码,但的码,但 X X 是另一个关系模式的码,则称是另一个关系模式的码,则称 X X 是是R R 的的外部码外部码(Foreign keyForeign key)也称外码。也称外码。主码又和外部码一起提供了表示关系间联系的手段。主码又和外部码一起提供了表示关系间联系的手段。数据库系统原理厦门大学计算机科
14、学系林子雨2016版6.2.3范式范式是符合某一种级别的关系模式的集合。范式是符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求。满关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。足不同程度要求的为不同范式。范式的种类:范式的种类:第一范式第一范式(1NF)第二范式第二范式(2NF)第三范式第三范式(3NF)BC范式范式(BCNF)第四范式第四范式(4NF)第五范式第五范式(5NF)数据库系统原理厦门大学计算机科学系林子雨2016版6.2.3范式各种范式之间存在联系:各种范式之间存在联系:某一关系模式某一关系模式R为第为第n范式,可简记为范式,可简记为R
15、nNF。数据库系统原理厦门大学计算机科学系林子雨2016版6.2.42NF1NF的定义的定义如果一个关系模式如果一个关系模式R的所有属性都是的所有属性都是不可分的不可分的基本数据项基本数据项,则,则R 1NF。第一范式是对关系模式的最起码的要求。不满第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。足第一范式的数据库模式不能称为关系数据库。但是满足第一范式的关系模式并不一定是一个但是满足第一范式的关系模式并不一定是一个好的关系模式。好的关系模式。数据库系统原理厦门大学计算机科学系林子雨2016版6.2.42NF例例:关系模式关系模式SLC(Sno,Sdept,S
16、loc,Cno,Grade)Sloc为学生住处,假设每个系的学生住在同一个地为学生住处,假设每个系的学生住在同一个地方。方。函数依赖包括:函数依赖包括:(Sno,Cno)GradeSnoSdept(Sno,Cno)Sdept(?)SnoSloc(Sno,Cno)SlocSdeptSlocfpp数据库系统原理厦门大学计算机科学系林子雨2016版6.2.42NF例例:关系模式关系模式SLC(Sno,Sdept,Sloc,Cno,Grade)Sloc为学生住处,假设每个系的学生住在同一个地为学生住处,假设每个系的学生住在同一个地方。方。函数依赖包括:函数依赖包括:(Sno,Cno)GradeSnoS
17、dept(Sno,Cno)SdeptSnoSloc(Sno,Cno)SlocSdeptSlocfpp数据库系统原理厦门大学计算机科学系林子雨2016版6.2.42NFSLC的码为的码为(Sno,Cno)SLC满足第一范式满足第一范式非主属性非主属性Sdept和和Sloc部分函数依赖于码部分函数依赖于码(Sno,Cno)SnoCnoGradeSdeptSlocSLC数据库系统原理厦门大学计算机科学系林子雨2016版课堂练习已知学生关系模式S(Sno,Sname,SD,Sdname,Course,Grade)其中,Sno是学号,Sname是姓名,SD是系名,Sdname是系主任名,Course是课
18、程,Grade是成绩(1)写出关系模式S的基本函数依赖和主码;(做本题)(2)原关系模式是第几范式?如何分解成高一级范式?(3)将关系模式分解成3NF,并说明为什么?数据库系统原理厦门大学计算机科学系林子雨2016版6.2.42NFSLC不是一个好的关系模式(1)插入异常插入异常假设假设Sno95102,SdeptIS,SlocN的学生的学生还未选课,因课程号是主属性,因此该学生的信息还未选课,因课程号是主属性,因此该学生的信息无法插入无法插入SLC。(2)删除异常删除异常假定某个学生本来只选修了假定某个学生本来只选修了3号课程这一门课。现号课程这一门课。现在因身体不适,他连在因身体不适,他连
19、3号课程也不选修了。因课程号课程也不选修了。因课程号是主属性,此操作将导致该学生信息的整个元组号是主属性,此操作将导致该学生信息的整个元组都要删除。都要删除。SLC(Sno,Sdept,Sloc,Cno,Grade)数据库系统原理厦门大学计算机科学系林子雨2016版6.2.42NF(3)数据冗余度大数据冗余度大如果一个学生选修了如果一个学生选修了10门课程,那么他的门课程,那么他的Sdept和和Sloc值就要重复存储了值就要重复存储了10次。次。(4)修改复杂修改复杂例如学生转系,在修改此学生元组的例如学生转系,在修改此学生元组的Sdept值的同时,值的同时,还可能需要修改住处(还可能需要修改
20、住处(Sloc)。如果这个学生选修)。如果这个学生选修了了K门课,则必须无遗漏地修改门课,则必须无遗漏地修改K个元组中全部个元组中全部Sdept、Sloc信息。信息。SLC(Sno,Sdept,Sloc,Cno,Grade)数据库系统原理厦门大学计算机科学系林子雨2016版6.2.42NF原因原因Sdept、Sloc部分函数依赖于码。部分函数依赖于码。解决方法解决方法SLC分解为两个关系模式,以消除这些部分函数依赖分解为两个关系模式,以消除这些部分函数依赖SC(Sno,Cno,Grade)SL(Sno,Sdept,Sloc)数据库系统原理厦门大学计算机科学系林子雨2016版6.2.42NF函数
21、依赖图函数依赖图:SnoCnoGradeSCSLSnoSdeptSloc1NF2NF数据库系统原理厦门大学计算机科学系林子雨2016版6.2.42NF采用投影分解法将一个采用投影分解法将一个1NF的关系分解为多个的关系分解为多个2NF的关系,可以在一定程度上减轻原的关系,可以在一定程度上减轻原1NF关系关系中存在的插入异常、删除异常、数据冗余度大、中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。修改复杂等问题。将一个将一个1NF关系分解为多个关系分解为多个2NF的关系,并不能的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。完全消除关系模式中的各种异常情况和数据冗余。数据库系
22、统原理厦门大学计算机科学系林子雨2016版6.2.42NF2NF2NF的定义的定义定义定义6.6若关系模式若关系模式R 1NF,并且每一个,并且每一个非主非主属性都属性都完完全全函数依赖于函数依赖于R的码,则的码,则R 2NF。例:例:SLC(Sno,Sdept,Sloc,Cno,Grade) 1NFSLC(Sno,Sdept,Sloc,Cno,Grade) 2NFSC(Sno,Cno,Grade)2NFSL(Sno,Sdept,Sloc)2NFSnoCnoGradeSC数据库系统原理厦门大学计算机科学系林子雨2016版课堂练习已知学生关系模式S(Sno,Sname,SD,Sdname,Cou
23、rse,Grade)其中,Sno是学号,Sname是姓名,SD是系名,Sdname是系主任名,Course是课程,Grade是成绩(1)写出关系模式S的基本函数依赖和主码;(2)原关系模式是第几范式?如何分解成高一级范式?(做本题)(3)将关系模式分解成3NF,并说明为什么?数据库系统原理厦门大学计算机科学系林子雨2016版6.2.42NF定义定义6.3在关系模式在关系模式R(U)中,如果中,如果XY,YZ,且,且Y X,YX,则称,则称Z传递函数依赖传递函数依赖于于X。注注:如果如果YX,即即XY,则,则Z直接依赖直接依赖于于X。例例:在关系在关系Std(Sno,Sdept,Mname)中,
24、有:中,有:SnoSdept,SdeptMnameMname传递函数依赖于传递函数依赖于Sno四、传递函数依赖四、传递函数依赖数据库系统原理厦门大学计算机科学系林子雨2016版6.2.53NF例:例:2NF关系模式关系模式SL(Sno,Sdept,Sloc)中中函数依赖:函数依赖:SnoSdeptSdeptSlocSnoSlocSloc传递函数依赖于传递函数依赖于Sno,即,即SL中存在非中存在非主属性对码的传递函数依赖。主属性对码的传递函数依赖。SLSnoSdeptSloc数据库系统原理厦门大学计算机科学系林子雨2016版6.2.53NF解决方法解决方法采用投影分解法,把采用投影分解法,把S
25、L分解为两个关系模式,以消除分解为两个关系模式,以消除传递函数依赖:传递函数依赖:SD(Sno,Sdept)DL(Sdept,Sloc)SD的码为的码为Sno,DL的码为的码为Sdept。数据库系统原理厦门大学计算机科学系林子雨2016版6.2.53NFSD的码为的码为Sno,DL的码为的码为Sdept。SnoSdeptSDSdeptSlocDL2NF3NF数据库系统原理厦门大学计算机科学系林子雨2016版6.2.53NF3NF的定义的定义定义定义6.8关系模式关系模式R中若不存在这样中若不存在这样的码的码X、属性组、属性组Y及及非主属性非主属性Z(Z Y), 使得使得XY,YX,YZ,成立,
26、则称,成立,则称R 3NF。例,例,SL(Sno,Sdept,Sloc) 2NFSL(Sno,Sdept,Sloc) 3NFSD(Sno,Sdept)3NFDL(Sdept,Sloc)3NF数据库系统原理厦门大学计算机科学系林子雨2016版6.2.53NF若若R 3NF,则,则R的每一个的每一个非主属性非主属性既不部分函数依赖于候既不部分函数依赖于候选码也不传递函数依赖于候选码。选码也不传递函数依赖于候选码。如果如果R 3NF,则,则R也是也是2NF。采用投影分解法将一个采用投影分解法将一个2NF的关系分解为多个的关系分解为多个3NF的关系,的关系,可以在一定程度上解决原可以在一定程度上解决原
27、2NF关系中存在的插入异常、删关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。除异常、数据冗余度大、修改复杂等问题。将一个将一个2NF关系分解为多个关系分解为多个3NF的关系后,并不能完全消的关系后,并不能完全消除关系模式中的各种异常情况和数据冗余。除关系模式中的各种异常情况和数据冗余。数据库系统原理厦门大学计算机科学系林子雨2016版课堂练习已知学生关系模式S(Sno,Sname,SD,Sdname,Course,Grade)其中,Sno是学号,Sname是姓名,SD是系名,Sdname是系主任名,Course是课程,Grade是成绩(1)写出关系模式S的基本函数依赖和主码;(
28、2)原关系模式是第几范式?如何分解成高一级范式?(3)将关系模式分解成3NF,并说明为什么?(做本题)数据库系统原理厦门大学计算机科学系林子雨2016版6.2.6BCNF定义定义6.9设关系模式设关系模式R 1NF,如果对于,如果对于R的的每个每个函数依赖函数依赖XY,若,若Y不属于不属于X,则,则X必含有码,那么必含有码,那么R BCNF。若若R BCNF每一个决定属性集(因素)都包含(候选)码每一个决定属性集(因素)都包含(候选)码R中的所有属性(主,非中的所有属性(主,非主属性)都完全函数依赖于码主属性)都完全函数依赖于码没有任何属性完全函数依赖于非码的任何一组属性没有任何属性完全函数依
29、赖于非码的任何一组属性R 3NF(?)若若R 3NF则则R不一定不一定BCNF即在第三范式的基础上,数据库表中不存在任何属性对即在第三范式的基础上,数据库表中不存在任何属性对任一候选码的传递函数依赖和部分函数依赖任一候选码的传递函数依赖和部分函数依赖数据库系统原理厦门大学计算机科学系林子雨2016版6.2.6BCNF证明题:证明题:若关系模式若关系模式RBCNF,则,则R2NF。数据库系统原理厦门大学计算机科学系林子雨2016版6.2.6BCNF例子:关系模式C(Cno,Cname,Pcno),它只有一个码Cno,这里没有任何属性对Cno部分依赖或传递依赖,所以,C 3NF同时,C中Cno是唯
30、一的决定因素,C同时又是码,根据定义,C BCNF数据库系统原理厦门大学计算机科学系林子雨2016版6.2.6BCNF例子:关系模式SJP(S,J,P)中,S是学生,J表示课程,P表示名次,每一个学生选修每门课程的成绩有一定的名次,每门课程中每一名次只有一个学生(即没有并列名次),可以得到以下依赖:(S,J)P;(J,P)S所以(S,J)和(J,P)都可以作为候选码,这个关系模式中没有属性对码传递依赖或部分依赖,所以,SJP 3NF,而且除(S,J)和(J,P)以外没有其他决定因素,所以SJP BCNF数据库系统原理厦门大学计算机科学系林子雨2016版6.2.6BCNF例:在关系模式例:在关系
31、模式STJ(S,T,J)中,)中,S表示学生,表示学生,T表示教师,表示教师,J表示课程。表示课程。每一教师只教一门课。每门课由若干教师教,某一学每一教师只教一门课。每门课由若干教师教,某一学生选定某门课,就确定了一个固定的教师。某个学生生选定某门课,就确定了一个固定的教师。某个学生选修某个教师的课就确定了所选课的名称选修某个教师的课就确定了所选课的名称:TJ,(S,J)T,(S,T)J数据库系统原理厦门大学计算机科学系林子雨2016版6.2.6BCNFSJTSTJSTJ数据库系统原理厦门大学计算机科学系林子雨2016版6.2.6BCNFSTJ 3NF(S,J)和和(S,T)都可以作为候选码都
32、可以作为候选码S、T、J都是主属性都是主属性STJ BCNFnTJ,T是决定属性集,是决定属性集,T不是候选码不是候选码数据库系统原理厦门大学计算机科学系林子雨2016版6.2.6BCNF解决方法:将解决方法:将STJ分解为二个关系模式:分解为二个关系模式:SJ(S,J) BCNF,TJ(T,J) BCNF没有没有任何属性任何属性对码的部分函数依赖和传递函数依赖对码的部分函数依赖和传递函数依赖SJSTTJTJ数据库系统原理厦门大学计算机科学系林子雨2016版课堂作业有一个配件管理表WPE(WNO,PNO,ENO,QNT),其中,WNO表示仓库号,PNO表示配件号,ENO表示职工号,QNT表示数
33、量。有以下约束要求:(1)一个仓库有多名职工(2)一个职工仅在一个仓库工作(3)每个仓库里一种型号的配件由一个职工负责,但一个人可以管理几种配件;(4)同一个型号的配件可以分别放在几个仓库中(5)一个仓库存储某种配件的数量是一定的(6)一个职工管理某种配件的数量是一定的问题:(1)请写出表中的函数依赖关系(2)判断该表是否是3NF?(3)判断该表是否是BCNF?数据库系统原理厦门大学计算机科学系林子雨2016版课堂作业答案函数依赖关系:ENOWNO(WNO,PNO)QNT(WNO,PNO)ENO(ENO,PNO)QNT数据库系统原理厦门大学计算机科学系林子雨2016版课堂作业答案候选码包括:(
34、WNO,PNO)和和(ENO,PNO)ENO,PNO,WNO都是主属性,都是主属性,QNT是非主属是非主属性性所有非主属性都是直接依赖于候选码,因此所有非主属性都是直接依赖于候选码,因此是是3NF关于主属性:关于主属性:(WNO,PNO)ENO;ENOWNO,得到传,得到传递依赖递依赖(WNO,PNO)WNO,所以不是,所以不是BCNF数据库系统原理厦门大学计算机科学系林子雨2016版课堂作业答案可以继续分拆成两个表管理表EP(ENO,PNO,QNT)工作表EW(ENO,WNO)两个表属于BCNF数据库系统原理厦门大学计算机科学系林子雨2016版多值依赖与第四范式(4NF)例例:学校中某一门课
35、程由多个教师讲授,他们学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。每个教师可以讲多使用相同的一套参考书。每个教师可以讲多门课程,每种参考书可供多门课使用。门课程,每种参考书可供多门课使用。关系模式关系模式Teaching(C,T,B)课程课程C、教师、教师T和和参考书参考书B数据库系统原理厦门大学计算机科学系林子雨2016版表表6.1数据库系统原理厦门大学计算机科学系林子雨2016版普通物理学普通物理学光学原理光学原理物理习题集物理习题集普通物理学普通物理学光学原理光学原理物理习题集物理习题集数学分析数学分析微分方程微分方程高等代数高等代数数学分析数学分析微分方程微分方程高等代数
36、高等代数李李 勇勇李李 勇勇李李 勇勇王王 军军王王 军军王王 军军李李 勇勇李李 勇勇李李 勇勇张张 平平张张 平平张张 平平 物物 理理物物 理理物物 理理物物 理理物物 理理物物 理理数数 学学数数 学学数数 学学数数 学学数数 学学数数 学学 参考书参考书B教员教员T课程课程C用二维表表示Teaching数据库系统原理厦门大学计算机科学系林子雨2016版多值依赖与第四范式(续)Teaching BCNF:Teach具有唯一候选码具有唯一候选码(C,T,B),即全码即全码Teaching模式中存在的问题模式中存在的问题(1)数据冗余度大:有多少名任课教师,参考书就要存储多少次数据冗余度大
37、:有多少名任课教师,参考书就要存储多少次(2)插入操作复杂:当某一课程增加一名任课教师时,该课程有多少本参插入操作复杂:当某一课程增加一名任课教师时,该课程有多少本参照书,就必须插入多少个元组照书,就必须插入多少个元组例如物理课增加一名教师刘关,需要插入两个元组:例如物理课增加一名教师刘关,需要插入两个元组:(物理,刘关,普通物理学)(物理,刘关,普通物理学)(物理,刘关,光学原理)(物理,刘关,光学原理)数据库系统原理厦门大学计算机科学系林子雨2016版多值依赖与第四范式(续)(3)删除操作复杂:某一门课要去掉一本参考书,该课程有多少名教师,删除操作复杂:某一门课要去掉一本参考书,该课程有多
38、少名教师,就必须删除多少个元组就必须删除多少个元组(4)修改操作复杂:某一门课要修改一本参考书,该课程有多少名教师,修改操作复杂:某一门课要修改一本参考书,该课程有多少名教师,就必须修改多少个元组就必须修改多少个元组产生原因产生原因存在多值依赖存在多值依赖数据库系统原理厦门大学计算机科学系林子雨2016版6.2.7多值依赖定义定义6.10设设R(U)是一个属性集是一个属性集U上的一个关系模式,上的一个关系模式,X、Y和和Z是是U的子集,并且的子集,并且ZUXY,多值依赖多值依赖XY成立当且仅成立当且仅当对当对R的的任一关系任一关系r,r在(在(X,Z)上的每个值对应一组)上的每个值对应一组Y的
39、值,这组值仅仅决定于的值,这组值仅仅决定于X值而与值而与Z值无关值无关例例Teaching(C,T,B)对于对于C的每一个值,的每一个值,B有一组值与之对应,而不论有一组值与之对应,而不论T取何值取何值数据库系统原理厦门大学计算机科学系林子雨2016版6.2.7多值依赖在在R(U)的任一关系)的任一关系r中,如果存在元组中,如果存在元组t,s 使使得得tX=sX,那么就必然存在元组,那么就必然存在元组w,v r,(w,v可以与可以与s,t相同),使得相同),使得wX=vX=tX,而,而wY=tY,wZ=sZ,vY=sY,vZ=tZ(即交换(即交换s,t元组的元组的Y值所得的两个新值所得的两个新
40、元组必在元组必在r中),则中),则Y多值依赖于多值依赖于X,记为,记为XY。这里,这里,X,Y是是U的子集,的子集,Z=U-X-Y。数据库系统原理厦门大学计算机科学系林子雨2016版6.2.7多值依赖 t x y1 z2 s x y2 z1 w x y1 z1 v x y2 z2数据库系统原理厦门大学计算机科学系林子雨2016版6.2.7多值依赖平凡多值依赖和非平凡的多值依赖平凡多值依赖和非平凡的多值依赖若若XY,而,而Z,则称,则称XY为为平凡的多值依赖平凡的多值依赖否则称否则称XY为为非平凡的多值依赖非平凡的多值依赖数据库系统原理厦门大学计算机科学系林子雨2016版6.2.84NF定义定义
41、6.10关系模式关系模式R 1NF,如果对于,如果对于R的每个非平凡多值依赖的每个非平凡多值依赖XY(Y X),),X都都含有候选码,则含有候选码,则R 4NF。如果如果R 4NF,则则R BCNF不允许不允许有非平凡且非函数依赖的有非平凡且非函数依赖的多值依赖多值依赖允许允许的是的是函数依赖函数依赖(是非平凡多值依赖)(是非平凡多值依赖)数据库系统原理厦门大学计算机科学系林子雨2016版6.2.84NF例:例:Teach(C,T,B) 4NF存在非平凡的多值依赖存在非平凡的多值依赖CT,且,且C不是候选码不是候选码n用投影分解法把用投影分解法把Teach分解为如下两个关系模式:分解为如下两个
42、关系模式: CT(C, T) 4NF CB(C, B) 4NF CT, CB是平凡多值依赖是平凡多值依赖数据库系统原理厦门大学计算机科学系林子雨2016版6.2.9规范化关系数据库的规范化理论是数据库逻辑设关系数据库的规范化理论是数据库逻辑设计的工具。计的工具。一个关系只要其分量都是不可分的数据项,一个关系只要其分量都是不可分的数据项,它就是规范化的关系,但这只是最基本的它就是规范化的关系,但这只是最基本的规范化。规范化。规范化程度可以有多个不同的级别规范化程度可以有多个不同的级别数据库系统原理厦门大学计算机科学系林子雨2016版6.2.9规范化规范化程度过低的关系不一定能够很好地描述规范化程
43、度过低的关系不一定能够很好地描述现实世界,可能会存在插入异常、删除异常、现实世界,可能会存在插入异常、删除异常、修改复杂、数据冗余等问题修改复杂、数据冗余等问题一个低一级范式的关系模式,通过模式分解可一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式集合,以转换为若干个高一级范式的关系模式集合,这种过程就叫这种过程就叫关系模式的规范化关系模式的规范化数据库系统原理厦门大学计算机科学系林子雨2016版6.2.9规范化关系模式规范化的基本步骤关系模式规范化的基本步骤1NF消除非主属性对码的部分函数依赖消除非主属性对码的部分函数依赖消除决定属性消除决定属性2NF集非码的非平集
44、非码的非平消除非主属性对码的传递函数依赖消除非主属性对码的传递函数依赖凡函数依赖凡函数依赖3NF消除主属性对码的部分和传递函数依消除主属性对码的部分和传递函数依赖赖BCNF消除非平凡且非函数依赖的多值依赖消除非平凡且非函数依赖的多值依赖4NF数据库系统原理厦门大学计算机科学系林子雨2016版6.2.9规范化消除不合适的数据依赖消除不合适的数据依赖将各关系模式达到某种程度的将各关系模式达到某种程度的“分离分离”采用采用“一事一地一事一地”的模式设计原则的模式设计原则让一个关系描述一个概念、一个实体或者实体间的让一个关系描述一个概念、一个实体或者实体间的一种联系。若多于一个概念就把它一种联系。若多
45、于一个概念就把它“分离分离”出去出去所谓规范化实质上是概念的单一化所谓规范化实质上是概念的单一化不能一味追求规范化程度高不能一味追求规范化程度高规范化的基本思想规范化的基本思想数据库系统原理厦门大学计算机科学系林子雨2016版6.2.9规范化在设计数据库模式结构时,必须对现实世界的实际情在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个合适的、况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式能够反映现实世界的模式上面的规范化步骤可以在其中任何一步终止上面的规范化步骤可以在其中任何一步终止数据库系统原理厦门大学计算机科学系林子雨2016版第六
46、章关系数据理论6.1数据依赖数据依赖6.2规范化规范化6.3数据依赖的公理系统数据依赖的公理系统6.4模式的分解模式的分解数据库系统原理厦门大学计算机科学系林子雨2016版6.3数据依赖的公理系统逻辑蕴含逻辑蕴含定义定义6.11对于满足一组对于满足一组函数依赖函数依赖F 的关系模式的关系模式R,函数依赖,函数依赖XY都成立都成立,即即r中任意两元组中任意两元组t,s,若,若tX=sX,则,则tY=sY,则称,则称F逻辑逻辑蕴含蕴含X Y数据库系统原理厦门大学计算机科学系林子雨2016版Armstrong公理系统一套推理规则,是模式分解算法的理论基础一套推理规则,是模式分解算法的理论基础用途用途
47、求给定关系模式的码求给定关系模式的码从一组函数依赖求得蕴含的函数依赖从一组函数依赖求得蕴含的函数依赖数据库系统原理厦门大学计算机科学系林子雨2016版1.Armstrong公理系统关系模式关系模式R 来说有以下的推理规则:来说有以下的推理规则:A1.自反律自反律(Reflexivity):):若若Y X U,则,则X Y为为F所蕴含。所蕴含。A2.增广律(增广律(Augmentation):):若若XY为为F所蕴含,且所蕴含,且Z U,则,则XZYZ为为F所蕴所蕴含。含。A3.传递律传递律(Transitivity):):若若XY及及YZ为为F所蕴含,则所蕴含,则XZ为为F所蕴含。所蕴含。数据
48、库系统原理厦门大学计算机科学系林子雨2016版定理6.lArmstrong推理规则是正确的(1)自反律)自反律:若若Y X U,则,则X Y为为F所蕴含所蕴含证证:设设Y X U对对R 的任一关系的任一关系r中的任意两个元组中的任意两个元组t,s:若若tX=sX,由于,由于Y X,有,有tY=sY,所以所以XY成立成立.自反律得证自反律得证定理定理6.lArmstrong推理规则是正确的推理规则是正确的数据库系统原理厦门大学计算机科学系林子雨2016版定理6.l(2)增广律增广律:若若XY为为F所蕴含,且所蕴含,且Z U,则,则XZYZ 为为F所蕴含。所蕴含。证:证:设设XY为为F所蕴含,且所
49、蕴含,且Z U。设设R的任一关系的任一关系r中任意的两个元组中任意的两个元组t,s;若若tXZ=sXZ,则有,则有tX=sX和和tZ=sZ;由由XY,于是有,于是有tY=sY,所以,所以tYZ=sYZ,所以,所以XZYZ为为F所蕴含所蕴含.增广律得证。增广律得证。数据库系统原理厦门大学计算机科学系林子雨2016版定理6.l(3)传递律:若传递律:若XY及及YZ为为F所蕴含,则所蕴含,则XZ为为F所蕴含。所蕴含。证:证:设设XY及及YZ为为F所蕴含。所蕴含。对对R的任一关系的任一关系r中的任意两个元组中的任意两个元组t,s。若若tX=sX,由于,由于XY,有,有tY=sY;再由再由YZ,当,当t
50、Y=sY时,一定有时,一定有tZ=sZ所以所以XZ为为F所蕴含所蕴含.传递律得证。传递律得证。数据库系统原理厦门大学计算机科学系林子雨2016版2.导出规则1.根据根据A1,A2,A3这三条推理规则可以得到下面这三条推理规则可以得到下面三条推理规则:三条推理规则:合并规则合并规则:由:由XY,XZ,有,有XYZ。(A2,A3)伪传递规则伪传递规则:由:由XY,WYZ,有,有XWZ。(A2,A3)分解规则分解规则:由:由XY及及Z Y,有,有XZ。(A1,A3)数据库系统原理厦门大学计算机科学系林子雨2016版导出规则2.根据合并规则和分解规则,可得引理根据合并规则和分解规则,可得引理6.1引理
51、引理6.lXA1 A2Ak成立的充分必要条件成立的充分必要条件是是XAi成立(成立(i=l,2,k)。)。数据库系统原理厦门大学计算机科学系林子雨2016版3.函数依赖闭包定义定义6.12在关系模式在关系模式R中为中为F所所逻辑蕴含的函数依赖的全体叫作逻辑蕴含的函数依赖的全体叫作F的闭的闭包包,记为,记为F+。数据库系统原理厦门大学计算机科学系林子雨2016版3.函数依赖闭包人们把自反律、传递律和增广律称为Armstrong公理系统数据库系统原理厦门大学计算机科学系林子雨2016版Armstrong公理系统有效性有效性:由:由F出发根据出发根据Armstrong公理推导出来的公理推导出来的每一
52、个函数依赖一定在每一个函数依赖一定在F+中中/*Armstrong正确正确完备性完备性:F+中的每一个函数依赖,必定可以由中的每一个函数依赖,必定可以由F出出发根据发根据Armstrong公理推导出来公理推导出来/*Armstrong公理够用,完全公理够用,完全数据库系统原理厦门大学计算机科学系林子雨2016版Armstrong公理系统要证明完备性,就首先要解决如何判定一个函数依赖是否属于由F根据Armstrong公理系统推导出来的函数依赖的集合如果能够求出这个集合,问题就解决了但是,这个是一个NP完全问题数据库系统原理厦门大学计算机科学系林子雨2016版F的闭包,F+计算是计算是NP完全问题
53、,完全问题,XA1A2.AnF+=X,Y,Z,XY,XZ,YZ,XYZ,XX,YY,ZZ,XYX,XZX,YZY,XYZX,XY,YZ,XYY,XZY,YZZ,XYZY,XZ,YYZ,XYZ,XZZ,YZYZ,XYZZ,XXY,XYXY,XZXY,XYZXY,XXZ,XYYZ,XZXZ,XYZYZXYZ,XYXZ,XZXY,XYZXZ,XZYZ,XYXYZ,XZXYZ,XYZXYZ F=X Y,Y Z数据库系统原理厦门大学计算机科学系林子雨2016版3.函数依赖闭包定义定义6.13设设F为属性集为属性集U上的一组函数依上的一组函数依赖,赖,X U,XF+=AXA能由能由F 根据根据Armstr
54、ong公理导出公理导出,XF+称为属性集称为属性集X关于函数依赖集关于函数依赖集F 的闭包的闭包为了证明Armstrong公理系统完备性,需要引入以下概念:数据库系统原理厦门大学计算机科学系林子雨2016版关于闭包的引理引理引理6.2设设F为属性集为属性集U上的一组函数依赖,上的一组函数依赖,X,Y U,XY能由能由F 根据根据Armstrong公公理导出的充分必要条件是理导出的充分必要条件是Y XF+用途用途将判定将判定XY是否能由是否能由F根据根据Armstrong公理导公理导出的问题,就转化为求出出的问题,就转化为求出XF+,判定,判定Y是否为是否为XF+的子集的问题(不再是的子集的问题
55、(不再是NP完全问题)完全问题)根据引理根据引理6.1可以进一步得到:可以进一步得到:数据库系统原理厦门大学计算机科学系林子雨2016版U=A,B,C,D;F=AB,BCD;A+=C+=(AC)+=实例实例AB.C.ABCD数据库系统原理厦门大学计算机科学系林子雨2016版求闭包的算法算法算法6.l求属性集求属性集X(X U)关于)关于U上的上的函数依赖集函数依赖集F 的闭包的闭包XF+输入:输入:X,F输出:输出:XF+步骤:步骤:数据库系统原理厦门大学计算机科学系林子雨2016版算法6.l(1)令)令X(0)=X,i=0(2)求)求B,这里,这里B=A|( V)( W)(VW F V X(
56、i)A W);(3)X(i+1)=B X(i)(4)判断)判断X(i+1)=X(i)吗吗?(5)若相等或)若相等或X(i)=U , 则则X(i)就是就是XF+,算法终止。算法终止。(6)若否,则)若否,则i=i+l,返回第(,返回第(2)步。)步。数据库系统原理厦门大学计算机科学系林子雨2016版算法6.l对于算法对于算法6.l,令令ai=|X(i)|,ai 形成一个步形成一个步长大于长大于1的严格递增的序列,序列的上界是的严格递增的序列,序列的上界是|U|,因此该算法最多,因此该算法最多|U|-|X|次循环就会次循环就会终止。终止。数据库系统原理厦门大学计算机科学系林子雨2016版函数依赖闭
57、包例例1已知关系模式已知关系模式R,其中,其中U=A,B,C,D,E;F=ABC,BD,CE,ECB,ACB。求(求(AB)F+。解解设设X(0)=AB;(1)计算计算X(1):逐一的扫描逐一的扫描F集合中各个函数依赖,集合中各个函数依赖,找左找左部为部为A,B或或AB的函数依赖。的函数依赖。得到两个:得到两个:ABC,BD。于是于是X(1)=AB CD=ABCD。数据库系统原理厦门大学计算机科学系林子雨2016版函数依赖闭包(2)因为因为X(0)X(1),所以再找出左部为,所以再找出左部为ABCD子集子集的那些函数依赖,又得到的那些函数依赖,又得到ABC,BD,CE,ACB,于是于是X(2)
58、=X(1)BCDE=ABCDE。(3)因为因为X(2)=U,算法终止,算法终止所以(所以(AB)F+=ABCDE。数据库系统原理厦门大学计算机科学系林子雨2016版课堂练习例:设有关系模式R(U,F),其中U=A,B,C,D,E,IF=AD,ABE,BIE,CDI,EC请计算(AE)F+数据库系统原理厦门大学计算机科学系林子雨2016版4.Armstrong公理系统的有效性与完备性建立公理系统体系建立公理系统体系目的目的:从已知的:从已知的f推导出未知的推导出未知的f明确:明确:1.公理系统推导出来的公理系统推导出来的f正确?正确?2.F+中的每一个中的每一个f都能推导出来?都能推导出来?f不
59、能由不能由F导出导出,fF+ F+fF数据库系统原理厦门大学计算机科学系林子雨2016版4.Armstrong公理系统的有效性与完备性有效性有效性:由:由F出发根据出发根据Armstrong公理推导出来的公理推导出来的每一个函数依赖一定在每一个函数依赖一定在F+中中/*Armstrong正确正确完备性完备性:F+中的每一个函数依赖,必定可以由中的每一个函数依赖,必定可以由F出出发根据发根据Armstrong公理推导出来公理推导出来/*Armstrong公理够用,完全公理够用,完全完备性完备性:所有不能用:所有不能用Armstrong公理推导出来公理推导出来f,都不为真都不为真若若f不能用不能用
60、Armstrong公理推导出来,公理推导出来,f F+数据库系统原理厦门大学计算机科学系林子雨2016版有效性与完备性的证明证明:证明:1.有效性有效性根据定理根据定理6.1可以得证可以得证定理定理6.lArmstrong推理规则是正确的推理规则是正确的Armstrong公理系统推理规则公理系统推理规则关系模式关系模式R 来说有以下的推理规则:来说有以下的推理规则:A1.自反律自反律(Reflexivity):):若若Y X U,则,则X Y为为F所蕴含。所蕴含。A2.增广律(增广律(Augmentation):):若若XY为为F所蕴含,且所蕴含,且Z U,则,则XZYZ为为F所蕴含。所蕴含。
61、A3.传递律传递律(Transitivity):):若若XY及及YZ为为F所蕴含,则所蕴含,则XZ为为F所蕴含。所蕴含。数据库系统原理厦门大学计算机科学系林子雨2016版有效性与完备性的证明证明:证明:2.完备性完备性 要证明的题目:要证明的题目:F+中的每一个函数依赖,必定中的每一个函数依赖,必定可以由可以由F出发根据出发根据Armstrong公理推导出来公理推导出来只需证明只需证明逆否命题逆否命题:若函数依赖若函数依赖XY不能由不能由F从从Armstrong公理导出,那么它必然不为公理导出,那么它必然不为F所所蕴含蕴含分三步证明:分三步证明:数据库系统原理厦门大学计算机科学系林子雨2016
62、版有效性与完备性的证明(1)引理引理:若若VW成立,且成立,且V XF+,则,则W XF+证证因为因为V XF+,所以有,所以有XV成立;(成立;(?)因为因为X V,VW,于是,于是XW成立成立所以所以W XF+(2)构造一张二维表构造一张二维表r,它由下列两个元组构成,它由下列两个元组构成可以证明可以证明r必是必是R(U,F)的一个关系)的一个关系,即,即F+中的中的全部函数依赖在全部函数依赖在r上成立。上成立。引理引理6.2设设F为属性集为属性集U上的一组函数依赖,上的一组函数依赖,X,Y U,XY能由能由F 根据根据Armstrong公理导出的充分必要条件是公理导出的充分必要条件是Y
63、XF+数据库系统原理厦门大学计算机科学系林子雨2016版Armstrong公理系统的有效性与完备性(续) XF+U-XF+11.100.011.111.1若若r不不是是R的的关关系系,则则必必由由于于F中中有有函函数数依依赖赖VW在在r上上不不成成立立所所致致。由由r的的构构成成可可知知,V必必定定是是XF+的的子子集集,而而W不不是是XF+的的子子集集,可可是是由由第第(1)步步,W XF+,矛矛盾盾。所所以以r必必是是R的的一个关系。一个关系。数据库系统原理厦门大学计算机科学系林子雨2016版Armstrong公理系统的有效性与完备性(续)(3)若若XY 不能由不能由F从从Armstron
64、g公理导出,则公理导出,则Y 不是不是XF+的子集。(引理的子集。(引理6.2)因此必有因此必有Y 的子集的子集Y 满足满足Y U-XF+,则则XY在在r 中不成立,即中不成立,即XY必不为必不为R蕴含蕴含/*因为因为 F+中的全部函数依赖在中的全部函数依赖在r上成立。上成立。引理引理6.2设设F为属性集为属性集U上的一组函数依赖,上的一组函数依赖,X,Y U,XY能由能由F 根据根据Armstrong公理导出的充分必要条件是公理导出的充分必要条件是Y XF+数据库系统原理厦门大学计算机科学系林子雨2016版5.函数依赖集等价定义定义6.14如果如果G+=F+,就说函数依赖集,就说函数依赖集F
65、覆覆盖盖G(F是是G的覆盖,或的覆盖,或G是是F的覆盖),或的覆盖),或F与与G等价等价。数据库系统原理厦门大学计算机科学系林子雨2016版函数依赖集等价的充要条件引引 理理 6.3F+=G+的的 充充 分分 必必 要要 条条 件件 是是 F G+,和,和G F+证证:必要性显然,只证充分性。显然,只证充分性。(1)若)若F G+,则,则XF+ XG+。(2)任取)任取XY F+则有则有Y XF+ XG+。(?)所以所以XY (G+)+=G+。即。即F+ G+。(3)同理可证)同理可证G+ F+,所以,所以F+=G+。引理引理6.2设设F为属性集为属性集U上的一组函数依赖,上的一组函数依赖,X
66、,Y U,XY能由能由F 根据根据Armstrong公理导出的充分必要条件是公理导出的充分必要条件是Y XF+数据库系统原理厦门大学计算机科学系林子雨2016版函数依赖集等价要要判判定定F G+,只只须须逐逐一一对对F中中的的函函数数依依赖赖XY,考考察察Y 是是否否属属于于XG+就就行行了了。因因此此引引理理6.3给给出出了了判判断断两两个个函函数数依依赖赖集集等等价价的的可行算法。可行算法。数据库系统原理厦门大学计算机科学系林子雨2016版6.最小依赖集定定义义6.15如如果果函函数数依依赖赖集集F满满足足下下列列条条件件,则则称称F为为一一个个极极小小函函数数依依赖赖集集。亦亦称称为为最
67、最小小依依赖赖集集或或最最小小覆盖覆盖。(1)F中任一函数依赖的右部仅含有一个属性。中任一函数依赖的右部仅含有一个属性。(2)F中中不不存存在在这这样样的的函函数数依依赖赖XA,使使得得F与与F-XA等价。等价。(3) F中中不不存存在在这这样样的的函函数数依依赖赖XA, X有有真真 子集子集Z使得使得F-XA ZA与与F等价。等价。数据库系统原理厦门大学计算机科学系林子雨2016版最小依赖集例例2对于对于6.1节中的关系模式节中的关系模式S,其中:,其中:U=SNO,SDEPT,MN,CNAME,G,F=SNOSDEPT,SDEPTMN,(SNO,CNAME)G设设F=SNOSDEPT,SN
68、OMN,SDEPTMN,(SNO,CNAME)G,(SNO,SDEPT)SDEPTF是最小覆盖,而是最小覆盖,而F 不是。不是。因为:因为:F -SNOMN与与F 等价等价 F -(SNO,SDEPT)SDEPT也与也与F 等价等价 F -(SNO,SDEPT)SDEPT SNOSDEPT也与也与F 等价等价数据库系统原理厦门大学计算机科学系林子雨2016版7.极小化过程定定理理6.3 每每一一个个函函数数依依赖赖集集F均均等等价价于于一一个个极极小小 函数依赖集函数依赖集Fm。此。此Fm称为称为F的最小依赖集的最小依赖集证证:构构造造性性证证明明,依依据据定定义义分分三三步步对对F进进行行“
69、极极小小化处理化处理”,找出,找出F的一个最小依赖集。的一个最小依赖集。(1)逐一检查逐一检查F中各函数依赖中各函数依赖FDi:XY,若若Y=A1A2Ak,k 2,则用则用XAj|j=1,2,k来取代来取代XY。引理引理6.1(?)保证了)保证了F变换前后的等价性。变换前后的等价性。引理引理6.lXA1 A2Ak成立的充分必要条件是成立的充分必要条件是XAi成立(成立(i=l,2,k)。)。数据库系统原理厦门大学计算机科学系林子雨2016版极小化过程(2)逐一检查逐一检查F中各函数依赖中各函数依赖FDi:XA,令令G=F-XA,若若A XG+,则从则从F中去掉此函数依赖。中去掉此函数依赖。由于
70、由于F与与G =F-XA等价的充要条件是等价的充要条件是A XG+因此因此F变换前后是等价的。变换前后是等价的。引理引理6.2设设F为属性集为属性集U上的一组函数依赖,上的一组函数依赖,X,Y U,XY能由能由F 根据根据Armstrong公理导出的充分必要条件是公理导出的充分必要条件是Y XF+数据库系统原理厦门大学计算机科学系林子雨2016版极小化过程(3)逐一取出逐一取出F中各函数依赖中各函数依赖FDi:XA,设设X=B1B2Bm,逐一考查逐一考查Bi(i=l,2,m),),若若A (X-Bi)F+,则以则以X-Bi取代取代X。由由 于于 F与与 F-XA ZA等等 价价 的的 充充 要
71、要 条条 件件 是是A ZF+,其中,其中Z=X-Bi因此因此F变换前后是等价的。变换前后是等价的。定义定义6.15(3)F中不存在这样的函数依赖中不存在这样的函数依赖XA,X有真子集有真子集Z使得使得F-XA ZA与与F等价。等价。数据库系统原理厦门大学计算机科学系林子雨2016版极小化过程由定义,最后剩下的由定义,最后剩下的F 就一定是极小依赖集。就一定是极小依赖集。因为对因为对F的每一次的每一次“改造改造”都保证了改造前后都保证了改造前后的两个函数依赖集等价,因此剩下的的两个函数依赖集等价,因此剩下的F与原来与原来的的F等价。等价。证毕证毕定理定理6.3的证明过程的证明过程也是求也是求F
72、极小依赖集极小依赖集的过程的过程数据库系统原理厦门大学计算机科学系林子雨2016版极小化过程例例3F=AB,BA,BC,AC,CA Fm1、Fm2都是都是F的最小依赖集:的最小依赖集: Fm1= AB,BC,CA Fm2= AB,BA,AC,CA nF的最小依赖集的最小依赖集Fm不一定是唯一的它与对各函数依赖不一定是唯一的它与对各函数依赖FDi 及及XA中中X各属各属性的处置顺序有关性的处置顺序有关nFm2是先验证是先验证BC得到的结果数据库系统原理厦门大学计算机科学系林子雨2016版例子:计算计算F的最小函数依赖集的最小函数依赖集例例1:关系模式R,其中U=C,T,H,R,S,G,F=CSG
73、,CT,THR,HRC,HSR请计算计算F的最小函数依赖集的最小函数依赖集数据库系统原理厦门大学计算机科学系林子雨2016版例子:计算计算F的最小函数依赖集的最小函数依赖集利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖。由于F的所有函数依赖的右边都是单个属性,故不用分解。数据库系统原理厦门大学计算机科学系林子雨2016版例子:计算计算F的最小函数依赖集的最小函数依赖集去掉F中多余的函数依赖A设CSG为冗余的函数依赖,则去掉CSG,得:F1=CT,THR,HRC,HSR计算(CS)F1+:设X(0)=CS计算X(1):扫描F1中各个函数依赖,找到左部为CS或CS子集的函数依赖,找到
74、一个CT函数依赖。故有X(1)=X(0)T=CST。计算X(2):扫描F1中的各个函数依赖,找到左部为CST或CST子集的函数依赖,没有找到任何函数依赖。故有X(2)=X(1)。算法终止。(CS)F1+=CST不包含G,故CSG不是冗余的函数依赖,不能从F1中去掉。数据库系统原理厦门大学计算机科学系林子雨2016版例子:计算计算F的最小函数依赖集的最小函数依赖集B设CT为冗余的函数依赖,则去掉CT,得:F2=CSG,THR,HRC,HSR计算(C)F2+:设X(0)=C计算X(1):扫描F2中的各个函数依赖,没有找到左部为C的函数依赖。故有X(1)=X(0)。算法终止。故CT不是冗余的函数依赖
75、,不能从F2中去掉。数据库系统原理厦门大学计算机科学系林子雨2016版例子:计算计算F的最小函数依赖集的最小函数依赖集C设THR为冗余的函数依赖,则去掉THR,得:F3=CSG,CT,HRC,HSR计算(TH)F3+:设X(0)=TH计算X(1):扫描F3中的各个函数依赖,没有找到左部为TH或TH子集的函数依赖。故有X(1)=X(0)。算法终止。故THR不是冗余的函数依赖,不能从F3中去掉。数据库系统原理厦门大学计算机科学系林子雨2016版例子:计算计算F的最小函数依赖集的最小函数依赖集D设HRC为冗余的函数依赖,则去掉HRC,得:F4=CSG,CT,THR,HSR计算(HR)F4+:设X(0
76、)=HR计算X(1):扫描F4中的各个函数依赖,没有找到左部为HR或HR子集的函数依赖。故有X(1)=X(0)。算法终止。故HRC不是冗余的函数依赖,不能从F4中去掉。数据库系统原理厦门大学计算机科学系林子雨2016版例子:计算计算F的最小函数依赖集的最小函数依赖集E设HSR为冗余的函数依赖,则去掉HSR,得:F5=CSG,CT,THR,HRC计算(HS)F5+:设X(0)=HS计算X(1):扫描F5中的各个函数依赖,没有找到左部为HS或HS子集的函数依赖。故有X(1)=X(0)。算法终止。故HSR不是冗余的函数依赖,不能从F5中去掉。即:F5=CSG,CT,THR,HRC,HSR数据库系统原
77、理厦门大学计算机科学系林子雨2016版例子:计算计算F的最小函数依赖集的最小函数依赖集去掉F5中各函数依赖左边多余的属性(只检查左部不是单个属性的函数依赖),没有发现左边有多余属性的函数依赖。故最小函数依赖集为:故最小函数依赖集为:F=CSG,CT,THR,HRC,HSR数据库系统原理厦门大学计算机科学系林子雨2016版极小化过程极极小小化化过过程程(定定理理6.3的的证证明明)也也是是检检验验F是否为极小依赖集的一个算法是否为极小依赖集的一个算法若改造后的若改造后的F与原来的与原来的F相同,说明相同,说明F本本身就是一个最小依赖集身就是一个最小依赖集数据库系统原理厦门大学计算机科学系林子雨2
78、016版极小化过程在在R中可以用与中可以用与F等价的依赖集等价的依赖集G来取来取代代F原因:两个关系模式原因:两个关系模式R1,R2,如果,如果F与与G等价,那么等价,那么R1的关系一定是的关系一定是R2的关系。反过来,的关系。反过来,R2的关系也一定是的关系也一定是R1的关系。的关系。数据库系统原理厦门大学计算机科学系林子雨2016版候选码的求解对于给定的关系R(A1,A2,An)和函数依赖集F,可以将其属性分为4类:L类:仅出现在F的函数依赖左边的属性R类:仅出现在F的函数依赖右边的属性N类:在F的函数依赖左右两边均未出现的属性LR类:在F的函数依赖左右两边均出现的属性数据库系统原理厦门大
79、学计算机科学系林子雨2016版候选码的求解(1)快速求解候选码的一个充分条件定理:对于给定的关系模式R及其函数依赖集F,若X( X R)是L类属性,则X必为R的任一候选码的成员数据库系统原理厦门大学计算机科学系林子雨2016版候选码的求解例子:设有关系模式R(A,B,C,D),其函数依赖集F=DB, BD, ADB, ACD ,求R的所有候选码解:可以发现,A和C属性都是L类属性,由前面定理可知,AC必是R的一候选码的成员又因为(AC)+=ACBD,所以,AC是R的候选码数据库系统原理厦门大学计算机科学系林子雨2016版候选码的求解推论:对于给定的关系模式R及其函数依赖集F,若XF+包含了R的
80、全部属性,则X必为R的唯一候选码定理:对于给定的关系模式R及其函数依赖集F,如果X( X R)是R类属性,则X不在任何候选码中定理:设有关系模式R及其函数依赖集F,X( X R)是N类属性,则X必包含在R的任一候选码中数据库系统原理厦门大学计算机科学系林子雨2016版候选码的求解推论:对于给定的关系模式R及其函数依赖集F,如果X是R的N类和L类组成的属性集,且XF+包含了R的全部属性,则X是R的唯一候选码数据库系统原理厦门大学计算机科学系林子雨2016版候选码的求解数据库系统原理厦门大学计算机科学系林子雨2016版练习已知关系模式已知关系模式R,其中,其中U=A,B,C,D,E;F=ABC,B
81、D,C D E,DC,ACB。1.列出列出R的码的码2.计算计算BF+3.求求R的最小覆盖的最小覆盖Fm数据库系统原理厦门大学计算机科学系林子雨2016版第六章关系数据理论6.1数据依赖数据依赖6.2规范化规范化6.3数据依赖的公理系统数据依赖的公理系统6.4模式的分解模式的分解数据库系统原理厦门大学计算机科学系林子雨2016版6.4模式的分解把低一级的关系模式分解为若干个高一级把低一级的关系模式分解为若干个高一级的关系模式的方法并不是唯一的的关系模式的方法并不是唯一的只有能够保证分解后的关系模式与原关系只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义模式等价,分解方法才有意义数
82、据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)定义定义6.16关系模式关系模式R的一个分解:的一个分解:=R1,R2,RnU=U1 U2 Un,且不存在且不存在Ui Uj,Fi为为F在在Ui上的投影上的投影定义定义6.17函数依赖集合函数依赖集合XY |XY F+ XY Ui的一个的一个覆盖覆盖Fi 叫作叫作F 在属性在属性Ui 上的投影上的投影m数据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)例例:SL(Sno,Sdept,Sloc)F=SnoSdept,SdeptSloc,SnoSlocSL 2NF存在插入异常、删除异常、冗余度大和修改复杂等问题存在插入
83、异常、删除异常、冗余度大和修改复杂等问题分解方法可以有多种分解方法可以有多种数据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)SLSnoSdeptSloc95001CSA95002ISB95003MAC95004ISB95005PHB数据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)1.SL分解为下面三个关系模式:分解为下面三个关系模式:SN(Sno)SD(Sdept)SO(Sloc)数据库系统原理厦门大学计算机科学系林子雨2016版分解后的关系为:SNSDSOSnoSdeptSloc95001CSA95002ISB95003MAC95004PH95005数据库
84、系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)分解后的数据库分解后的数据库丢失了许多信息丢失了许多信息例如无法查询例如无法查询95001学生所在系或所在宿舍。学生所在系或所在宿舍。如如果果分分解解后后的的关关系系可可以以通通过过自自然然连连接接恢恢复复为为原原来来的关系,那么这种分解就没有的关系,那么这种分解就没有丢失信息丢失信息数据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)2.SL分解为下面二个关系模式:分解为下面二个关系模式:NL(Sno,Sloc)DL(Sdept,Sloc)分解后的关系为:分解后的关系为:NLDLSnoSlocSdeptSloc9500
85、1ACSA95002BISB95003CMAC95004BPHB95005B数据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)NLDLSnoSlocSdept95001ACS95002BIS95002BPH95003CMA95004BIS95004BPH95005BIS95005BPH数据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)NLDL比原来的比原来的SL关系多了关系多了3个元组个元组无法知道无法知道95002、95004、95005究竟是哪个系的学生究竟是哪个系的学生元组增加了,信息丢失了元组增加了,信息丢失了数据库系统原理厦门大学计算机科学系林子雨20
86、16版第三种分解方法3.将将SL分解为下面二个关系模式:分解为下面二个关系模式:ND(Sno,Sdept)NL(Sno,Sloc)分解后的关系为:分解后的关系为:数据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)NDNLSnoSdeptSnoSloc95001CS95001A95002IS95002B95003MA95003C95004IS95004B95005PH95005B数据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)NDNLSnoSdeptSloc95001CSA95002ISB95003MAC95004CSA95005PHB与与SL关系一样,因此没有
87、丢失信息关系一样,因此没有丢失信息数据库系统原理厦门大学计算机科学系林子雨2016版关系模式分解的标准三种模式分解的等价定义三种模式分解的等价定义分解具有无损连接性分解具有无损连接性分解要保持函数依赖分解要保持函数依赖分解既要保持函数依赖,又要具有无损连接性分解既要保持函数依赖,又要具有无损连接性数据库系统原理厦门大学计算机科学系林子雨2016版具有无损连接性的模式分解关系模式关系模式R的一个分解的一个分解=R1,R2,Rn若若R与与R1、R2、Rn自然连接的结果相等,则自然连接的结果相等,则称关系模式称关系模式R的这个分解的这个分解具有无损连接性具有无损连接性(Losslessjoin)具有
88、无损连接性的分解保证不丢失信息具有无损连接性的分解保证不丢失信息无损连接性不一定能解决插入异常、删除异常、无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题修改复杂、数据冗余等问题数据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)第三种分解方法具有无损连接性第三种分解方法具有无损连接性问题问题:这种分解方法没有保持原关系中的函数依赖这种分解方法没有保持原关系中的函数依赖SL中的函数依赖中的函数依赖SdeptSloc没有投影到关系模式没有投影到关系模式ND、NL上上数据库系统原理厦门大学计算机科学系林子雨2016版保持函数依赖的模式分解设关系模式设关系模式R被分解
89、为若干个关系模式被分解为若干个关系模式R1,R2,Rn(其中(其中U=U1 U2 Un,且不存在,且不存在Ui Uj,Fi为为F在在Ui上的投影),若上的投影),若F所逻辑蕴含的函数依赖一定也由分解所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖得到的某个关系模式中的函数依赖Fi所逻辑蕴含,则所逻辑蕴含,则称关系模式称关系模式R的这个分解是保持函数依赖的的这个分解是保持函数依赖的(Preservedependency)。)。数据库系统原理厦门大学计算机科学系林子雨2016版第四种分解方法将将SL分解为下面二个关系模式:分解为下面二个关系模式:ND(Sno,Sdept)DL(Sde
90、pt,Sloc)这种分解方法就保持了函数依赖。这种分解方法就保持了函数依赖。数据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)如果一个分解具有无损连接性,则它能够保证如果一个分解具有无损连接性,则它能够保证不丢失信息。不丢失信息。如果一个分解保持了函数依赖,则它可以减轻如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况。或解决各种异常情况。分解具有无损连接性和分解保持函数依赖是两分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖。同样,保持函数依赖一定能够保持函数依赖。同样,保持函
91、数依赖的分解也不一定具有无损连接性。的分解也不一定具有无损连接性。数据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)1.SL分解为下面三个关系模式:分解为下面三个关系模式:SN(Sno)SD(Sdept)SO(Sloc)2.SL分解为下面二个关系模式:分解为下面二个关系模式:NL(Sno,Sloc)DL(Sdept,Sloc)3.将将SL分解为下面二个关系模式:分解为下面二个关系模式:ND(Sno,Sdept)NL(Sno,Sloc)4.将将SL分解为下面二个关系模式:分解为下面二个关系模式:ND(Sno,Sdept)DL(Sdept,Sloc)数据库系统原理厦门大学计算机科学
92、系林子雨2016版模式的分解(续)第一种分解方法既不具有无损连接性,也未保持函第一种分解方法既不具有无损连接性,也未保持函数依赖,它不是原关系模式的一个等价分解数依赖,它不是原关系模式的一个等价分解第二种分解方法未保持函数依赖,不具有无损连接第二种分解方法未保持函数依赖,不具有无损连接性性第三种分解方法具有无损连接性,但未持函数依赖第三种分解方法具有无损连接性,但未持函数依赖第四种分解方法既具有无损连接性,又保持了函数第四种分解方法既具有无损连接性,又保持了函数依赖依赖数据库系统原理厦门大学计算机科学系林子雨2016版模式分解的定义设设p=R1,RK是是R的一个分解,的一个分解,r是是R的一个
93、的一个关系。关系。定义定义mp(r)=Ri(r)Mp(r)是是r在在p中各关系模式上投影的连接中各关系模式上投影的连接ri=Ri(r)=t.Ui|t ri=1k数据库系统原理厦门大学计算机科学系林子雨2016版模式的分解(续)引理引理6.4设设R是一个关系模式,是一个关系模式,p=R1,R2,Rk是是R的一的一个分解,个分解,r是是R的一个关系,则的一个关系,则(1)r mp(r)(2)若)若s=mp(r),则则Ri(s)=ri(3)mp(mp(r)=mp(r)数据库系统原理厦门大学计算机科学系林子雨2016版无损分解的定义定义定义6.18p=R1,R2,Rk是是R的一个分解的一个分解若对若对
94、R中的任何一个关系中的任何一个关系r均有均有r=mp(r)成立,成立,则称分解则称分解p具有无损连接性。具有无损连接性。数据库系统原理厦门大学计算机科学系林子雨2016版无损分解的判定算法算法算法6.2判断一个分解的无损连接性判断一个分解的无损连接性设设p=R1,R2,Rk是是R的一个分解,的一个分解,U=A1,A2,An,F=FD1,FD1,FDp1.建立一个建立一个n列列k行的表,每列对应一个属性,每行行的表,每列对应一个属性,每行对应分解中的一个关系模式。若属性对应分解中的一个关系模式。若属性Aj属于属于Ui,则在则在j列列i行的交叉处天上行的交叉处天上aj,否则填上否则填上bij;数据
95、库系统原理厦门大学计算机科学系林子雨2016版无损分解的判定算法2.对应每个对应每个FDi(FDi为为XiAli)做下列操作:做下列操作:找到找到Xi所对应的列中具有相同符号的那些行。考察所对应的列中具有相同符号的那些行。考察这些行的这些行的li列,若其中有列,若其中有ali则全部改为则全部改为ali;否则全;否则全部改为部改为bmli;m是这些行的行号最小值是这些行的行号最小值如在某次更改之后,有一行成为如在某次更改之后,有一行成为a1,a2,an,则算则算法终止法终止,P具有无损连接性具有无损连接性,否则否则P不具有无损连接不具有无损连接性性3.比较扫描前后,表有无变化,如有变化,则返回比
96、较扫描前后,表有无变化,如有变化,则返回第第2步,否则算法终止步,否则算法终止数据库系统原理厦门大学计算机科学系林子雨2016版分解示例例:例:已知关系模式已知关系模式R,其中,其中U=A,B,C,D,E;F=ABC,CD,D E。R的一个分解为的一个分解为R1(A,B,C),R2(C,D),R3(D,E).判断分解是否是无损连接。判断分解是否是无损连接。数据库系统原理厦门大学计算机科学系林子雨2016版课堂练习数据库系统原理厦门大学计算机科学系林子雨2016版无损连接例子(1)数据库系统原理厦门大学计算机科学系林子雨2016版无损连接例子(2)数据库系统原理厦门大学计算机科学系林子雨2016
97、版无损连接例子(3)数据库系统原理厦门大学计算机科学系林子雨2016版无损连接例子(4)数据库系统原理厦门大学计算机科学系林子雨2016版定理6.5数据库系统原理厦门大学计算机科学系林子雨2016版保持函数依赖分解的定义定义定义6.19p=R1,R2,Rk是是R的一个分解的一个分解若若F+=(UFi)+则分解则分解p保持函数依赖保持函数依赖i=1i=k数据库系统原理厦门大学计算机科学系林子雨2016版 模式分解的事实模式分解的事实n若要求分解保持函数依赖,则分解可以达到若要求分解保持函数依赖,则分解可以达到3NF,但不一定达到但不一定达到BCNF;n若要求分解既要保持函数依赖,又要保持无损若要
98、求分解既要保持函数依赖,又要保持无损连接则分解可以达到连接则分解可以达到3NF,但不一定达到但不一定达到BCNF;n若要求分解保持无损连接,那一定能达到若要求分解保持无损连接,那一定能达到4NF;第六章、关系数据理论数据库系统原理厦门大学计算机科学系林子雨2016版模式分解算法算法算法6.3(合成法)转换为(合成法)转换为3NF的保持函数依赖的分解。的保持函数依赖的分解。(1)对)对RU,F中的函数依赖集中的函数依赖集F进行进行“极小化处理极小化处理”(处理后得到的依赖集仍记为(处理后得到的依赖集仍记为F)(2)找出不在)找出不在F中出现的属性,把这样的的属性构成一个关中出现的属性,把这样的的
99、属性构成一个关系模式。把这些属性从系模式。把这些属性从U中去掉,剩余的属性仍记为中去掉,剩余的属性仍记为U。(3)若有)若有XA F,且,且XA=U,则,则=R,算法终止。,算法终止。(4)否则,对)否则,对F按具有相同左部的原则分组(假定分为按具有相同左部的原则分组(假定分为k组)组),每一组函数依赖,所涉及的全部属性集,每一组函数依赖,所涉及的全部属性集Ui。若若UiUj(ij)就去掉就去掉Ui。数据库系统原理厦门大学计算机科学系林子雨2016版例子:转换为例子:转换为3NF的保持函数依赖的分解的保持函数依赖的分解例例1:关系模式R,其中U=C,T,H,R,S,G,F=CSG,CT,THR
100、,HRC,HSR,将其分解成3NF并保持函数依赖。数据库系统原理厦门大学计算机科学系林子雨2016版例子:转换为例子:转换为3NF的保持函数依赖的分解的保持函数依赖的分解(一一)计算计算F的最小函数依赖集的最小函数依赖集最小函数依赖集为:最小函数依赖集为:F=CSG,CT,THR,HRC,HSR(二二)由于由于R中的所有属性均在中的所有属性均在F中都出现,所以转下一步。中都出现,所以转下一步。(三三)对对F按具有相同左部的原则分为:按具有相同左部的原则分为:R1=CSG,R2=CT,R3=THR,R4=HRC,R5=HSR。所以=R1(CSG),R2(CT),R3(THR),R4(HRC),R
101、5(HSR)。数据库系统原理厦门大学计算机科学系林子雨2016版模式分解算法算法算法6.4转换为转换为3NF既有无损连接性又保持函数依赖的既有无损连接性又保持函数依赖的分解。分解。(1)设)设X是是RU,F的码。的码。RU,F已由算法已由算法6.3分解为分解为=R1U1,F1,R2U2,F2,RkUk,Fk,令令 R*X,Fx。(2)若有某个)若有某个Ui,X Ui,将,将R*X,Fx从中从中去掉,去掉,(3)就是所求的分解。就是所求的分解。数据库系统原理厦门大学计算机科学系林子雨2016版例子:转换为例子:转换为3NF既有无损连接性又保持函既有无损连接性又保持函数依赖的分解数依赖的分解例例2
102、:关系模式R,其中:U=C,T,H,R,S,G,F=CSG,CT,THR,HRC,HSR,分解成3NF并保持无损连接和函数依赖。解:解:(1)根据上例例上例例1,得到3NF并保持函数依赖的分解如下:=R1(CSG),R2(CT),R3(THR),R4(HRC),R5(HSR)。(2)而HS是原模式的码,所以=CT,CSG,CHR,HSR,HRT,HS。由于HS是模式HSR的一个子集,所以消去HS后的分解CT,CSG,CHR,HSR,HRT就是具有无损联接性和保持函数依赖性的分解,且其中每一个模式均为3NF。数据库系统原理厦门大学计算机科学系林子雨2016版模式分解算法算法算法6.5转换为转换为
103、BCNF的无损连接分解(分解法)。的无损连接分解(分解法)。(1)令)令=RU,F(2)检查)检查中各关系模式是否均属于中各关系模式是否均属于BCNF。若是,则。若是,则算法终止。算法终止。(3)设)设中中RiUi,Fi不属于不属于BCNF,那么必有,那么必有XA Fi+(A X),且),且X非非Ri的码。因此,的码。因此,XA是是Ui的真的真子集。对子集。对Ri进行分解:进行分解:=S1,S2,US1=XA,US2=Ui-A,以,以代替代替RiUi,Fi返回第(返回第(2)步)步由于由于U中属性有限,因而有限次循环后算法中属性有限,因而有限次循环后算法6.5一定会终一定会终止。止。数据库系统
104、原理厦门大学计算机科学系林子雨2016版作业设设有有关关系系模模式式R(C,T,S,N,G),其其中中C代代表表课课程程,T代代表表教教师师的的职职工工号号,S代代表表学学生生号号,N代代表表学学生生的的姓姓名名,G代代表表分分数数(成成绩绩)。其其函函数数依依赖赖集集F=CT,CSG,SN,即即每每一一门门课课由由一一名名教教师师讲讲授授,每每个个学学生生每每门门课课只只有有一一个成绩,学生的学号决定学生的姓名。个成绩,学生的学号决定学生的姓名。1将将该该模模式式分分解解成成既既符符合合BCNF,又又具具有有无无损损连连接接的的若若干干关关系模式系模式2将将R分分解解成成R1(C,T,S,G)和和R2(C,S,N,G),试试判断它们各符合第几范式。判断它们各符合第几范式。3.判断判断2的分解是否是无损连接的分解是否是无损连接注:需给出详细的求解过程注:需给出详细的求解过程数据库系统原理厦门大学计算机科学系林子雨2016版附件:主讲教师和助教单位:厦门大学计算机科学系E-mail:个人网页:http:/