资源预览内容
第1页 / 共73页
第2页 / 共73页
第3页 / 共73页
第4页 / 共73页
第5页 / 共73页
第6页 / 共73页
第7页 / 共73页
第8页 / 共73页
第9页 / 共73页
第10页 / 共73页
亲,该文档总共73页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第7 7章章 关系数据库规范化理论关系数据库规范化理论7.1函数依赖函数依赖7.2关系规范化关系规范化7.3关系模式的分解准则关系模式的分解准则1第第7 7章章 关系数据库规范化理论关系数据库规范化理论o数据库设计是数据库应用领域中的主要研究课题。数据库设计是数据库应用领域中的主要研究课题。 o关系数据库规范化理论就是数据库设计的一个理关系数据库规范化理论就是数据库设计的一个理论指南。论指南。 o规范化理论研究的是关系模式中各属性之间的数规范化理论研究的是关系模式中各属性之间的数据依赖关系及其对关系模式性能的影响据依赖关系及其对关系模式性能的影响 ;以及;以及判断关系模式好坏的理论标准判断关系模式好坏的理论标准范式。范式。o如如何何构构造造一一个个合合适适的的关关系系模模式式,应应构构造造几几个个关关系系模模式式,每每个个关关系系模模式式由由哪哪些些属属性性组组成成等等,都都是是数数据据库库设设计计问问题题,确确切切地地讲讲是是关关系系数数据据库库的的逻逻辑辑设设计问题。计问题。2第第7 7章章 关系数据库规范化理论关系数据库规范化理论o关系模式的形式化定义关系模式的形式化定义一个完整的关系模式由五部分组成,即它是一个一个完整的关系模式由五部分组成,即它是一个五元组:五元组:R(U,D,DOM,F)R:关系名关系名U:组成该关系的属性名集合组成该关系的属性名集合D:属性组属性组U中属性所来自的域中属性所来自的域DOM:属性向域的映象集合属性向域的映象集合F:属性间数据的依赖关系集合属性间数据的依赖关系集合3第第7 7章章 关系数据库规范化理论关系数据库规范化理论o什么是数据依赖什么是数据依赖n一个关系内部属性与属性之间的约束关系一个关系内部属性与属性之间的约束关系n数据依赖的类型数据依赖的类型o函数依赖(函数依赖(FunctionalDependency,简记为简记为FD)o多值依赖(多值依赖(MultivaluedDependency,简记为简记为MVD)o其他其他4第第7 7章章 关系数据库规范化理论关系数据库规范化理论o关系模式的简化表示关系模式的简化表示关系模式五元组关系模式五元组R(U,D,DOM,F)可简化为一个三元组:可简化为一个三元组:R(U,F)o当且仅当属性组当且仅当属性组U上的一个关系上的一个关系r满足函数依满足函数依赖关系赖关系F时,时,r称为称为关系模式关系模式R(U,F)的一的一个个关系。关系。57.1函数依赖函数依赖o省省=f(城市城市)n只要给出一个具体的城市值只要给出一个具体的城市值n就会有唯一一个省值和它对应就会有唯一一个省值和它对应o如如“武汉市武汉市”在在“湖北省湖北省”,这里,这里“城市城市”是自变量是自变量X,“省省”是因变量或函数值是因变量或函数值Y。o把把X函数决定函数决定Y,或或Y函数依赖于函数依赖于X表示为:表示为:XY67.1函数依赖(续)函数依赖(续)o设有关系模式设有关系模式R(A1,A2,An)nX和和Y均为均为A1,A2,An的子集的子集nr是是R的任一具体关系的任一具体关系nt1、t2是是r中的任意两个元组中的任意两个元组o如果由如果由t1X=t2X可以推导出可以推导出t1Y=t2Y,则称则称X函数决定函数决定Y,或或Y函数依赖于函数依赖于X,记为记为XY。77.1函数依赖(续)函数依赖(续)o例:例:Student(Sno,SName,Sdept,Sage)SnoSNameSnoSdeptSnoSageo例:例:SC(Sno,Cno,Grade)(Sno,Cno)Grade87.1.2 7.1.2 一些术语和符号一些术语和符号o平凡函数依赖与非平凡函数依赖平凡函数依赖与非平凡函数依赖在关系模式在关系模式R(U)中,对于中,对于U的子集的子集X和和Y,n如果如果XY,但但Y X,则称则称XY是非平凡的函数依赖是非平凡的函数依赖若若XY,但但Y X,则称则称XY是是平凡的函数依赖平凡的函数依赖n例:在关系例:在关系SC(Sno,Cno,Grade)中,中,非平凡函数依赖:非平凡函数依赖:(Sno,Cno)Grade平凡函数依赖:平凡函数依赖:(Sno,Cno)Sno(Sno,Cno)Cnon如不作特别说明,总是讨论非平凡函数依赖。如不作特别说明,总是讨论非平凡函数依赖。97.1.2 7.1.2 一些术语和符号一些术语和符号o若若XY,则则X称为这个函数依赖的决定属性称为这个函数依赖的决定属性组,也称为决定因素(组,也称为决定因素(Determinant)。o若若XY,YX,则记作则记作XY。o若若Y不函数依赖于不函数依赖于X,则记作则记作XY。107.1.2 7.1.2 一些术语和符号一些术语和符号o完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖n在在R(U)中,如果中,如果XY,并且对于并且对于X的任何一个真子的任何一个真子集集X,都有都有XY,则称则称Y对对X完全函数依赖完全函数依赖,记作,记作XFY。n若若XY,但但Y不完全函数依赖于不完全函数依赖于X,则称则称Y对对X部分函部分函数依赖数依赖,记作,记作XPY。n例例:(Sno,Cno)Grade是完全函数依赖,是完全函数依赖,(Sno,Cno)Sdept是部分函数依赖是部分函数依赖因为因为SnoSdept成立,且成立,且Sno是(是(Sno,Cno)的真子集的真子集117.1.2 7.1.2 一些术语和符号一些术语和符号o传递函数依赖传递函数依赖n在在R(U)中,如果中,如果XY,(Y X),YXYZ,则称则称Z对对X传递函数依赖传递函数依赖。记为:记为:XZn注注:如果如果YX,即即XY,则则Z直接依赖于直接依赖于X。n例例:在关系在关系S S(SnoSno, ,SnameSname,Dept,Dept_master,Dept,Dept_master)中有:中有:Snodept,SdeptDept_masterDept_master传递函数依赖于传递函数依赖于Sno传递127.1.3为什么要讨论函数依赖为什么要讨论函数依赖o数据依赖对关系模式的影响数据依赖对关系模式的影响例例:建立一个描述学校教务的数据库建立一个描述学校教务的数据库关关系模式:系模式: S-L-C(S-L-C(SnoSno,SdeptSdept,SLOCSLOC,CnoCno,Grade)Grade)n学生的学号(学生的学号(Sno)、)、n所在系(所在系(Sdept)n学生所住宿舍楼学生所住宿舍楼(SLOC)、)、n课程号课程号(Cno)n成绩(成绩(Grade)假设每个系的学生都住在一栋楼里,假设每个系的学生都住在一栋楼里,(Sno,Cno)为主码为主码13数据示例数据示例SnoSnoSnameSnameSsexSsexSdeptSdeptSlocSlocCnoCnoGradeGrade95121019512101李勇李勇男男计算机系计算机系2 2公寓公寓C01C01909095121019512101李勇李勇男男计算机系计算机系2 2公寓公寓C02C02868695121019512101李勇李勇男男计算机系计算机系2 2公寓公寓C06C06NULLNULL95121029512102刘晨刘晨男男计算机系计算机系2 2公寓公寓C02C02787895121029512102刘晨刘晨男男计算机系计算机系2 2公寓公寓C04C04666695211029521102吴宾吴宾女女信息系信息系1 1公寓公寓C01C01828295211029521102吴宾吴宾女女信息系信息系1 1公寓公寓C02C02757595211029521102吴宾吴宾女女信息系信息系1 1公寓公寓C04C04929295211029521102吴宾吴宾女女信息系信息系1 1公寓公寓C05C05505095211039521103张海张海男男信息系信息系1 1公寓公寓C02C02686895211039521103张海张海男男信息系信息系1 1公寓公寓C06C06NULLNULL95311019531101钱小平钱小平女女数学系数学系1 1公寓公寓C01C01808095311019531101钱小平钱小平女女数学系数学系1 1公寓公寓C05C05959595311029531102王大力王大力男男数学系数学系1 1公寓公寓C05C058585147.1.3为什么要讨论函数依赖为什么要讨论函数依赖o关系模式关系模式:S-L-CnUSno,Sdept,SLOC,Cno,Graden属性组属性组U上的一组函数依赖上的一组函数依赖F:FSnoSdept,SdeptSLOC,(Sno,Cno)Grade SnoCnoSdeptSLOCGrade157.1.3为什么要讨论函数依赖为什么要讨论函数依赖关系模式关系模式Student中存在的问题中存在的问题1 1. . 数据冗余太大数据冗余太大2. 2. 更新异常(更新异常(Update AnomaliesUpdate Anomalies)3. 3. 插入异常(插入异常(Insertion AnomaliesInsertion Anomalies)4. 4. 删除异常(删除异常(Deletion AnomaliesDeletion Anomalies)167.1.3为什么要讨论函数依赖为什么要讨论函数依赖结论:结论:nS-L-C关系模式不是一个好的模式。关系模式不是一个好的模式。n“好好”的模式:不会发生插入异常、删除异的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少常、更新异常,数据冗余应尽可能少原因:原因:由存在于模式中的某些由存在于模式中的某些函数函数依赖引起的。依赖引起的。解决方法:模式分解解决方法:模式分解,即把一个关系模式分解成两即把一个关系模式分解成两个或多个关系模式,在分解的过程中消除那些个或多个关系模式,在分解的过程中消除那些“不良不良”的函数依赖,从而获得良好的关系模的函数依赖,从而获得良好的关系模式。式。177.1.3为什么要讨论函数依赖为什么要讨论函数依赖o分解关系模式分解关系模式o把这个单一模式分成把这个单一模式分成3个关系模式:个关系模式:nS(Sno,Sdept)SnoSdeptnSC(Sno,Cno,Grade)(Sno,Cno)Grade)nDEPT(Sdept,SLOC)SdeptSLOC187.2关系规范化关系规范化规范化理论规范化理论正是用来改造关系模式,通过分解关正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。入异常、删除异常、更新异常和数据冗余问题。197.2.1 7.2.1 关系模式中的码关系模式中的码o候选码与主码候选码与主码n设设K为为R中的属性或属性组合。若中的属性或属性组合。若KU,则则K称为称为R的侯选码的侯选码。n若候选码多于一个,则选定其中的一个做为主码若候选码多于一个,则选定其中的一个做为主码。o主属性与非主属性主属性与非主属性n包含在任何一个候选码中的属性包含在任何一个候选码中的属性,称为主属性,称为主属性n不包含在任何码中的属性称为非主属性或非码属性不包含在任何码中的属性称为非主属性或非码属性o全码全码n整个属性组是码,称为全码整个属性组是码,称为全码F207.2.1 7.2.1 关系模式中的码关系模式中的码o例:例:n关系模式关系模式S(Sno,Sdept,Sage),单个属性单个属性Sno是码是码nSC(Sno,Cno,Grade)中,(中,(Sno,Cno)是码是码n关系模式关系模式R(P,W,A)P:演奏者演奏者W:作品作品A:听众听众一个演奏者可以演奏多个作品一个演奏者可以演奏多个作品某一作品可被多个演奏者演奏某一作品可被多个演奏者演奏听众可以欣赏不同演奏者的不同作品听众可以欣赏不同演奏者的不同作品码为码为(P,W,A),即即All-Key21o例:有关系模式例:有关系模式学生(学号,姓名,性别,身份证号,年龄,所在系)学生(学号,姓名,性别,身份证号,年龄,所在系)n候选码候选码:学号,身份证号。:学号,身份证号。n主码主码:“学号学号”或或“身份证号身份证号”。n主属性主属性:学号,课程号。:学号,课程号。n非主属性非主属性:姓名,性别,年龄,所在系。:姓名,性别,年龄,所在系。22o例有关系模式:例有关系模式:选课(学号,课程号,考试次数,成绩)选课(学号,课程号,考试次数,成绩)o设一个学生对一门课程可以有多次考试,每一次设一个学生对一门课程可以有多次考试,每一次考试有一个考试成绩。考试有一个考试成绩。n候选码候选码:(学号,课程号,考试次数),也为主:(学号,课程号,考试次数),也为主码。码。n主属性主属性:学号,课程号,考试次数:学号,课程号,考试次数n非主属性非主属性:成绩。:成绩。23o例例.有关系模式:授课(教师号,课程号,学年)有关系模式:授课(教师号,课程号,学年)o语义:一个教师在一个学年可以讲授多门不同的课程,语义:一个教师在一个学年可以讲授多门不同的课程,可以在不同学年对同一门课程讲授多次,但不能在同一可以在不同学年对同一门课程讲授多次,但不能在同一个学年对同一门课程讲授多次。一门课程在一个学年可个学年对同一门课程讲授多次。一门课程在一个学年可以由多个不同的教师讲授,同一个学年可以开设多门课以由多个不同的教师讲授,同一个学年可以开设多门课程,同一门课程可以在不同学年开设多次。程,同一门课程可以在不同学年开设多次。n候选码候选码:(教师号,课程号,学年):(教师号,课程号,学年)n主码主码:同候选码。:同候选码。n主属性主属性:教师号,课程号,学年:教师号,课程号,学年n非主属性非主属性:无:无o称这种候选码为全部属性的表为称这种候选码为全部属性的表为全码表全码表247.2.1 7.2.1 关系模式中的码关系模式中的码o外部码外部码: :用于关系表之间建立关联的属性(组)。用于关系表之间建立关联的属性(组)。n关系模式关系模式R 中属性或属性组中属性或属性组X 并非并非R的码,但的码,但X 是是另一个关系模式的码,则称另一个关系模式的码,则称X 是是R 的的外部码外部码,也称,也称外码外码。n如在如在SC(Sno,Cno,Grade)中,中,Sno不是码,不是码,但但Sno是关系模式是关系模式S(Sno,Sdept,Sage)的码,的码,则则Sno是关系模式是关系模式SC的外部码的外部码n主码与外部码一起提供了表示关系间联系的手段。主码与外部码一起提供了表示关系间联系的手段。257.2.2范式范式o范式是符合某一种级别的关系模式的集合范式是符合某一种级别的关系模式的集合o关系数据库中的关系必须满足一定的要求。满足不同程度关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式(要求的为不同范式(NormalForm)。)。o范式的种类:范式的种类:n第一范式第一范式(1NF)n第二范式第二范式(2NF)n第三范式第三范式(3NF)nBC范式范式(BCNF)n第四范式第四范式(4NF)n第五范式第五范式(5NF)267.2.2范式范式o各种范式之间存在联系:各种范式之间存在联系:o某一关系模式某一关系模式R为第为第n范式,可简记为范式,可简记为RnNF。o一个低一级范式的关系模式,通过一个低一级范式的关系模式,通过模式分解模式分解可以可以转换为若干个高一级范式的关系模式的集合,这转换为若干个高一级范式的关系模式的集合,这种过程就叫种过程就叫规范化规范化。271NFo第一范式第一范式: :如果一个关系模式如果一个关系模式R R的所有属性都是的所有属性都是不不可分的基本数据项可分的基本数据项,则,则R1NFR1NFo第一范式是对关系模式的最起码的要求。不满足第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库第一范式的数据库模式不能称为关系数据库o但是满足第一范式的关系模式并不一定是一个好但是满足第一范式的关系模式并不一定是一个好的关系模式的关系模式281NF292NFo第二范式第二范式: :如果如果R R( (U U, ,F F)1NF)1NF,并且并且R R中的每个非中的每个非主属性都完全函数依赖于主码,则主属性都完全函数依赖于主码,则R R( (U U, ,F F)2NF)2NFo例例: : S-L-CS-L-C(SnoSno, ,SdeptSdept,SLOC,SLOC,CnoCno,Grade,Grade) 函数依赖包括:函数依赖包括: ( (SnoSno, , Cno Cno) ) F F Grade Grade SnoSno Sdept Sdept ( (SnoSno, , Cno Cno) ) P P SdeptSdept Sno Sno Sloc Sloc ( (SnoSno, , Cno Cno) ) P P Sloc Sloc Sdept Sdept Sloc Sloc 存在部分函数依赖,不是存在部分函数依赖,不是2 2NFNF。302NF(续)续)oS-L-C的码为的码为(Sno,Cno)oS-L-C满足第一范式。满足第一范式。o非主属性非主属性Sdept和和Sloc部分函数依赖于码部分函数依赖于码(Sno,Cno)SnoCnoGradeSdeptSlocS-L-C312NF(续)续)oS-L-C不是一个好的关系模式不是一个好的关系模式o原因原因Sdept、Sloc部分函数依赖于码。部分函数依赖于码。o解决方法解决方法S-L-C分解为两个关系模式,以消除这些部分分解为两个关系模式,以消除这些部分函数依赖函数依赖322NF(续)续)o分解办法分解办法n首先,对于组成主码的属性集合的每一个子首先,对于组成主码的属性集合的每一个子集,用它作为主码构成一个表。集,用它作为主码构成一个表。n然后,将依赖于这些主码的属性放置到相应然后,将依赖于这些主码的属性放置到相应的表中。的表中。n最后,去掉只由主码的子集构成的表。最后,去掉只由主码的子集构成的表。oS-L-C分解为两个关系模式分解为两个关系模式SC(Sno,Cno,Grade)S-L(Sno,Sdept,Sloc)332NF(续)续)o分解示例分解示例n对于对于S-L-C表,首先分解为如下形式的三张表:表,首先分解为如下形式的三张表:S-L(Sno,)C(Cno,)S-C(Sno,Cno,)n然后,将依赖于这些主码的属性放置到相应的表中然后,将依赖于这些主码的属性放置到相应的表中S-L(Sno,Sdept,Sloc)C(Cno)S-C(Sno,Cno,Grade)n最后,去掉只由主码的子集构成的表,最终分解为:最后,去掉只由主码的子集构成的表,最终分解为:S-L(Sno,Sdept,Sloc)S-C(Sno,Cno,Grade)342NF(续)续)函数依赖图:SnoCnoGradeSCS-LSnoSdeptSlocv关系模式关系模式SC的码为(的码为(Sno,Cno)v关系模式关系模式S-L的码为的码为Snov这样非主属性对码都是完全函数依赖这样非主属性对码都是完全函数依赖 352NF(续)续)S-L-C(Sno,Sdept,Sloc,Cno,Grade)1NFS-L-C(Sno,Sdept,Sloc,Cno,Grade)2NFSC(Sno,Cno,Grade)2NFS-L(Sno,Sdept,Sloc)2NF362NF(续)续)o采用投影分解法将一个采用投影分解法将一个1NF的关系分解为多个的关系分解为多个2NF的关系,可以在一定程度上减轻原的关系,可以在一定程度上减轻原1NF关系关系中存在的插入异常、删除异常、数据冗余度大、中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。修改复杂等问题。o将一个将一个1NF关系分解为多个关系分解为多个2NF的关系,并不能的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。完全消除关系模式中的各种异常情况和数据冗余。372NF(续)续)oS-LS-L(SnoSno, ,SdeptSdept, , Sloc Sloc)存在问题存在问题n数据冗余数据冗余 :有多少个学生就有多少个重复的:有多少个学生就有多少个重复的SdeptSdept和和SLOCSLOC; n插入异常插入异常:当新建一个系时,若还没有招收学生,:当新建一个系时,若还没有招收学生,则无法插入;则无法插入;SnoSnoSnameSnameSsexSsexSdeptSdeptSlocSloc9512101李勇李勇男男计算机系计算机系2公寓公寓9512102刘晨刘晨男男计算机系计算机系2公寓公寓9521102吴宾吴宾女女信息系信息系1公寓公寓9521103张海张海男男信息系信息系1公寓公寓9531101钱小平钱小平女女数学系数学系1公寓公寓9531103王大力王大力女女数学系数学系1公寓公寓383NFo3NF的定义的定义关系模式关系模式R中若不存在这样的码中若不存在这样的码X、属属性组性组Y及非主属性及非主属性Z(Z Y), 使得使得XY,YZ成立成立,YX,则称则称R3NF。n若若R3NF,则每一个则每一个非主属性非主属性既不部分依赖既不部分依赖于码于码也不传递依赖也不传递依赖于码。于码。393NF(续)续)例:例:2NF关系模式关系模式S-L(Sno,Sdept,Sloc)中中n函数依赖:函数依赖:SnoSdeptSdeptSnoSdeptSloc可得:可得:SnoSloc,即即S-L中存在非主属性对码的传递函数中存在非主属性对码的传递函数依赖,依赖,S-L3NF传递403NF(续)续)函数依赖图:S-LSnoSdeptSloc413NF(续)续)o解决方法解决方法采用投影分解法,把采用投影分解法,把S-L分解为两个关系模式,以消分解为两个关系模式,以消除传递函数依赖:除传递函数依赖:S-D(Sno,Sdept)D-L(Sdept,Sloc)S-D的码为的码为Sno,D-L的码为的码为Sdept。n分解后的关系模式分解后的关系模式S-D与与D-L中不再存在传递依中不再存在传递依赖赖423NF(续)续)o分解过程分解过程n对于不是候选码的每个决定因子,从表中删对于不是候选码的每个决定因子,从表中删去依赖于它的所有属性;去依赖于它的所有属性;S-DS-D(SnoSno, ,SdeptSdept)(主主码为SnoSno) n新建一个表,新表中包含在原表中所有依赖新建一个表,新表中包含在原表中所有依赖于该决定因子的属性;于该决定因子的属性;S-LS-L(SdeptSdept, ,SlocSloc)n将决定因子作为新表的主码。将决定因子作为新表的主码。S-LS-L的的主主码为SdeptSdept433NF(续)续)S-D的码为的码为Sno,D-L的码为的码为SdeptSnoSdeptS-DSdeptSlocD-Lv S-L(Sno, Sdept, Sloc) 2NF S-L(Sno, Sdept, Sloc) 3NF S-D(Sno,Sdept) 3NFD-L(Sdept,Sloc) 3NF443NF(续)续)o违反违反3 3NFNF的传递依赖的三种情况的传递依赖的三种情况453NF(续)续)o采用投影分解法将一个采用投影分解法将一个2NF的关系分解为多个的关系分解为多个3NF的关的关系,可以在一定程度上解决原系,可以在一定程度上解决原2NF关系中存在的插入异关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。常、删除异常、数据冗余度大、修改复杂等问题。o将一个将一个2NF关系分解为多个关系分解为多个3NF的关系后,仍然不能的关系后,仍然不能完全消除关系模式中的各种异常情况和数据冗余。完全消除关系模式中的各种异常情况和数据冗余。46BC范式(范式(BCNF)o关系模式关系模式R1NF,若若XY且且Y X时时X必含有码,则必含有码,则RBCNF。o等价于:每一个决定属性因素都包含码等价于:每一个决定属性因素都包含码47BCNF(续)续)o若若RBCNFn所有非主属性对每一个码都是完全函数依赖所有非主属性对每一个码都是完全函数依赖n所有的主属性对每一个不包含它的码,也是完全所有的主属性对每一个不包含它的码,也是完全函数依赖函数依赖n没有任何属性完全函数依赖于非码的任何一组属没有任何属性完全函数依赖于非码的任何一组属性性oRBCNFR3NF充分不必要48BCNF(续)续)o例:关系模式例:关系模式C(Cno,Cname,Pcno)nC3NFnCBCNFo例:关系模式例:关系模式S(Sno,Sname,Sdept,Sage)n假定假定S有两个码有两个码Sno,SnamenS3NFnSBCNF49BCNF(续)续)o例:关系模式例:关系模式SJP(S,J,P)n函数依赖:(函数依赖:(S,J)P;(J,P)Sn(S,J)与(与(J,P)都可以作为候选码都可以作为候选码,属性属性相交相交nSJP3NFnSJPBCNF50BCNF(续)续)o例:在关系模式例:在关系模式STC(S,T,C)中,中,S表示学生,表示学生,T表示教师,表示教师,C表示课程。表示课程。n函数依赖:函数依赖:(S,C)T,(S,T)C,TCn(S,C)和和(S,T)都是候选码都是候选码51BCNF(续)续) CSCTSTSTC中的函数依赖中的函数依赖52BCNF(续)续)oSTC3NFn没没有有任任何何非非主主属属性性对对码码传传递递依依赖赖或或部部分分依赖依赖oSTCBCNFnT是决定因素,是决定因素,T不包含码不包含码53BCNF(续)续)o解决方法:将解决方法:将STC分解为二个关系模式:分解为二个关系模式:ST(S,T)BCNF,TC(T,C)BCNF没有没有任何属性任何属性对码的部分函数依赖和传递函数依赖对码的部分函数依赖和传递函数依赖STSTTCTC54BCNF(续)续)o主属性对候选键的传递依赖主属性对候选键的传递依赖553NF与与BCNF的关系的关系oR BCNF R 3NFo如果R3NF,且R只有一个候选码 R BCNF R 3NF充分不必要充分必要56多值依赖与多值依赖与4NF(了解)了解)o多值依赖定义多值依赖定义设设R(U)是一个属性集是一个属性集U上的一个关系模式,上的一个关系模式,X、Y和和Z是是U的子集,并且的子集,并且ZUXY。关系模式关系模式R(U)中中多值依赖多值依赖XY成立,当且仅当对成立,当且仅当对R(U)的的任一关系任一关系r,给定的一对(给定的一对(x,z)值,有一组值,有一组Y的的值,这组值仅仅决定于值,这组值仅仅决定于x值而与值而与z值无关。值无关。o关系模式关系模式R1NF,如果对于如果对于R的每个非平的每个非平凡多值依赖凡多值依赖XY(Y X),),X都含有码,则都含有码,则R4NF。57规范化举例规范化举例o设有关系模式:设有关系模式:Student(学号,姓名,学号,姓名,导师号,导师名,课程号,课程说明,成导师号,导师名,课程号,课程说明,成绩)绩)o语义:一名学生只有一个导师,学生可选语义:一名学生只有一个导师,学生可选多门课。多门课。o将其规范化成将其规范化成3NF的。的。581 1此表是此表是1 1NFNF,其函数依赖为:其函数依赖为:学号学号 p p 姓名,学号姓名,学号 p p 导师号,学号导师号,学号 p p 导师名,导师名, 课程号课程号 p p 课程说明课程说明, (, (学号,课程号学号,课程号)成绩成绩 主码为(学号,课程号)主码为(学号,课程号) 存在部分函数依赖关系,不是存在部分函数依赖关系,不是2 2NFNF, 首先将其分解为首先将其分解为2 2NFNF。学生(学生(学号学号,姓名,导师号,导师名),姓名,导师号,导师名),课程(课程(课程号课程号,课程说明),课程说明),成绩(成绩(学号,课程号学号,课程号,成绩),成绩) 均为均为2 2NFNF592 2判是否为判是否为3 3NF NF “学生学生”表不是表不是3 3NFNF,其函数依赖为:其函数依赖为:学号学号姓名,学号姓名,学号导师号,导师号, 导师号导师号 p p 导师名,导师名,学号学号传递传递导师名导师名o消消除除依依赖赖于于决决定定者者的的属属性性,把把它它们们放放在在一一个个单单独独的表中,得到:的表中,得到:o学生(学生(学号学号,姓名,导师号),导师(导师号,姓名,导师号),导师(导师号,导师名)导师名)607.3关系模式的分解准则关系模式的分解准则o模式分解要满足:模式分解要满足:模式分解具有无损连接性;模式分解具有无损连接性;模式分解能够保持函数依赖。模式分解能够保持函数依赖。无损连接无损连接是指分解后的关系通过自然连接可是指分解后的关系通过自然连接可以恢复成原来的关系,即通过自然连接得到的关以恢复成原来的关系,即通过自然连接得到的关系与原来的关系相比,既不多出信息、又不丢失系与原来的关系相比,既不多出信息、又不丢失信息。信息。保持函数依赖保持函数依赖分解是指在模式的分解过程中,分解是指在模式的分解过程中,函数依赖不能丢失的特性,即模式分解不能破坏函数依赖不能丢失的特性,即模式分解不能破坏原来的语义。原来的语义。61关系模式的分解准则(续)关系模式的分解准则(续) 例:例:S-D-LS-D-L(SnoSno,DeptDept,LocLoc)有函数依赖:有函数依赖: SnoSno Dept Dept, Dept Loc Dept Loc 不是第三范式的。至少可以有三种分解方案,分不是第三范式的。至少可以有三种分解方案,分别为:别为:方案方案1 1:S-LS-L(SnoSno,LocLoc),),D-LD-L(DeptDept,LocLoc)方案方案2 2:S-DS-D(SnoSno,DeptDept),),S-LS-L(SnoSno,LocLoc)方案方案3 3:S-DS-D(SnoSno,DeptDept),),D-LD-L(DeptDept,LocLoc) 这三种分解方案得到的关系模式都是第三范式这三种分解方案得到的关系模式都是第三范式的,那么如何比较这三种方案的好坏呢?由此在将的,那么如何比较这三种方案的好坏呢?由此在将一个关系模式分解为多个关系模式时除了提高规范一个关系模式分解为多个关系模式时除了提高规范化程度之外,还需要考虑化程度之外,还需要考虑其他的一些因素其他的一些因素。62关系模式的分解准则(续)关系模式的分解准则(续)o 将一个关系模式将一个关系模式RURF分解为若干个关系模式分解为若干个关系模式R R1 1U ,R R2 2U ,R Rn nU ,意味着意味着将存储在一张二维表将存储在一张二维表r r中的数据分散到了若干个二维中的数据分散到了若干个二维表表r r1 1,r r2 2,r rn n中。这样的分解应该不丢失信息,中。这样的分解应该不丢失信息,即能通过对关系即能通过对关系r r1 1,r r2 2,r rn n的自然连接运算重新的自然连接运算重新得到关系得到关系r r中的所有信息。中的所有信息。o事实上,将关系事实上,将关系r r投影为投影为r r1 1,r r2 2,r rn n时不会丢失时不会丢失信息,关键是对信息,关键是对r r1 1,r r2 2,r rn n做自然连接时可能产做自然连接时可能产生一些生一些r r中原来没有的元组,从而无法区别哪些元组中原来没有的元组,从而无法区别哪些元组是是r r中原来有的,即数据库中应该存在的数据,哪些中原来有的,即数据库中应该存在的数据,哪些是不应该有的。在这个意义上就丢失了信息。是不应该有的。在这个意义上就丢失了信息。 63关系模式的分解准则(续)关系模式的分解准则(续)o这三种分解方案是否都满足分解要求呢?这三种分解方案是否都满足分解要求呢?o假设此关系模式的数据如表所示,此关系用假设此关系模式的数据如表所示,此关系用r r表示。表示。Sno Dept Loc S01D1 L1 S02 D2 L2 S03 D3 L3 S04 D4 L4 64关系模式的分解准则(续)关系模式的分解准则(续)o若按方案若按方案1 1将将S-D-LS-D-L投影到投影到S-LS-L和和D-LD-L的属性上,得的属性上,得到如左边两个表所示的关系。做自然连接得到结到如左边两个表所示的关系。做自然连接得到结果如右表所示。果如右表所示。Sno Loc S01L1 S02 L2 S03 L3 S04 L4 Dept Loc D1 L1 D2 L2 D3 L3 D4 L4 Sno Dept Loc S01D1 L1 S01D3L1S02 D2 L2 S03 D2L2S04D1 L1S04 D3L4165关系模式的分解准则(续)关系模式的分解准则(续)o无损连接性无损连接性o将关系模式将关系模式RURF分解为个关系模式分解为个关系模式R R1 1U ,R R2 2U ,R Rn nU ,若若对于对于R R中的任何一个可能的中的任何一个可能的r r,都有都有r r r r1*1*r r2*2* *r rn n,即即r r在在R R1 1,R R2 2,R Rn n上的投上的投影的自然连接等于影的自然连接等于r r,则称关系模式则称关系模式R R的这个的这个分解具有分解具有无损连接性无损连接性。66关系模式的分解准则(续)关系模式的分解准则(续)o再分析方案再分析方案2 2。将。将S-D-LS-D-L投影到投影到S-DS-D,S-LS-L的的属性上,得到的关系如左边两个表所示。属性上,得到的关系如左边两个表所示。做做自然连接自然连接得到的关系右表所示。得到的关系右表所示。Sno Loc S01L1 S02 L2 S03 L3 S04 L4 Sno Dept S01D1S02 D2 S03 D3 S04 D4 Sno Dept Loc S01D1 L1 S02 D2 L2 S03 D2L2S04 D3 L1 67关系模式的分解准则(续)关系模式的分解准则(续)o方案方案2 2自然连接后恢复成了原来的自然连接后恢复成了原来的关系,因此,分解方案关系,因此,分解方案2 2具有无损具有无损连接性。连接性。o但分解方案但分解方案2 2没有保持原有的函数没有保持原有的函数依赖关系,也不是好的分解方法。依赖关系,也不是好的分解方法。68关系模式的分解准则(续)关系模式的分解准则(续)o 分解方案分解方案3 3既满足无损连接性,又保持了原有的既满足无损连接性,又保持了原有的函数依赖关系,因此它是有个好的分解方法。函数依赖关系,因此它是有个好的分解方法。o分解具有无损连接性和分解保持函数依赖是两个分解具有无损连接性和分解保持函数依赖是两个独立的标准独立的标准。具有无损连接性的分解不一定保持。具有无损连接性的分解不一定保持函数依赖;保持函数依赖的分解不一定具有无损函数依赖;保持函数依赖的分解不一定具有无损连接性。连接性。o一般情况下,在进行模式分解时,应将一般情况下,在进行模式分解时,应将有直接依有直接依赖关系的属性放置在一个关系模式中赖关系的属性放置在一个关系模式中,这样得到,这样得到的分解结果一般能具有无损连接性,并能保持函的分解结果一般能具有无损连接性,并能保持函数依赖关系不变。数依赖关系不变。 69规范化小结规范化小结o关系数据库的规范化理论是数据库逻辑设计的工关系数据库的规范化理论是数据库逻辑设计的工具具o目的:尽量消除插入、删除异常,修改复杂,数目的:尽量消除插入、删除异常,修改复杂,数据冗余据冗余o基本思想:逐步消除数据依赖中不合适的部分基本思想:逐步消除数据依赖中不合适的部分n实质:概念的实质:概念的单一化单一化70规范化小结(续)规范化小结(续)o关系模式规范化的基本步骤关系模式规范化的基本步骤1NF消除非主属性对码的部分函数依赖消除非主属性对码的部分函数依赖消除决定属性消除决定属性2NF集非码的非平集非码的非平消除非主属性对码的传递函数依赖消除非主属性对码的传递函数依赖凡函数依赖凡函数依赖3NF消除主属性对码的部分和传递函数依赖消除主属性对码的部分和传递函数依赖BCNF消除非平凡且非函数依赖的多值依赖消除非平凡且非函数依赖的多值依赖4NF71规范化小结(续)规范化小结(续)o不能说规范化程度越高的关系模式就越好不能说规范化程度越高的关系模式就越好o在设计数据库模式结构时,必须对现实世界的实在设计数据库模式结构时,必须对现实世界的实际情况和用户应用需求作进一步分析,确定一个际情况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式合适的、能够反映现实世界的模式o上面的规范化步骤可以在其中任何一步终止上面的规范化步骤可以在其中任何一步终止72作业作业 设某商业集团数据库中有一个关系模式为:设某商业集团数据库中有一个关系模式为: R(商店编码,顾客编码,消费总额,顾客单位,地址,电话)商店编码,顾客编码,消费总额,顾客单位,地址,电话) 该该模模式式的的关关系系记记载载每每个个顾顾客客在在每每个个商商店店的的累累计计消消费费总总额额。如果规定:如果规定: 每个顾客在每个商店只有一个消费总额;每个顾客在每个商店只有一个消费总额; 每个顾客只属于一个单位;每个顾客只属于一个单位; 每个顾客单位只有一个地址、一个电话。每个顾客单位只有一个地址、一个电话。试回答下列问题:试回答下列问题:(1)说明)说明R不是不是2NF的理由,并把的理由,并把R分解成分解成2NF模式集。模式集。(2)进而分解成)进而分解成3NF模式集。模式集。73
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号