第9章-关系规范化理论课件

上传人:沈*** 文档编号:241648141 上传时间:2024-07-12 格式:PPT 页数:117 大小:1.04MB
返回 下载 相关 举报
第9章-关系规范化理论课件_第1页
第1页 / 共117页
第9章-关系规范化理论课件_第2页
第2页 / 共117页
第9章-关系规范化理论课件_第3页
第3页 / 共117页
点击查看更多>>
资源描述
数据库系统教程第9章 关系规范化理论1第第9 9章章 关系规范化理论关系规范化理论o9.1 9.1 函数依赖函数依赖o9.2 9.2 一些基本概念一些基本概念o9.3 9.3 范式范式o9.4 9.4 关系模式的分解准则关系模式的分解准则*2关系数据库逻辑设计n针对具体问题,如何构造一个适合于它的数据模式。n数据库逻辑设计的工具关系数据库的规范化理论。o函数依赖o范式o模式设计方法关系模式的设计问题关系模式的设计问题n n示例考虑为管理职工的工资信息而设计一个关系模式职工级别工资钱广5600孙志6700李开5600周祥6700赵明4500关系模式的设计问题关系模式的设计问题n信息的不可表示问题信息的不可表示问题n插插入入异异常常:如果没有职工具有8级工资,则8级工资的工资数额就难以插入n删删除除异异常常:如果仅有职工赵明具有4级工资,如果将赵明删除,则有关4级工资的工资数额信息也随之删除了n信息的冗余问题信息的冗余问题n数数据据冗冗余余:职工很多,工资级别有限,每一级别的工资数额反复存储多次n更更新新异异常常:如果将5级工资的工资数额调为620,则需要找到每个具有5级工资的职工,逐一修改关系模式的设计问题关系模式的设计问题n n解决之道:分解解决之道:分解!分解分解!再分解再分解!n n望闻问切:不良的望闻问切:不良的数据依赖数据依赖职工级别赵明4钱广5孙志6李开5周祥6级别工资4500560067009.1 9.1 函数依赖函数依赖o数数据据的的语语义义不不仅仅表表现现为为完完整整性性约约束束,对对关系模式的设计也提出了一定的要求。关系模式的设计也提出了一定的要求。o如如何何构构造造一一个个合合适适的的关关系系模模式式,应应构构造造几几个个关关系系模模式式,每每个个关关系系模模式式由由哪哪些些属属性性组组成成等等,都都是是数数据据库库设设计计问问题题,确确切切地讲是关系数据库的逻辑设计问题。地讲是关系数据库的逻辑设计问题。*79.1.19.1.1 基本概念基本概念 o省省=f f(城市城市):只要给出一个具体的城市值,就会有:只要给出一个具体的城市值,就会有唯一一个省值和它对应,唯一一个省值和它对应,o如如“武汉市武汉市”在在“湖北省湖北省”,这里,这里“城市城市”是自变是自变量量X X,“省省”是因变量或函数值是因变量或函数值Y Y。o把把X X函数决定函数决定Y Y,或,或Y Y函数依赖于函数依赖于X X表示为:表示为:X XY Yo如果有关系模式如果有关系模式R R(A1A1,A2A2,AnAn),X X和和Y Y为为 A1A1,A2A2,AnAn 的子集,则对于关系的子集,则对于关系R R中的任意一个中的任意一个X X值,都只有一个值,都只有一个Y Y值与之对应,则称值与之对应,则称X X函数决定函数决定Y Y,或或Y Y函数依赖于函数依赖于X X。*8示例示例o例例1 1:对学生关系模式:对学生关系模式 Student Student(Sno,Sname,Sdept,SageSno,Sname,Sdept,Sage)o有以下依赖关系:有以下依赖关系:SnoSname,SnoSdept,SnoSage 例例2 2:SCSC(Sno,Cno,GradeSno,Cno,Grade)(Sno,Cno)Grade*9函数依赖定义函数依赖定义o设有关系模式设有关系模式R R(A1A1,A2A2,AnAn),X X和和Y Y均均为为 A1A1,A2A2,AnAn 的子集,的子集,r r是是R R的任一具的任一具体关系,体关系,t1t1、t2t2是是r r中的任意两个元组;中的任意两个元组;o如果由如果由t1t1 X X=t2t2 X X 可以推导出可以推导出t1t1 Y Y=t2t2 Y Y,则称,则称X X函数决定函数决定Y Y,或,或Y Y函函数依赖于数依赖于X X,记为,记为X XY Y。*10称称X X为决定因素为决定因素实例实例A AB BC CD Da1a1b1b1c1c1d1d1a1a1b2b2c1c1d2d2a2a2b2b2c2c2d2d2a2a2b3b3c2c2d3d3a3a3b3b3c2c2d4d4A AB BC C1 12 23 34 42 23 35 53 33 3实例实例实例实例有关学生的关系模式S(S#,SN,SD,DEAN,C#,G)S#S#SNSNSDSDDEA NDEA NC#C#G GS#SNSDDEANC#GS01杨明D01思齐C0190S02李婉D01思齐C0187S01杨明D01思齐C0292S03刘海D02述圣C0195S04安然D02述圣C0278S05乐天D03省身C01829.1.2 9.1.2 一些术语和符号一些术语和符号(1 1)如果)如果X XY Y,但,但Y Y不包含于不包含于X X,则称,则称X XY Y是非平凡的函数依赖是非平凡的函数依赖。(2 2)如)如果果X XY Y,但,但Y Y包含于包含于X X,则称,则称X XY Y是平凡的函数依赖是平凡的函数依赖。若若无无特特别别声声明明,我我们们讨讨论论的的都都是是非非平平凡凡的函数依赖。的函数依赖。*14术语和符号(续)术语和符号(续)(3 3)如果)如果X XY Y,则,则X X称为称为决定因子决定因子。(4 4)如果)如果X XY Y,并且,并且Y YX X,则记作,则记作X XY Y。(5 5)如果)如果X XY Y,并且对于,并且对于X X的一个任意真子集的一个任意真子集X X都有都有X X/Y Y,则称,则称Y Y完全完全函数依赖函数依赖于于X X,记作:记作:如果如果X XY Y成立,则称成立,则称Y Y部分函数依赖部分函数依赖于于X X,记,记作:作:*15术语和符号(续)术语和符号(续)(6 6)如果)如果X XY Y(非平凡函数依赖,并(非平凡函数依赖,并且且Y Y/X X)、)、Y YZ Z,则称,则称Z Z 传递函传递函数依赖数依赖于于X X。*16示例示例o例例1 1:有关系模式:有关系模式SCSC(Sno,Sname,Cno,Credit,GradeSno,Sname,Cno,Credit,Grade)o主键为(主键为(Sno,CnoSno,Cno),则函数依赖关系有:),则函数依赖关系有:*17示例示例o例例2 2:假设有关系模式:假设有关系模式 S S(Sno,Sname,Dept,Dept_masterSno,Sname,Dept,Dept_master)o假设一个系只有一个主任,主键为假设一个系只有一个主任,主键为SnoSno,则函数依,则函数依赖关系有:赖关系有:*189.1.3 9.1.3 为什么要讨论函数依赖?为什么要讨论函数依赖?有关系模式:有关系模式:S-L-C(Sno,Sname,Ssex,Sdept,SLOC,Cno,Grade)S-L-C(Sno,Sname,Ssex,Sdept,SLOC,Cno,Grade)其中各属性分别为:学号、姓名、性别、学其中各属性分别为:学号、姓名、性别、学生所在系、学生所住宿舍楼、课程号和考试成生所在系、学生所住宿舍楼、课程号和考试成绩。绩。假设每个系的学生都住在一栋楼里,假设每个系的学生都住在一栋楼里,(Sno,CnoSno,Cno)为主键)为主键*19数据示例数据示例*20SnoSnoSnameSnameSsexSsexSdeptSdeptSlocSlocCnoCnoGradeGrade08111010811101李勇李勇男男计算机系算机系2 2公寓公寓C001C001969608111010811101李勇李勇男男计算机系算机系2 2公寓公寓C002C002808008111010811101李勇李勇男男计算机系算机系2 2公寓公寓C003C003848408111010811101李勇李勇男男计算机系算机系2 2公寓公寓C005C005626208111020811102刘晨刘晨男男计算机系算机系2 2公寓公寓C001C001929208111020811102刘晨刘晨男男计算机系算机系2 2公寓公寓C002C002909008111020811102刘晨刘晨男男计算机系算机系2 2公寓公寓C004C004848408211020821102吴吴宾女女信息管理系信息管理系1 1公寓公寓C001C001767608211020821102吴吴宾女女信息管理系信息管理系1 1公寓公寓C004C004858508211020821102吴吴宾女女信息管理系信息管理系1 1公寓公寓C005C005 73 7308211020821102吴吴宾女女信息管理系信息管理系1 1公寓公寓C007C007 NULL NULL08211030821103张海海男男信息管理系信息管理系1 1公寓公寓C001C001505008211030821103张海海男男信息管理系信息管理系1 1公寓公寓C004C004808008311030831103张珊珊珊珊女女通信工程系通信工程系1 1公寓公寓C004C004787808311030831103张珊珊珊珊女女通信工程系通信工程系1 1公寓公寓C005C005656508311030831103张珊珊珊珊女女通信工程系通信工程系1 1公寓公寓C007C007 NULL NULL存在问题存在问题o数据冗余问题数据冗余问题 o数据更新问题数据更新问题 o数据插入问题数据插入问题 o数据删除问题数据删除问题*21结论结论oS-L-CS-L-C关系模式不是一个好的模式。关系模式不是一个好的模式。o如何改造这个关系模式并克服以上种种问题如何改造这个关系模式并克服以上种种问题是关系规范化理论要解决的问题,也是讨论是关系规范化理论要解决的问题,也是讨论函数依赖的原因。函数依赖的原因。o解决方法解决方法:模式分解,即把一个关系模式分解模式分解,即把一个关系模式分解成两个或多个关系模式,在分解的过程中消成两个或多个关系模式,在分解的过程中消除那些除那些“不良不良”的函数依赖,从而获得良好的函数依赖,从而获得良好的关系模式的关系模式*22问题给定一组函数依赖,是否能导出另外一些函数依赖,或另外的函数依赖是否成立?如关系R(A,B,C)函数依赖FD=A B,B C,问:A C是否成立?9.1.4 9.1.4 函数依赖的推理规则函数依赖的推理规则o一个关系的完整函数依赖集可能是很大的。一个关系的完整函数依赖集可能是很大的。o理论上希望确定一组函数依赖(表示为理论上希望确定一组函数依赖(表示为X X),),但这组函数依赖的规模要比完整的函数依赖集但这组函数依赖的规模要比完整的函数依赖集(表示为(表示为Y Y)小的多,而且)小的多,而且Y Y中的每个函数依赖中的每个函数依赖都可以通过都可以通过X X中的函数依赖表示。中的函数依赖表示。o因此,如果满足因此,如果满足X X中的函数依赖定义的完整性中的函数依赖定义的完整性约束,也必然满足约束,也必然满足Y Y中定义的函数依赖定义的中定义的函数依赖定义的完整性约束。完整性约束。*24函数依赖的推理规则(续)函数依赖的推理规则(续)o这种想法表明必须可以从一些函数依赖推这种想法表明必须可以从一些函数依赖推导出另外一些函数依赖。导出另外一些函数依赖。o例如,如果关系中存在函数依赖:例如,如果关系中存在函数依赖:nABAB,BCBC,则有,则有ACAC。o我们要讨论的是用一种方法来帮助确定关我们要讨论的是用一种方法来帮助确定关系的完整的函数依赖集合,并讨论如何得系的完整的函数依赖集合,并讨论如何得到一个表示完整函数依赖的到一个表示完整函数依赖的最小函数依赖最小函数依赖集集。*25极小函数依赖集极小函数依赖集o从一个函数依赖集从一个函数依赖集X X推导出的所有函数推导出的所有函数依赖的集合称为依赖的集合称为X X的闭包,记为的闭包,记为X X+。o需要有一些规则来帮助计算需要有一些规则来帮助计算X X+。oArmstrongArmstrong公理系统公理系统包含了一组推导规包含了一组推导规则,这些规则确定了如何从已知的函数则,这些规则确定了如何从已知的函数依赖推导出新的函数依赖(依赖推导出新的函数依赖(ArmstrongArmstrong,19741974)。)。*26ArmstrongArmstrong公理公理 假设假设A A、B B、C C、D D都是关系都是关系R R的子集,的子集,ArmstrongArmstrong公理公理:(1 1)自反性自反性:如果:如果B B是是A A的子集,则的子集,则ABAB。(2 2)增广性增广性:如果:如果ABAB,则,则A,CB,CA,CB,C。(3 3)传递性传递性:如果:如果ABAB并且并且BCBC,则,则ACAC*27其他规则其他规则(4)(4)自确定性自确定性:AAAA(5)(5)可分解性可分解性:如果:如果AB,CAB,C,则,则ABAB和和ACAC(6)(6)合并性合并性:如果:如果ABAB和和ACAC,则,则AB,CAB,C(7)(7)组合性组合性:如果:如果ABAB和和CDCD,则,则A,CB,DA,CB,D*28 确定一个关系的函数依赖集确定一个关系的函数依赖集F F:o首先确定语义上非常明显的函数依赖,首先确定语义上非常明显的函数依赖,o然后应用然后应用ArmstrongArmstrong公理(规则(公理(规则(1 1)到)到(3 3)从这些函数依赖推导出附加的正)从这些函数依赖推导出附加的正确的函数依赖。具体方法:确的函数依赖。具体方法:n首先确定每一组会在函数依赖左边出现的属首先确定每一组会在函数依赖左边出现的属性组性组A A,n然后确定所有依赖于然后确定所有依赖于A A的属性组。的属性组。*29属性集闭包属性集闭包o设设F F是属性集是属性集U U上的函数依赖集,上的函数依赖集,X X为为U U的一的一个子集。则对于个子集。则对于F F,属性集,属性集X X关于关于F F的闭包的闭包(用(用X X表示)为:表示)为:X X A|X A|XA A能够由能够由F F根据根据AmstrongAmstrong公理公理导出导出 o因此,若想判断函数依赖因此,若想判断函数依赖X XY Y是否成立,是否成立,只要计算只要计算X X关于函数依赖集关于函数依赖集F F的闭包,若的闭包,若Y Y是是X X闭包中的一个元素,则闭包中的一个元素,则X XY Y成立。成立。*30闭包的计算闭包的计算n n示例1R,U=(A,B,C,G,H,I),F=AB,AC,CGH,CGI,BH,计算 所用依赖 ABAGB ACAGBC CGHAGBCH CGIAGBCH I=AGBCH I闭包的计算闭包的计算n n示例2R,U=(A,B,C,D,E),F=ABC,BD,CE,CEB,ACB,计算所用依赖 ABCABC BDABCD CEABCDE =ABCDE闭包的计算闭包的计算n n示例3R,U=(A,B,C,D,E,G),F=AE,BEAG,CEA,GD,计算所用依赖 AEABE BEAGABEG GDABEGD=ABEGDo示例R,U=(A,B,C,G,H,I),F=AB,AC,CGH,CGI,BH,oA H?oCG HI?oAG I?n n定义n关系模式R,F是其函数依赖,X,Y是其属性子集,如果从F的函数依赖能够推出XY,则称F逻逻逻逻辑辑辑辑蕴蕴蕴蕴涵涵涵涵XY,记作F XY n被F所逻辑蕴涵的函数依赖的全体所构成的集合称作F的闭包闭包闭包闭包,记作F+=XY|F XYn n示例R(X,Y),F=XYF+=X,XX,XY,XXY,Y,YY XY,XYX,XYY,XYXY9.1.5 9.1.5 最小函数依赖集最小函数依赖集o对于一组函数依赖对于一组函数依赖Y Y和另一组函数依和另一组函数依赖赖X X,如果,如果Y Y中的每个函数依赖都在中的每个函数依赖都在X X+中,也就是说,中,也就是说,Y Y中的每个函数依赖中的每个函数依赖都可以从都可以从X X推导出,则称推导出,则称Y Y被被X X覆盖覆盖。*36o函数依赖集的等价性函数依赖集的等价性n函数依赖集F,G,若F+=G+,则称F与G等价nF+=G+F G+,G F+o最小覆盖最小覆盖Fminn单属性化:单属性化:F中任一函数依赖X A,A必是单属性n无冗余化:无冗余化:F中不存在这样的函数依赖X A,使得F与F X A等价n既约化:既约化:F中不存在这样的函数依赖XA,在X中有真子集Z,使得F与F X AZ A等价最小函数依赖集最小函数依赖集 如果如果X X满足如下条件,则称满足如下条件,则称X X是最小的函数是最小的函数依赖集:依赖集:oX X中每个函数的右边都只有一个属性。中每个函数的右边都只有一个属性。o对对X X中的任何函数依赖中的任何函数依赖ABAB,都不存在,都不存在A A的的一个真子集一个真子集C C,使得用,使得用CBCB代替代替ABAB后得后得到和原来的到和原来的X X等价的一组依赖。等价的一组依赖。o从从X X中移出任何一个函数依赖都无法再得中移出任何一个函数依赖都无法再得到和原来的到和原来的X X等价的一组函数依赖。等价的一组函数依赖。*38函数依赖的等价和覆盖函数依赖的等价和覆盖n n算法求解函数依赖集F的最小覆盖Fminn单属性化:逐个检查F中各函数依赖FDi:XY,若Y=A1 A2 Ak,k2,则用诸XAi 代替Yn无冗余化:逐个检查F中各函数依赖XA,令G=FXA,若A ,则从F中去掉该函数依赖n既约化:逐个检查F中各函数依赖XA,设X=B1Bm,逐个考查Bi,若A ,则以(X Bi)取代X函数依赖的等价和覆盖函数依赖的等价和覆盖n n示例一F=AB,BA,AC,BC,求Fminn检查AB,G=FAB=BA,AC,BC=A,C,BA,Cn检查AC,G=FAC=AB,BA,BC=A,B,C,CA,B,C所以从F中删除AC,Fmin=AB,BA,BC或者Fmin=AB,BA,AC函数依赖的等价和覆盖函数依赖的等价和覆盖n n示例二F=CA,AG,CGB,BA,求FminF是无冗余的判断CGB,=GB =C,A,G,BB ,以C代替CG最后,Fmin=CA,AG,CB,BA对吗?示例示例例例 确定确定 S-L-C S-L-C(Sno,Sname,Ssex,Sdept,Sloc,Cno,GradeSno,Sname,Ssex,Sdept,Sloc,Cno,Grade)的最小函数依赖集。的最小函数依赖集。Sno SnameSno SnameSno SsexSno SsexSno SdeptSno SdeptSdept SlocSdept Sloc(Sno,CnoSno,Cno)GradeGrade*429.2 9.2 关系规范化中的一些基本概念关系规范化中的一些基本概念o关系规范化是指导将有关系规范化是指导将有“不良不良”函数函数依赖的关系模式转换为良好的关系模依赖的关系模式转换为良好的关系模式的理论。式的理论。o这里涉及到这里涉及到范式范式的概念,不同的范式的概念,不同的范式表示关系模式遵守的不同的规则。表示关系模式遵守的不同的规则。*43一些术语一些术语o候选键候选键:设:设K K为为R R(U U,F F)中的属性或属性组,中的属性或属性组,若若 K K U U,则,则K K为为R R的的候选键候选键。K K为决定为决定R R中全部属性值的最小属性组。中全部属性值的最小属性组。o主键主键:关系:关系R R(U U,F F)中可能有多个候选键,中可能有多个候选键,则选其中一个作为主键。则选其中一个作为主键。o全键全键:候选键为整个属性组。:候选键为整个属性组。o主属性主属性与与非主属性非主属性:在:在R R(U U,F F)中,包含中,包含在任一候选键中的属性称在任一候选键中的属性称为主属性为主属性,不包,不包含在任一候选键中的属性称为含在任一候选键中的属性称为非主属性非主属性。*44示例示例例例1 1 学生表(学号,姓名,性别,身份学生表(学号,姓名,性别,身份证号,年龄,所在系)证号,年龄,所在系)o候选键候选键:学号,身份证号。:学号,身份证号。o主键主键:“学号学号”或者是或者是“身份证号身份证号”o主属性主属性:学号,身份证号。:学号,身份证号。o非主属性非主属性:姓名,性别,年龄,所在系:姓名,性别,年龄,所在系*45示例示例例例2 2 学生选课(学号,课程号,考试次学生选课(学号,课程号,考试次数,成绩)数,成绩)o候选键候选键:(学号,课程号,考试次数),:(学号,课程号,考试次数),也为主键。也为主键。o主属性主属性:学号,课程号,考试次数:学号,课程号,考试次数o非主属性非主属性:成绩。:成绩。*46示例示例例例3 3 教师教师_ _课程(教师号,课程号,学年)课程(教师号,课程号,学年)o候选键候选键:(教师号,课程号,学年),:(教师号,课程号,学年),这里的候选键也是主键。这里的候选键也是主键。o主属性主属性:教师号,课程号,学年。:教师号,课程号,学年。o非主属性非主属性:无。:无。o这种候选键为全部属性的表称为这种候选键为全部属性的表称为全键表全键表*47候选码的计算候选码的计算n n定义n左部属性,只出现在F左边的属性n右部属性,只出现在F右边的属性n双部属性,出现在F两边的属性n外部属性,不出现在F中的属性n n定理n左部属性一定出现在任何候选码中n右部属性一定不出现在任何候选码中n外部属性一定出现在任何候选码中候选码的计算候选码的计算出现在左边的属性:C,T,H,R,S出现在右边的属性:C,T,R左部属性:HS右部属性:双部属性:C,T,RU=(C,T,H,R,S)F=CT,HRC,HTR,HSR给出R的所有候选码候选码的计算候选码的计算U=A,B,C,D,EF=AEC,ACD,CDB,DE给出R的所有候选码 出现在左边的属性:A,C,D,E出现在右边的属性:B,C,D,E左部属性:A右部属性:B双部属性:C,D,E外键外键o若若R R(U U,F F)的属性(组)的属性(组)X X(X X属于属于U U)是另一个关系)是另一个关系S S的主键,则称的主键,则称X X为为R R的的外键外键。(X X必须先被定义为必须先被定义为S S的主键的主键)o用于关系表之间建立关联的属性(组)用于关系表之间建立关联的属性(组)称为外键。称为外键。*519.3 9.3 范式范式o关系数据库中的关系要满足一定的要求,关系数据库中的关系要满足一定的要求,满足不同程度要求的为不同的满足不同程度要求的为不同的范式范式(Normal FormNormal Form)。)。范式的种类:范式的种类:n第一范式第一范式(1NF)(1NF)n第二范式第二范式(2NF)(2NF)n第三范式第三范式(3NF)(3NF)nBCBC范式(范式(BCNFBCNF)n第四范式(第四范式(4NF4NF)n第五范式(第五范式(5NF5NF)*52范式说明范式说明o“第几范式第几范式”表示关系模式满足的条件,表示关系模式满足的条件,o对关系模式的属性间的函数依赖加以不同的对关系模式的属性间的函数依赖加以不同的限制,就形成了不同的范式。限制,就形成了不同的范式。o范式是递进,第一范式的表比不是第一范式范式是递进,第一范式的表比不是第一范式的表要好;第二范式的表比第一范式的表好的表要好;第二范式的表比第一范式的表好o规范化的理论由规范化的理论由E.F.CoddE.F.Codd于于19711971年提出,年提出,目的是设计目的是设计“好的好的”关系模式。关系规范化关系模式。关系规范化实际上就是对有问题的关系进行分解,从而实际上就是对有问题的关系进行分解,从而消除操作异常。消除操作异常。*53各范式的关系各范式的关系*541NF2NF3NFBCNF4NF5NF第一范式第一范式第一范式第一范式(1NF)(1NF):不包含重复组的关系:不包含重复组的关系*55非第一范式非第一范式*56解决方法一解决方法一o在包含重复数据的行的空列中输入合在包含重复数据的行的空列中输入合适的数据,从而消除重复组。适的数据,从而消除重复组。*57学号学号姓名姓名所在系所在系课程号程号成成绩08111010811101081110108111010811101081110108111010811101李勇李勇李勇李勇李勇李勇李勇李勇计算机系计算机系计算机系计算机系计算机系计算机系计算机系计算机系C001C001C002C002C003C003C005C005969680806464828208211020821102082110208211020821102082110208211020821102吴宾吴宾吴宾吴宾吴宾吴宾吴宾吴宾信息管理系信息管理系信息管理系信息管理系信息管理系信息管理系信息管理系信息管理系C001C001C004C004C005C005C007C007767685857373NULLNULL解决方法二解决方法二o将关系中的重复数据列移到一个新关系中,将关系中的重复数据列移到一个新关系中,将原关键字属性也复制到新关系中,并在将原关键字属性也复制到新关系中,并在原表中删除被复制的重复数据列。原表中删除被复制的重复数据列。*58学号学号课程号程号成成绩08111010811101081110108111010811101081110108111010811101C001C001C002C002C003C003C005C005969680806464828208211020821102082110208211020821102082110208211020821102C001C001C004C004C005C005C007C007767685857373NULLNULL学号学号姓名姓名所中系所中系08111010811101李勇李勇计算机系算机系08211020821102吴吴宾信息管理系信息管理系新关系新关系9.3.2 9.3.2 第二范式第二范式o定义定义 如果如果R R(U U,F F)1NF1NF,并且,并且R R中的中的每个非主属性都完全函数依赖于主键,每个非主属性都完全函数依赖于主键,则则R R(U U,F F)2NF2NF。o可知可知:若某个第一范式关系的主键只:若某个第一范式关系的主键只由一个列组成,则这个关系就是第二由一个列组成,则这个关系就是第二范式关系。范式关系。*59示例示例S-L-CS-L-C(Sno,Sname,Ssex,Sdept,Sloc,Cno,Grade Sno,Sname,Ssex,Sdept,Sloc,Cno,Grade)o(Sno,CnoSno,Cno)是主键,)是主键,o有有SnoSnameSnoSnameo有(有(SnoSno,CnoCno)Sname Snameo不是第二范式关系不是第二范式关系*60分解方法分解方法o(1 1)用组成主键的属性集合的每一)用组成主键的属性集合的每一个子集作为主键构成一个关系。个子集作为主键构成一个关系。o(2 2)将依赖于这些主键的属性放置)将依赖于这些主键的属性放置到相应的关系中。到相应的关系中。o(3 3)最后去掉只由主键的子集构成)最后去掉只由主键的子集构成的关系。的关系。*61分解分解S-L-CS-L-C步骤步骤1 1o将该关系分解为如下三个关系(下划将该关系分解为如下三个关系(下划线部分表示主键):线部分表示主键):S-LS-L(SnoSno,)C C(CnoCno,)S-CS-C(Sno,CnoSno,Cno,)*62分解分解S-L-CS-L-C步骤步骤2 2o将依赖于这些主键的属性放置到相应将依赖于这些主键的属性放置到相应的关系中,形成如下三个关系:的关系中,形成如下三个关系:S-LS-L(SnoSno,Sname,Ssex,Sdept,SlocSname,Ssex,Sdept,Sloc)C C(CnoCno)S-CS-C(Sno,Cno,GradeSno,Cno,Grade)*63分解分解S-L-CS-L-C步骤步骤3 3o去掉只由主键的子集构成的关系。去掉只由主键的子集构成的关系。oS-L-CS-L-C关系最终被分解的形式为:关系最终被分解的形式为:S-LS-L(Sno,Sname,Ssex,Sdept,SlocSno,Sname,Ssex,Sdept,Sloc)S-CS-C(Sno,Cno,GradeSno,Cno,Grade)*64S-LS-L存在问题存在问题*65SnoSnameSsexSdeptSloc0811101李勇李勇男男计算机系算机系2公寓公寓0811102刘晨刘晨男男计算机系算机系2公寓公寓0821102吴吴宾女女信息管理系信息管理系1公寓公寓0821103张海海男男信息管理系信息管理系1公寓公寓0831103张珊珊珊珊女女通信工程系通信工程系1公寓公寓9.3.3 9.3.3 第三范式第三范式定义定义:如果如果R R(U U,F F)2NF)2NF,并且所有非主,并且所有非主属性都不传递依赖于主键,则属性都不传递依赖于主键,则R R(U U,F F)3NF)3NF。oS-L(S-L(SnoSno,Sname,Ssex,Sdept,SLOC),Sname,Ssex,Sdept,SLOC)SnoSdeptSnoSdept,SdeptSlocSdeptSloc 有有Sno SLOC,Sno SLOC,oS-LS-L不是不是3NF3NF*66分解方法分解方法o对于不是候选码的每个决定因子,从关对于不是候选码的每个决定因子,从关系模式中删去依赖于它的所有属性。系模式中删去依赖于它的所有属性。o新建一个关系模式,新关系模式中包含新建一个关系模式,新关系模式中包含在原关系模式中所有依赖于该决定因子在原关系模式中所有依赖于该决定因子的属性。的属性。o将决定因子作为新关系模式的主键。将决定因子作为新关系模式的主键。*67分解分解S-LS-L关系模式关系模式oS-LS-L分解后的关系模式为:分解后的关系模式为:S-DS-D(SnoSno,Sname,Ssex,Sdept,Sname,Ssex,Sdept)S-LS-L(SdeptSdept,Sloc,Sloc)o对对S-DS-D,有:,有:Sno SnameSno Sname,Sno SsexSno Ssex,Sno SdeptSno Sdept,因此,因此S-DS-D是是3NF3NF的。的。o对对S-LS-L,有:,有:Sdept SlocSdept Sloc,因此,因此S-LS-L也是也是3NF3NF的。的。*68S-L-CS-L-C最终分解结果最终分解结果oS-DS-D(Sno,Sname,Ssex,SdeptSno,Sname,Ssex,Sdept)nSnoSno为主键为主键nSdeptSdept为引用为引用S-LS-L关系模式的外键关系模式的外键oS-LS-L(Sdept,SlocSdept,Sloc)nSdeptSdept为主键为主键n没有外键。没有外键。oS-CS-C(Sno,Cno,GradeSno,Cno,Grade)n(SnoSno,CnoCno)为主键)为主键nSnoSno为引用为引用S-DS-D关系模式的外键关系模式的外键*699.3.4 Boyce-Codd9.3.4 Boyce-Codd范式范式o第二范式和第三范式都是不允许存在对主第二范式和第三范式都是不允许存在对主键的部分依赖和传递依赖,并没有考虑对键的部分依赖和传递依赖,并没有考虑对候选键的依赖问题。候选键的依赖问题。o如果只考虑对主键属性的依赖关系,则第如果只考虑对主键属性的依赖关系,则第三范式关系有可能存在会引起数据冗余的三范式关系有可能存在会引起数据冗余的函数依赖。函数依赖。o由此出现了由此出现了Boyce-CoddBoyce-Codd范式,简称(范式,简称(BCBC范范式或式或BCNFBCNF)*70BCNFBCNFo定义定义 如果如果R R(U U,F F)1NF1NF,若,若X XY Y且且Y Y X X时时X X必包含候选键,则必包含候选键,则R R(U U,F F)BCNFBCNF。o通俗地讲,当且仅当关系中的每个函数依通俗地讲,当且仅当关系中的每个函数依赖的决定因子都是候选键时,该范式即为赖的决定因子都是候选键时,该范式即为BCNFBCNF。o3NF3NF和和BCNFBCNF之间的区别在于对一个函数依赖之间的区别在于对一个函数依赖A AB B,3NF3NF允许允许B B是主键属性,而是主键属性,而A A不是候选不是候选键。而键。而BCNFBCNF则要求则要求A A必须是候选键。必须是候选键。*713NF3NF与与BCNFBCNFo大多数情况下大多数情况下3NF3NF的关系都是的关系都是BCNFBCNF的。的。o只有在非常特殊情况下,才会发生违反只有在非常特殊情况下,才会发生违反BCNFBCNF的情况。有可能违反的情况。有可能违反BCNFBCNF的情形:的情形:o关系中包含两个(或更多)关系中包含两个(或更多)复合候选键复合候选键o候选键有重叠候选键有重叠,通常至少有一个重叠的,通常至少有一个重叠的属性。属性。*72示例示例clientNointerviewDateinterviewTimestaffNoroomNoC0012009-10-2010:30Z005R101G0022009-10-2012:00Z005R101G0052009-10-2010:30Z002R102G0022009-10-2810:30Z005R102*73语义语义:每个参与会见的职员被分配到一个特定的:每个参与会见的职员被分配到一个特定的房间中进行,一个房间在一个工作日内可以被分房间中进行,一个房间在一个工作日内可以被分配多次,但一个职员在特定工作日内只在一个房配多次,但一个职员在特定工作日内只在一个房间会见客户,一个客户在某个特定日期只能参与间会见客户,一个客户在某个特定日期只能参与一次会见,但可以在不同的日期多次参与会见一次会见,但可以在不同的日期多次参与会见客户号客户号 会见日期会见日期 会见开始时间会见开始时间 职员号职员号 会见房间号会见房间号候选键:候选键:(clientNo,interviewDateclientNo,interviewDate)(staffNo,interviewDate,staffNo,interviewDate,interviewTimeinterviewTime)(roomNo,interviewDate,roomNo,interviewDate,interviewTimeinterviewTime)函数依赖关系函数依赖关系fd1fd1:(clientNo,interviewDateclientNo,interviewDate)interviewTime,staffNo,roomNo interviewTime,staffNo,roomNo (主键)(主键)fd2fd2:(staffNo,interviewDate,staffNo,interviewDate,interviewTimeinterviewTime)clientNo clientNo (候选键)(候选键)fd3fd3:(roomNo,interviewDate,roomNo,interviewDate,interviewTimeinterviewTime)stuffNo,ClientNo stuffNo,ClientNo (候选键)(候选键)fd4fd4:(staffNo,interviewDatestaffNo,interviewDate)roomNo roomNo*74讨论讨论fd4fd4fd4fd4:(staffNo,interviewDatestaffNo,interviewDate)roomNoroomNoo虽然(虽然(staffNo,interviewDatestaffNo,interviewDate)不是候选)不是候选键,但由于键,但由于roomNoroomNo是候选键(是候选键(roomNo,roomNo,interviewDate,interviewTimeinterviewDate,interviewTime)中的一个)中的一个属性,因此,这个函数依赖是属性,因此,这个函数依赖是3NF3NF所允许的。所允许的。o又由于在主键(又由于在主键(clientNo,interviewDateclientNo,interviewDate)上没有部分依赖关系或传递依赖关系,因此上没有部分依赖关系或传递依赖关系,因此ClientInterviewClientInterview关系关系是是3NF3NF的的。o但但不是不是BCNFBCNF,因为决定因子不是候选键。,因为决定因子不是候选键。*75存在问题存在问题o当要改变职员当要改变职员“Z005Z005“在在20092009年年1010月月2020日的日的房间号时就需要更改关系中的两个元组。如房间号时就需要更改关系中的两个元组。如果只有一个元组更新了房间号,而另一个元果只有一个元组更新了房间号,而另一个元组没有更新,则会导致数据不一致。组没有更新,则会导致数据不一致。*76clientNointerviewDateinterviewTimestaffNoroomNoC0012009-10-2010:30Z005R101G0022009-10-2012:00Z005R101G0052009-10-2010:30Z002R102G0022009-10-2810:30Z005R1022009-10-202009-10-20Z005R101Z005R101分解分解ClientInterviewClientInterview关系关系*77clientNointerviewDateinterviewTimestaffNoC0012009-10-2010:30Z005G0022009-10-2012:00Z005G0052009-10-2010:30Z002G0022009-10-2810:30Z005staffNointerviewDateroomNoZ0052009-10-20R101Z0022009-10-20R102Z0052009-10-28R102clientNointerviewDateinterviewTimestaffNoroomNoC0012009-10-2010:30Z005R101G0022009-10-2012:00Z005R101G0052009-10-2010:30Z002R102G0022009-10-2810:30Z005R102分解分解3NF3NFBCNFBCNF可能产生的问题可能产生的问题o可能会丢失一些函数依赖,即经过分解可能会丢失一些函数依赖,即经过分解会将决定因子和由它决定的属性放置在会将决定因子和由它决定的属性放置在不同的关系中。不同的关系中。o这时要满足原关系中的函数依赖就非常这时要满足原关系中的函数依赖就非常困难,而且一些重要的约束也可能随之困难,而且一些重要的约束也可能随之丢失。丢失。o当发生这种情况时,最好的方法是将规当发生这种情况时,最好的方法是将规范化过程只进行到范化过程只进行到3NF3NF。*78问题(续)问题(续)o例:对例:对ClientInterviewClientInterview的分解的分解(clientNo,interviewDate,interviewTime,staffNo)(clientNo,interviewDate,interviewTime,staffNo)(staffNo,interviewDate,roomNo)(staffNo,interviewDate,roomNo)o丢失了函数依赖:丢失了函数依赖:(roomNo,interviewDate,interviewTime)(roomNo,interviewDate,interviewTime)staffNo,clientNo staffNo,clientNo (fd3fd3)o但如果不进行分解,在但如果不进行分解,在ClientInterviewClientInterview关关系中就会存在数据冗余。系中就会存在数据冗余。*79说明说明o在具体的实际应用过程中,到底应该将关系规范在具体的实际应用过程中,到底应该将关系规范化到化到3NF3NF,还是,还是BCNFBCNF,主要由,主要由3NF3NF的关系所产生的的关系所产生的数据冗余量与丢失函数依赖所造成的影响哪个更数据冗余量与丢失函数依赖所造成的影响哪个更重要决定。例如:重要决定。例如:o如果在实际情况中,每个职员如果在实际情况中,每个职员每天只会见一次客每天只会见一次客户户,则,则fd4fd4函数依赖不会导致数据冗余,因此无函数依赖不会导致数据冗余,因此无需将需将ClientInterviewClientInterview分解为分解为BCNFBCNF关系;关系;o如果实际情况是,每位职员如果实际情况是,每位职员每天每天可能可能多次会见客多次会见客户户,则,则fd4fd4函数依赖就会造成数据冗余,这时将函数依赖就会造成数据冗余,这时将ClientInterviewClientInterview分解为分解为BCNFBCNF可能会更好。可能会更好。*809.3.5 9.3.5 多值依赖与第四范式多值依赖与第四范式o尽管尽管BCNFBCNF消除了更新异常,但是通过对另消除了更新异常,但是通过对另一种称为一种称为多值依赖多值依赖的研究表明,这种类型的研究表明,这种类型的依赖也会导致数据冗余,从而造成操作的依赖也会导致数据冗余,从而造成操作异常。例如:异常。例如:商店号商店号 职工名职工名 顾客名顾客名*81storeNosNamecNameS002S002张强张强王萍王萍S002S002李清李清王萍王萍S002S002张强张强钱景钱景S002S002李清李清钱景钱景是是BCNFBCNF存在问题存在问题o这个关系中,在某商店工作的职工和在某这个关系中,在某商店工作的职工和在某商店买东西的顾客之间没有直接的联系。商店买东西的顾客之间没有直接的联系。o因此,为保证数据的一致性,必须建立新因此,为保证数据的一致性,必须建立新的元组将每个职工和顾客联系在一起。的元组将每个职工和顾客联系在一起。o例如,如果要为例如,如果要为“S002S002”商店新增一名职商店新增一名职工,为了保证关系的一致性就必须建立两工,为了保证关系的一致性就必须建立两个新的元组,每个元组对应一名顾客。这个新的元组,每个元组对应一名顾客。这是该关系是该关系更新异常更新异常的一个例子。的一个例子。*82示例示例o为为“S002S002”商店新增一名职工。商店新增一名职工。*83storeNosNamecNameS002S002张强张强王萍王萍S002S002李清李清王萍王萍S002S002张强张强钱景钱景S002S002李清李清钱景钱景S002S002王宏王宏王萍王萍S002S002王宏王宏钱景钱景原因是关系中存在原因是关系中存在多值依赖多值依赖。因为因为StoreStuffCustomerStoreStuffCustomer关系中存在两个一关系中存在两个一对多关系(商店和职工以及商店和顾客)对多关系(商店和职工以及商店和顾客)S002S002王宏王宏王萍王萍S002S002王宏王宏钱景钱景多值依赖多值依赖o为了解决为了解决BCNFBCNF的问题,的问题,R.FaginR.Fagin提出了提出了多多值依赖值依赖(MVDMVD)和第四范式()和第四范式(4NF4NF)的思想。)的思想。多值依赖是指一组值而不是单个值之间的多值依赖是指一组值而不是单个值之间的函数依赖。函数依赖。o定义:在关系模式定义:在关系模式RR中,如果对中,如果对每个每个X X值,都存在值,都存在一组一组Y Y值与其对应,而值与其对应,而Y Y的这组值又不以任何方式与的这组值又不以任何方式与Z Z相关,则称相关,则称Y Y多值依赖于多值依赖于X X,记为:,记为:X XY Y。*84示例示例StoreStuffCustomer(storeNo,sName,cName)StoreStuffCustomer(storeNo,sName,cName)存在多值依赖:存在多值依赖:storeNostoreNosNamesNamestoreNostoreNocNamecName*85注意注意o包含多值依赖的关系至少包含包含多值依赖的关系至少包含3 3个属性个属性o可能有包含两个或更多属性的表,这些可能有包含两个或更多属性的表,这些属性内部多值依赖于另一个属性,但这属性内部多值依赖于另一个属性,但这样的关系中不存在多值依赖,多值依赖样的关系中不存在多值依赖,多值依赖必须是数据间彼此相互独立。必须是数据间彼此相互独立。o函数依赖函数依赖是指一个属性的值对应另一个属是指一个属性的值对应另一个属性的性的唯一值唯一值,而,而多值依赖多值依赖是指一个属性的是指一个属性的值对应另一个属性的值对应另一个属性的多个值多个值。*86示例示例1 1 学生姓名学生姓名 图书管理员图书管理员 书名书名 借阅日期借阅日期*87studentNamelibrarianbookborrowDate李勇李勇张洪波张洪波数据库系统基础数据库系统基础2009-7-82009-7-8李勇李勇李长亮李长亮软件工程软件工程2009-7-82009-7-8王萍王萍李长亮李长亮计算机网络计算机网络2009-9-12009-9-1李勇李勇张洪波张洪波数据库系统基础数据库系统基础2009-11-12009-11-1张海张海李长亮李长亮计算机网络计算机网络2009-8-202009-8-20张海张海张洪波张洪波计算机网络计算机网络2009-11-22009-11-2张海张海王清王清数据通信基础数据通信基础2009-11-22009-11-2属性间不相互独立。不存在多值依赖,也不存在信息冗余。示例示例2 2 课程名课程名 学生名学生名 课程教材课程教材*88courseNamestudentNametextBooks数据库技术及应用数据库技术及应用李勇李勇数据库系统基础数据库系统基础数据库技术及应用数据库技术及应用李勇李勇数据库实践教程数据库实践教程数据库技术及应用数据库技术及应用王萍王萍数据库系统基础数据库系统基础数据库技术及应用数据库技术及应用王萍王萍数据库实践教程数据库实践教程电子工程电子工程李勇李勇数字电路数字电路电子工程电子工程李勇李勇自动控制原理自动控制原理通信基础通信基础张海张海计算机网络计算机网络通信基础通信基础张海张海数据通信基础数据通信基础 studentName和textBooks是相互独立的。存在多值依赖,studentName和textBooks是关于courseName的多值属性。有数据冗余。多值依赖的另一种描述多值依赖的另一种描述o给定给定X X的一个特定值,就有一组完全由的一个特定值,就有一组完全由X X值值独立决定的独立决定的Y Y值,并且不依赖于值,并且不依赖于R R中剩余属中剩余属性性Z Z的值。的值。o因此,只要出现因此,只要出现Y Y值不同但值不同但X X值相同的两行,值相同的两行,那么在那么在X X值相同值相同Z Z值不同的各行中,值不同的各行中,Y Y值一值一定重复。定重复。*89courseName studentName textBooks 数据数据库技技术及及应用用 李勇李勇 数据数据库系系统基基础 数据数据库技技术及及应用用 李勇李勇 数据数据库实践教程践教程 数据数据库技技术及及应用用 王萍王萍 数据数据库系系统基基础 数据数据库技技术及及应用用 王萍王萍 数据数据库实践教程践教程 XY平凡与非平凡多值依赖平凡与非平凡多值依赖o对于关系对于关系R R中的一个多值依赖中的一个多值依赖A AB B,如果:如果:n(a a)B B是是A A的子集,或者的子集,或者n(b b)A AB=RB=R,o则多值依赖是则多值依赖是平凡的平凡的。o如果(如果(a a)和()和(b b)都不满足,则是)都不满足,则是非平非平凡的凡的。o非平凡多值依赖会引起数据冗余。非平凡多值依赖
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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