数据库范式课堂课件.ppt
1AnIntroductiontoDatabaseSystem 广东工业大学广东工业大学 计算机学院计算机学院数据库系统概论数据库系统概论AnIntroductiontoDatabaseSystem第六章第六章 关系数据理论关系数据理论2AnIntroductiontoDatabaseSystemv内容概述内容概述详细讲解关系数据理论,主要是关系数据库规范化理论。包括关系数据库逻辑设计可能出现的问题,数据依赖的基本概念(包括,函数依赖、平凡函数依赖、非平凡的函数依赖、部分函数依赖、完全函数依赖、传递函数依赖的概念;码、候选码、外码的概念;多值依赖的概念),范式的概念、1NF、2NF、3NF、BCNF、4NF的概念和判定方法。数据依赖的Armstrong公理系统。本章内容分为基本要求部分(概论6.1-6.3)和高级部分(概论6.4)。前者是计算机大学本科学生应该掌握的内容。后者是研究生应该学习掌握的内容。本章目标本章目标关系数据理论既是关系数据库的重要理论基础也是数据库逻辑设计的理论指南和有力工具。要掌握规范化理论和优化数据库模式设计的方法规范化理论和优化数据库模式设计的方法。3AnIntroductiontoDatabaseSystemv重点:重点:了解什么是一个“不好”的数据库模式。什么是模式的插入异常和删除异常。规范化理论的重要意义。牢固掌握数据依赖的基本概牢固掌握数据依赖的基本概念,范式的概念,从念,范式的概念,从1NF到到4NF的定义,规范化的含义和作用的定义,规范化的含义和作用。需要举一反三的:四个范式的理解与应用,各个级别范式中存在的问题(插入异常、删除异常、数据冗余)和解决方法。v难点:难点:能够根据应用语义,完整地写出关系模式的数据依赖集合,并能够根据应用语义,完整地写出关系模式的数据依赖集合,并能根据数据依赖分析某一个关系模式属于第几范式能根据数据依赖分析某一个关系模式属于第几范式。各个级别范式的关系及其证明。本章内容的理论性较强。要通过具体例子和习题练习理解和掌握理论知识。4AnIntroductiontoDatabaseSystem第六章第六章关系数据理论关系数据理论6.1问题的提出问题的提出6.2规范化规范化6.3数据依赖的公理系统数据依赖的公理系统*6.4模式的分解模式的分解6.5小结小结5AnIntroductiontoDatabaseSystem6.1问题的提出问题的提出关系数据库逻辑设计针对具体问题,如何构造一个适合于它的数据模式数据库逻辑设计的工具关系数据库的规范化理论6AnIntroductiontoDatabaseSystem问题的提出问题的提出一、概念回顾一、概念回顾二、关系模式的形式化定义二、关系模式的形式化定义三、什么是数据依赖三、什么是数据依赖四、关系模式的简化定义四、关系模式的简化定义五、数据依赖对关系模式影响五、数据依赖对关系模式影响7AnIntroductiontoDatabaseSystem一、概念回顾一、概念回顾v关系关系v关系模式关系模式v关系数据库关系数据库v关系数据库的模式关系数据库的模式8AnIntroductiontoDatabaseSystem二、关系模式的形式化定义二、关系模式的形式化定义关系模式由五部分组成,即它是一个五元组:R(U,D,DOM,F)R:关系名U:组成该关系的属性名集合D:属性组U中属性所来自的域DOM:属性向域的映象集合F:属性间数据的依赖关系集合属性间数据的依赖关系集合9AnIntroductiontoDatabaseSystem三、什么是数据依赖三、什么是数据依赖?1.完整性约束的表现形式完整性约束的表现形式v限定属性取值范围限定属性取值范围:例如学生成绩必须在0-100之间v定义属性值间的相互关连定义属性值间的相互关连(主要体现于值的相等与否),这就是数据依赖,它是数据库模式设计的关键10AnIntroductiontoDatabaseSystem什么是数据依赖(续)什么是数据依赖(续)2.数据依赖数据依赖v一个关系内部一个关系内部属性与属性之间属性与属性之间的约束关系的约束关系v现实世界现实世界,一个事物内部属性间相互联系的抽象一个事物内部属性间相互联系的抽象v数据内在的性质v语义的体现11AnIntroductiontoDatabaseSystem什么是数据依赖(续)什么是数据依赖(续)3.数据依赖的类型共有三种共有三种:函数依赖(函数依赖(FunctionalDependency,简记为,简记为FD)多值依赖(多值依赖(MultivaluedDependency,简记为,简记为MVD)连接依赖(连接依赖(JoinDependency,简记为简记为JD)其中最重要的是函数依赖和多值依赖。其中最重要的是函数依赖和多值依赖。12AnIntroductiontoDatabaseSystem四、关系模式的简化表示四、关系模式的简化表示v关系模式R(U,D,DOM,F)简化为一个三元组:R(U,F)v当且仅当U上的一个关系r满足F时,r称为关系模式R(U,F)的一个关系13AnIntroductiontoDatabaseSystem五、五、数据依赖对关系模式的影响数据依赖对关系模式的影响例例1建立一个描述学校教务的表:建立一个描述学校教务的表:学生的学号(Sno)、所在系(Sdept)、系主任姓名(Mname)、课程名(Cname)、成绩(Grade)单一的关系模式:StudentU Sno,Sdept,Mname,Cname,Grade 问题:什么样的关系模式是一个好的关系模式?问题:什么样的关系模式是一个好的关系模式?14AnIntroductiontoDatabaseSystem数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)根据根据语义分析语义分析属性组属性组U上的一组函数依赖上的一组函数依赖F:FSnoSdept,SdeptMname,(Sno,Cname)Grade SnoCnameSdeptMnameGrade15AnIntroductiontoDatabaseSystem关系模式关系模式Student中存在的问题中存在的问题1.数据冗余太大2.更新异常(Update Anomalies)3.插入异常(Insertion Anomalies)4.删除异常(Deletion Anomalies)16AnIntroductiontoDatabaseSystem数据依赖对关系模式的影响(续)数据依赖对关系模式的影响(续)结论:结论:nStudent关系模式不是一个好的模式。关系模式不是一个好的模式。n“好好”的模式:不会发生插入异常、删除异常、更新的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少异常,数据冗余应尽可能少原因:原因:由存在于模式中的由存在于模式中的某些数据依赖某些数据依赖引起的引起的解决方法:解决方法:通过通过分解关系模式分解关系模式来消除其中不合适的数据依赖来消除其中不合适的数据依赖17AnIntroductiontoDatabaseSystem分解关系模式分解关系模式v把这个单一模式分成把这个单一模式分成3个关系模式:个关系模式:1.S(Sno,Sdept,SnoSdept);2.SC(Sno,Cno,Grade,(,(Sno,Cno)Grade);3.DEPT(Sdept,Mname,SdeptMname)18AnIntroductiontoDatabaseSystem第六章第六章关系数据理论关系数据理论6.1问题的提出问题的提出6.2规范化规范化6.3数据依赖的公理系统数据依赖的公理系统*6.4模式的分解模式的分解6.5小结小结19AnIntroductiontoDatabaseSystem6.2规范化规范化规范化理论规范化理论正是用来正是用来评价、改造关系模式评价、改造关系模式,通过分解关系模式通过分解关系模式来消除其中不合适的数据依赖来消除其中不合适的数据依赖,以解决插入异常、删除异,以解决插入异常、删除异常、更新异常和数据冗余问题。常、更新异常和数据冗余问题。20AnIntroductiontoDatabaseSystem6.2规范化规范化6.2.1函数依赖函数依赖6.2.2码码6.2.3范式范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖多值依赖6.2.84NF6.2.9规范化小结规范化小结21AnIntroductiontoDatabaseSystem6.2.1函数依赖函数依赖v函数依赖函数依赖平凡函数依赖平凡函数依赖与与非平凡函数依赖非平凡函数依赖完全函数依赖完全函数依赖与与部分函数依赖部分函数依赖传递函数依赖传递函数依赖22AnIntroductiontoDatabaseSystem引例引例v关系模式内部各属性间的依赖关系关系模式内部各属性间的依赖关系在在student(sno,sname,sex,dept)中,姓名可能重名。中,姓名可能重名。属性属性sno、sname之间存在关系:之间存在关系:sname=f(sno)或或snosname此时,任意两个元组,如果在此时,任意两个元组,如果在sno分量上的值不同,则在分量上的值不同,则在sname分量上的值也一定不相同。分量上的值也一定不相同。类似的关系在其它元组中还存在,如类似的关系在其它元组中还存在,如snosname、snodept等。等。23AnIntroductiontoDatabaseSystem一、函数依赖一、函数依赖定义定义6.1设设R(U)是一个属性集是一个属性集U上的关系模式,上的关系模式,X和和Y是是U的的子集子集。若对于若对于R(U)的的任意任意一个可能的关系一个可能的关系r,r中不可能存在两中不可能存在两个元组在个元组在X上的属性值相等,上的属性值相等,而在而在Y上的属性值不等上的属性值不等,则称则称“X函数确定函数确定Y”或或“Y函数依赖于函数依赖于X”,记作,记作XY。即:由即:由X上的值可以确定上的值可以确定Y上的值。上的值。思思考考:为为什什么么概概念念不不表表述述为为“r r中中两两个个元元组组如如果果在在X X上上的的属属性性值值相相 等,等,则在则在Y Y上的属性值也相等上的属性值也相等”?24AnIntroductiontoDatabaseSystem说明说明1.关系模式需要满足的关系模式需要满足的即所有关系实例即所有关系实例均要满足,而不是某一关系满足均要满足,而不是某一关系满足2.语义范畴语义范畴的概念的概念3.数据库数据库设计者可以设计者可以对现实世界作对现实世界作强制的规定强制的规定如规定:姓名不能重名等如规定:姓名不能重名等25AnIntroductiontoDatabaseSystem二、平凡函数依赖与非平凡函数依赖二、平凡函数依赖与非平凡函数依赖在关系模式在关系模式R(U)中,对于中,对于U的的子集子集X和和Y,如果如果XY,但,但Y X,则称,则称XY是非平凡的函数依赖是非平凡的函数依赖若若XY,但,但Y X,则称则称XY是是平凡的函数依赖平凡的函数依赖v例:在关系例:在关系SC(Sno,Cno,Grade)中,中,非平凡函数依赖:非平凡函数依赖:(Sno,Cno)Grade平凡函数依赖:平凡函数依赖:(Sno,Cno)Sno(Sno,Cno)CnoP173约定:约定:若不特别声明,总是讨论若不特别声明,总是讨论非非平凡函数依赖平凡函数依赖。26AnIntroductiontoDatabaseSystem平凡函数依赖与非平凡函数依赖(续)平凡函数依赖与非平凡函数依赖(续)若若XY,则,则X称为这个函数依赖的决定属性组,也称为这个函数依赖的决定属性组,也称为称为决定因素决定因素(Determinant)。)。若若XY,YX,则记作,则记作XY。若若Y不函数依赖于不函数依赖于X,则记作,则记作XY。27AnIntroductiontoDatabaseSystem三、完全函数依赖与部分函数依赖三、完全函数依赖与部分函数依赖定义定义6.2在在R(U)中,如果中,如果XY,并且对于,并且对于X的的任何一个真任何一个真子集子集X,都有,都有XY,则称则称Y对对X完全函数依赖完全函数依赖,记作,记作XFY。若若XY,但,但Y不完全函数依赖于不完全函数依赖于X,则称,则称Y对对X部分函数部分函数依赖依赖,记作,记作XPY。思考:平凡函数依赖与部分函数依赖之间的关系?思考:平凡函数依赖与部分函数依赖之间的关系?28AnIntroductiontoDatabaseSystem完全函数依赖与部分函数依赖(续)完全函数依赖与部分函数依赖(续)例例1中中(Sno,Cno)Grade是完全函数依赖,是完全函数依赖,(Sno,Cno)Sdept是部分函数依赖:是部分函数依赖:因为因为SnoSdept成立,且成立,且Sno是(是(Sno,Cno)的真子集)的真子集FP29AnIntroductiontoDatabaseSystem四、传递函数依赖四、传递函数依赖定义定义6.3在在R(U)中,如果中,如果XY,(Y X),YX,YZ,Z Y则称则称Z对对X传递函数依赖。记为:传递函数依赖。记为:XZ注注:1)Y X:强调是非平凡函数:强调是非平凡函数依赖,进而排除了部分函数依赖。依赖,进而排除了部分函数依赖。2)YX:如果:如果YX,即即XY,则,则Z直接依赖于直接依赖于X。3)Z Y:例例:在关系在关系Std(Sno,Sdept,Mname)中,有:中,有:SnoSdept,SdeptMnameMname传递函数依赖于传递函数依赖于Sno传递传递30AnIntroductiontoDatabaseSystem6.2规范化规范化6.2.1函数依赖函数依赖6.2.2码码6.2.3范式范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖多值依赖6.2.84NF6.2.9规范化小结规范化小结31AnIntroductiontoDatabaseSystem6.2.2码码定义定义6.4设设K为为R中的中的属性或属性组合属性或属性组合。若。若KU,则则K称为称为R的的侯选码侯选码(CandidateKey)。)。若候选码多于一个,则选定其中的一个做为主码(PrimaryKey)。F注意:注意:KU的理解。的理解。F【引引理理】XAAA成成立立的的充充要要条条件件是是XAi成成立立。(i=1、2n)32AnIntroductiontoDatabaseSystem码(续)码(续)v主属性与非主属性主属性与非主属性包含在任何一个候选码中的属性,称为主属性主属性(Primeattribute)不包含在任何码中的属性称为非主属性非主属性(Nonprimeattribute)或非码属性(Non-keyattribute)v全码全码整个属性组是码,称为全码全码(All-key)33AnIntroductiontoDatabaseSystem码(续)码(续)例2关系模式S(Sno,Sdept,Sage),单个属性Sno是码,SC(Sno,Cno,Grade)中,(Sno,Cno)是码例3关系模式R(P,W,A)P:演奏者W:作品A:听众一个演奏者可以演奏多个作品某一作品可被多个演奏者演奏听众可以欣赏不同演奏者的不同作品码为(P,W,A),即All-Key34AnIntroductiontoDatabaseSystem外部码外部码定义定义6.5关系模式关系模式R 中属性或属性组中属性或属性组X 并非并非R的码,但的码,但X 是另一个关系模式的码,则称是另一个关系模式的码,则称X 是是R 的的外部码外部码(Foreignkey)也称外码也称外码v如在SC(Sno,Cno,Grade)中,Sno不是码,但Sno是关系模式S(Sno,Sdept,Sage)的码,则Sno是关系模式SC的外部码v主码与外部码一起提供了表示关系间联系的手段35AnIntroductiontoDatabaseSystem补充:由函数依赖求候选码补充:由函数依赖求候选码v属性根据函数依赖集可分成四类:L类:仅出现在类:仅出现在F中函数依赖左部的属性。中函数依赖左部的属性。R类:仅出现在类:仅出现在F中函数依赖右部的属性。中函数依赖右部的属性。LR类:函数依赖左右两边都出现的属性。类:函数依赖左右两边都出现的属性。N类:函数依赖左右两边都不出现的属性。类:函数依赖左右两边都不出现的属性。【定理定理】对于给定的关系模式及其函数依赖集对于给定的关系模式及其函数依赖集F,X UX是是L类属性,则类属性,则X必定为任一候选码的成员;必定为任一候选码的成员;X是是R类属性,则类属性,则X必定不在任何候选码中;必定不在任何候选码中;X是是LR类属性,则类属性,则X可能在某一候选码中,也可能不在任一候选码中。可能在某一候选码中,也可能不在任一候选码中。若若X是是N类属性,则类属性,则X必定在必定在R的任一候选码中;的任一候选码中;36AnIntroductiontoDatabaseSystemv例:已知关系模式的函数依赖集例:已知关系模式的函数依赖集F,求关系模式的候选码。,求关系模式的候选码。1)设关系模式为)设关系模式为R,UA,B,C,D,E,P,FAD,ED,DB,BCD,DCA2)关系模式)关系模式W(I,J,K,X,Y)FIJ,IK,KX,XY3)设关系模式为)设关系模式为R,UA,B,C,D,E,F,FAF,BCD,DC,BE,CA37AnIntroductiontoDatabaseSystem6.2规范化规范化6.2.1函数依赖函数依赖6.2.2码码6.2.3范式范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖多值依赖6.2.84NF6.2.9规范化小结规范化小结38AnIntroductiontoDatabaseSystem6.2.3范式范式1.范式是符合某一种级别的关系模式的集合。NF:NormalForm2.范式针对的是关系模式,而非某个时刻的关系范式针对的是关系模式,而非某个时刻的关系。3.范式的种类:第一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF)39AnIntroductiontoDatabaseSystem6.2.3范式范式v各种范式之间存在联系:v某一关系模式R为第n范式,可简记为RnNF。v一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。40AnIntroductiontoDatabaseSystem6.2规范化规范化6.2.1函数依赖函数依赖6.2.2码码6.2.3范式范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖多值依赖6.2.84NF6.2.9规范化小结规范化小结41AnIntroductiontoDatabaseSystem6.2.42NFv1NF的定义的定义如果一个关系模式如果一个关系模式R的所有属性都是的所有属性都是不可分的基本数据项不可分的基本数据项,则则R 1NF;v第一范式是对关系模式的最起码的要求。第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库。不满足第一范式的数据库模式不能称为关系数据库。v但是满足第一范式的关系模式并不一定是一个好的关系模但是满足第一范式的关系模式并不一定是一个好的关系模式。式。42AnIntroductiontoDatabaseSystem2NF(续)(续)例例4关系模式关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade)Sloc为学生住处,假设每个系的学生住在同一个地方为学生住处,假设每个系的学生住在同一个地方v函数依赖包括:函数依赖包括:(Sno,Cno)FGradeSnoSdept(Sno,Cno)PSdeptSnoSloc(Sno,Cno)PSlocSdeptSloc43AnIntroductiontoDatabaseSystem2NF(续)(续)vS-L-C的码为(Sno,Cno)vS-L-C满足第一范式。v非主属性非主属性Sdept和Sloc部分部分函数依赖于码码(Sno,Cno)SnoCnoGradeSdeptSlocS-L-C虚线表示部分函数依赖虚线表示部分函数依赖44AnIntroductiontoDatabaseSystemS-L-C不是一个好的关系模式(续)不是一个好的关系模式(续)(1)插入异常插入异常(2)删除异常删除异常(3)数据冗余度大数据冗余度大(4)修改复杂修改复杂45AnIntroductiontoDatabaseSystemS-L-C不是一个好的关系模式(续)不是一个好的关系模式(续)v原因原因非主属性非主属性Sdept、Sloc部分函数依赖部分函数依赖于码。于码。v解决方法:解决方法:模式分解模式分解S-L-C分解为两个关系模式,以消除这些部分函数依赖分解为两个关系模式,以消除这些部分函数依赖SC(Sno,Cno,Grade)S-L(Sno,Sdept,Sloc)46AnIntroductiontoDatabaseSystem2NF(续)(续)函数依赖图:SnoCnoGradeSCS-LSnoSdeptSlocv关系模式SC的码为(Sno,Cno)v关系模式S-L的码为Snov这样非主属性对码都是完全函数依赖47AnIntroductiontoDatabaseSystem2NF(续)(续)v2NF的定义定义定义6.6若若R 1NF,且每一个且每一个非主属性非主属性完全完全函数依赖于码,函数依赖于码,则则R 2NF。例:S-L-C(Sno,Sdept,Sloc,Cno,Grade)1NFS-L-C(Sno,Sdept,Sloc,Cno,Grade)2NFS-L-C分解为两个关系模式以后:SC(Sno,Cno,Grade)2NF S-L(Sno,Sdept,Sloc)2NF48AnIntroductiontoDatabaseSystem2NF(续)(续)v有关2NF结论:1.采用投影分解法将一个1NF的关系分解为多个2NF的关系,可以在一定程度上减轻一定程度上减轻原1NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。2.将一个1NF关系分解为多个2NF的关系,并不能完全消并不能完全消除除关系模式中的各种异常情况和数据冗余。49AnIntroductiontoDatabaseSystem6.2规范化规范化6.2.1函数依赖函数依赖6.2.2码码6.2.3范式范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖多值依赖6.2.84NF6.2.9规范化小结规范化小结50AnIntroductiontoDatabaseSystem6.2.53NFv3NF的定义定义定义6.7关系模式关系模式R中若不存在这样的中若不存在这样的码码X、属性属性组组Y及及非主属性非主属性Z(Z Y),使得使得XY,YZ成立,成立,YX,则称,则称R 3NF。结论:若R3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。51AnIntroductiontoDatabaseSystem3NF(续)(续)例:2NF关系模式S-L(Sno,Sdept,Sloc)中函数依赖:SnoSdeptSdeptSnoSdeptSloc可得:SnoSloc,即S-L中存在非主属性对码的传递函数依赖,S-L3NF传递52AnIntroductiontoDatabaseSystem3NF(续)(续)函数依赖图:S-LSnoSdeptSlocT53AnIntroductiontoDatabaseSystem3NF(续)(续)v解决方法采用投影分解法,把S-L分解为两个关系模式分解为两个关系模式,以消以消除传递函数依赖除传递函数依赖:S-D(Sno,Sdept)D-L(Sdept,Sloc)S-D的码为Sno,D-L的码为Sdept。n分解后的关系模式S-D与D-L中不再存在传递依赖54AnIntroductiontoDatabaseSystem3NF(续)(续)S-D的码为Sno,D-L的码为SdeptSnoSdeptS-DSdeptSlocD-LvS-L(Sno,Sdept,Sloc)2NFS-L(Sno,Sdept,Sloc)3NFS-D(Sno,Sdept)3NFD-L(Sdept,Sloc)3NF55AnIntroductiontoDatabaseSystem2NF与与3NF间的关系?间的关系?v证明:若R3NF,则必R2NF。注:该例题很好的揭示了注:该例题很好的揭示了3NF定义与定义与2NF之间的关系。之间的关系。56AnIntroductiontoDatabaseSystem3NF(续)(续)v有关3NF的结论:1.采用投影分解法将一个2NF的关系分解为多个3NF的关系,可以在一定程度上减缓一定程度上减缓原2NF关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。2.将一个2NF关系分解为多个3NF的关系后,仍然不能完全消仍然不能完全消除除关系模式中的各种异常情况和数据冗余。57AnIntroductiontoDatabaseSystem6.2规范化规范化6.2.1函数依赖函数依赖6.2.2码码6.2.3范式范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖多值依赖6.2.84NF6.2.9规范化小结规范化小结58AnIntroductiontoDatabaseSystem6.2.6BC范式(范式(BCNF)v定义定义6.8关系模式关系模式R 1NF,若,若XY且且Y X时时X必含有码必含有码,则,则R BCNF。v等价于:等价于:每一个每一个非平凡函数依赖非平凡函数依赖中,决定属性因素都包含码。中,决定属性因素都包含码。59AnIntroductiontoDatabaseSystemBCNF(续)(续)v有关有关BCNF的结论:的结论:1.所有非主属性对每一个码都是完全函数依赖;所有非主属性对每一个码都是完全函数依赖;2.所有的主属性对每一个所有的主属性对每一个不包含它的码不包含它的码,也是完全函数,也是完全函数依赖;依赖;即:消除了主属性对即:消除了主属性对不包含它的码不包含它的码的的部分函数依赖;部分函数依赖;思考:思考:BCNF中是否存在中是否存在主属性对(主属性对(不包含它的不包含它的)码)码的的传传递函数依赖?递函数依赖?3.没有任何属性完全函数依赖于非码的任何一组属性;没有任何属性完全函数依赖于非码的任何一组属性;vR BCNFR 3NF充分不必要60AnIntroductiontoDatabaseSystemBCNF(续)(续)例例5请判别关系模式请判别关系模式SC(Sno,Cno,Grade)最高属于哪一级范式?)最高属于哪一级范式?A.C 3NFC.C 1NFB.C BCNFD.C 2NF例例6请判别关系模式请判别关系模式S(Sno,Sname,Sdept,Sage)最高属于哪一级范式)最高属于哪一级范式?1.假定假定S有两个码有两个码Sno,Sname;2.假定假定S有一个码有一个码Sno;A.C 3NFC.C 1NFB.C BCNFD.C 2NF61AnIntroductiontoDatabaseSystemBCNF(续)(续)例例7关系模式关系模式SJP(S,J,P)函数依赖:函数依赖:(S,J)P;(J,P)SA.SJP 3NF,B.SJP BCNF分析:(分析:(S,J)与()与(J,P)都可以作为候选码,属性相交)都可以作为候选码,属性相交62AnIntroductiontoDatabaseSystemBCNF(续)(续)例例8在关系模式在关系模式STJ(S,T,J)中,)中,S表示学生,表示学生,T表表示教师,示教师,J表示课程。问表示课程。问STJ属于几范式?属于几范式?【分析分析】函数依赖:(S,J)T,(S,T)J,TJ(S,J)和(S,T)都是候选码63AnIntroductiontoDatabaseSystemBCNF(续)(续)JSJTSTSTJ中的函数依赖中的函数依赖64AnIntroductiontoDatabaseSystemBCNF(续)(续)vSTJ3NF没有任何非主属性对码传递依赖或部分依赖vSTJBCNFT是决定因素,T不包含码65AnIntroductiontoDatabaseSystemBCNF(续)(续)v解决方法?v将STJ分解为二个关系模式:ST(S,T)BCNF,TJ(T,J)BCNF没有没有任何属性任何属性对码的部分函数依赖和传递函数依赖。对码的部分函数依赖和传递函数依赖。SJSTTJTJ66AnIntroductiontoDatabaseSystem3NF与与BCNF的关系的关系v定理:如果定理:如果R BCNF,则一定有,则一定有R 3NF。证明:证明:由于若由于若R BCNF,则,则R的所有非主属性都完全函数依的所有非主属性都完全函数依赖于每一个候选码赖于每一个候选码,因此必有因此必有R 2NF。由于由于R 2NF,若,若R 3NF,则按,则按3NF定义,一定存在非主定义,一定存在非主属性对码的传递依赖。属性对码的传递依赖。即存在即存在:R的码的码X,属性组,属性组Y,以及,以及非主属性非主属性Z(Z Y),使得),使得XY,YZ,YX成立。成立。由由YZ,按,按BCNF定义,定义,Y含有码,于是含有码,于是YX成立,这成立,这与与YX矛盾。所以矛盾。所以R 3NF。67AnIntroductiontoDatabaseSystem3NF与与BCNF的关系的关系【小结小结】若若R BCNF,按定义排除了,按定义排除了任何属性任何属性对对码码的的传递依赖传递依赖与与部部分依赖分依赖;所以;所以R 3NF。v若若R 3NF,则,则R未必属于未必属于BCNF。v【定理定理】如果如果R 3NF且且R有唯一的候选码,则必有有唯一的候选码,则必有R BCNF。证明:设证明:设R 3NF且且R有唯一候选键有唯一候选键X,则对于,则对于R的任何一个函数依赖的任何一个函数依赖XY,必有,必有X包含于包含于X(否则存在传递函数依赖)(否则存在传递函数依赖)。即对即对R的任何一个函数依赖的任何一个函数依赖XY,X都含候选码,故都含候选码,故R BCNF。有用的结论有用的结论:如果如果R 3NF,且,且R只有一个候选码,只有一个候选码,则则R必属于必属于BCNF。68AnIntroductiontoDatabaseSystem3NF与与BCNF的关系的关系a)RBCNFR3NFv如果R3NF,且R只有一个候选码RBCNFR3NF充分不必要充分必要69AnIntroductiontoDatabaseSystem练习题练习题v1.关系模式由关系模式由3NF转化为转化为BCNF是为了消除是为了消除。答:主属性对码的传递依赖和部分依赖。答:主属性对码的传递依赖和部分依赖。v2.设关系模式设关系模式R是全码,则是全码,则R可达到第几范式?可达到第几范式?答:答:4NF。70AnIntroductiontoDatabaseSystemv3.关系关系R如右,则如右,则R至少属于(至少属于()。)。A.1NFB.2NFC.3NFD.BCNFv4.任何一个二元关系都是任何一个二元关系都是BCNF这句话对吗?这句话对吗?答案答案:是是BCNF。二元关系中或为全为主属性,或为一个单。二元关系中或为全为主属性,或为一个单属性为主属性。属性为主属性。ABa1b1a2b271AnIntroductiontoDatabaseSystem请判别以下结论是否正确?请判别以下结论是否正确?函数依赖函数依赖XY给出了数据库中属性间的某种联系:给出了数据库中属性间的某种联系:从从X的值应该知道与之的值应该知道与之联系的惟一联系的惟一Y值值。若若X不含码,则有麻烦了(不含码,则有麻烦了(BCNF)。)。2.码是一个元组区别于其他元组的依据,同时也是一个码是一个元组区别于其他元组的依据,同时也是一个元组赖以存在的条件元组赖以存在的条件。3.在一个关系中,不可能存在两个不同的元组在码属性上取值相同,也不可在一个关系中,不可能存在两个不同的元组在码属性上取值相同,也不可能存在码或码的一部分为空值的元组。能存在码或码的一部分为空值的元组。4.若某关系模式的属性间有函数依赖若某关系模式的属性间有函数依赖XY,而,而X又不包含码,那么在具有相又不包含码,那么在具有相同同X值的所有元组中,某个特定的值的所有元组中,某个特定的Y值就会重复出现,这就产生了值就会重复出现,这就产生了数据冗余数据冗余。着重理解着重理解72AnIntroductiontoDatabaseSystem5.随之而来的是随之而来的是更新异常更新异常问题;某个问题;某个X值与某个特定的值与某个特定的Y值相联系,这值相联系,这是数据库中应存储的信息,但由于是数据库中应存储的信息,但由于X不含码,这种不含码,这种X与与Y相联系的信相联系的信息可能因为码或码的一部分为空值而不能作为一个合法的元组在数息可能因为码或码的一部分为空值而不能作为一个合法的元组在数据库中存在,这是据库中存在,这是插入异常插入异常或或删除异常删除异常问题。问题。6.第二范式、第三范式和第二范式、第三范式和Boyce-Codd范式就是不同程度地限制关系范式就是不同程度地限制关系模式中模式中X不包含码的函数依赖不包含码的函数依赖XY的存在。的存在。73AnIntroductiontoDatabaseSystem补补充充v函数依赖函数依赖反映了反映了“属性间属性间”的的联系联系。v属性间的属性间的联系联系决定决定函数依赖函数依赖关系关系。设设X、Y均是均是U的子集:的子集:如果如果X、Y间是间是1:1关系,则存在函数依赖关系,则存在函数依赖XY如果如果X、Y间是间是1:n关系,则存在函数依赖:关系,则存在函数依赖:XY或或YX。(多方为决定因素)(多方为决定因素)如果如果X、Y间是间是m:n关系,则不存在函数依赖。关系,则不存在函数依赖。74AnIntroductiontoDatabaseSystem6.2规范化规范化6.2.1函数依赖函数依赖6.2.2码码6.2.3范式范式6.2.42NF6.2.53NF6.2.6BCNF6.2.7多值依赖多值依赖6.2.84NF6.2.9规范化小结规范化小结75AnIntroductiontoDatabaseSystem6.2.7多值依赖多值依赖例例9有关系模式有关系模式Teaching(C,T,B),),语言:教学(课程,教师,参考书)语言:教学(课程,教师,参考书)某某一门课程一门课程由多个教师讲授,他们使用由多个教师讲授,他们使用相同的一相同的一套参考书套参考书。每个教员可以讲授多门课程,每种参考书。每个教员可以讲授多门课程,每种参考书可以供多门课程使用。可以供多门课程使用。76AnIntroductiontoDatabaseSystem课课程程C教教员员T参参考考书书B物理物理数学数学计算数学计算数学李李勇勇王王军军李李勇勇张张平平张张平平周周峰峰普通物理学普通物理学光学原理光学原理物理习题集物理习题集数学分析数学分析微分方程微分方程高等代数高等代数数学分析数学分析.多值依赖(续)多值依赖(续)v非规范化关系描述非规范化关系描述77AnIntroductiontoDatabaseSystem普通物理学普通物理学光学原理光学原理物理习题集物理习题集普通物理学普通物理学光学原理光学原理物理习题集物理习题集数学分析数学分析微分方程微分方程高等代数高等代数数学分析数学分析微分方程微分方程高等代数高等代数李李勇勇李李勇勇李李勇勇王王军军王王军军王王军军李李勇勇李李勇勇李李勇勇张张平平张张平平张张平平物物理理物物理理物物理理物物理理物物理理物物理理数数学学数数学学数数学学数数学学数数学学数数学学参考书B教员T课程C多值依赖(续)多值依赖(续)v用二维表表示 关系 Teaching78AnIntroductio