《数据库 第七章幻灯片.ppt》由会员分享,可在线阅读,更多相关《数据库 第七章幻灯片.ppt(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库数据库 第七章第七章第1页,共67页,编辑于2022年,星期六2第第7 7章章 关系数据库规范化理论关系数据库规范化理论o数据库设计是数据库应用领域中的主要研究课题。数据库设计是数据库应用领域中的主要研究课题。o关系数据库规范化理论就是数据库设计的一个理关系数据库规范化理论就是数据库设计的一个理论指南。论指南。o关系数据库的规范化是指面对一个现实问题关系数据库的规范化是指面对一个现实问题,如何选择如何选择一个比较好的关系模式集合。一个比较好的关系模式集合。o规范化理论研究的是关系模式中各属性之间的数据依规范化理论研究的是关系模式中各属性之间的数据依赖关系及其对关系模式性能的影响赖关系及其
2、对关系模式性能的影响 ;以及判断关系模;以及判断关系模式好坏的理论标准式好坏的理论标准范式。范式。第2页,共67页,编辑于2022年,星期六3第第7 7章章 关系数据库规范化理论关系数据库规范化理论o关系模式的形式化定义关系模式的形式化定义 一个完整的关系模式由五部分组成,即它是一个五元一个完整的关系模式由五部分组成,即它是一个五元组:组:R(U,D,DOM,F)R:关系名:关系名 U:组成该关系的属性名集合:组成该关系的属性名集合 D:属性组:属性组U中属性所来自的域中属性所来自的域 DOM:属性向域的映象集合:属性向域的映象集合 F:属性间数据的依赖关系集合:属性间数据的依赖关系集合第3页
3、,共67页,编辑于2022年,星期六4第第7 7章章 关系数据库规范化理论关系数据库规范化理论o什么是数据依赖什么是数据依赖n一个关系内部属性与属性之间的约束关系一个关系内部属性与属性之间的约束关系n数据依赖的类型数据依赖的类型o函数依赖(函数依赖(Functional Dependency,简记,简记为为FD)o多值依赖(多值依赖(Multivalued Dependency,简,简记为记为MVD)o其他其他第4页,共67页,编辑于2022年,星期六5第第7 7章章 关系数据库规范化理论关系数据库规范化理论o关系模式的简化表示关系模式的简化表示 关系模式关系模式R(U,D,DOM,F)简化为
4、一个三元组:简化为一个三元组:R(U,F)o当且仅当当且仅当U上的一个关系上的一个关系r满足满足F时,时,r称为称为关系关系模式模式 R(U,F)的一个)的一个关系。关系。第5页,共67页,编辑于2022年,星期六67.1 函数依赖函数依赖o设有关系模式设有关系模式R(A1,A2,An),X和和Y均为均为A1,A2,An的子集,的子集,r是是R的任一具体关系,的任一具体关系,t1、t2是是r中的任意两个元组;如果由中的任意两个元组;如果由t1X=t2X可以推导出可以推导出t1Y=t2Y,则称,则称X函数决定函数决定Y,或,或Y函数函数依赖于依赖于X,记为,记为XY。o例:例:Student(S
5、no,SName,Sdept,Sage)SnoSName,SnoSdept,SnoSageo例:例:SC(Sno,Cno,Grade)(Sno,Cno)Grade第6页,共67页,编辑于2022年,星期六77.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)中,中,
6、非平凡函数依赖:非平凡函数依赖:(Sno,Cno)Grade 平凡函数依赖:平凡函数依赖:(Sno,Cno)Sno (Sno,Cno)Cnon如不作特别说明,总是讨论非平凡函数依赖。如不作特别说明,总是讨论非平凡函数依赖。第7页,共67页,编辑于2022年,星期六87.1.2 7.1.2 一些术语和符号一些术语和符号o若若XY,则,则X称为这个函数依赖的决定属性组,称为这个函数依赖的决定属性组,也称为决定因素(也称为决定因素(Determinant)。)。o若若XY,YX,则记作,则记作XY。o若若Y不函数依赖于不函数依赖于X,则记作,则记作XY。第8页,共67页,编辑于2022年,星期六97
7、.1.2 7.1.2 一些术语和符号一些术语和符号o完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖n在在R(U)中,如果中,如果XY,并且对于,并且对于X的任何一个真子集的任何一个真子集X,都有都有X Y,则称则称Y对对X完全函数依赖完全函数依赖,记作,记作 X F Y。n若若XY,但,但Y不完全函数依赖于不完全函数依赖于X,则称,则称Y对对X部分函数依部分函数依赖赖,记作,记作X P Y。n例例:(Sno,Cno)Grade是完全函数依赖,是完全函数依赖,(Sno,Cno)Sdept是部分函数依赖是部分函数依赖 因为因为Sno Sdept成立,且成立,且Sno是(是(Sno,Cno)的
8、真)的真子集子集 第9页,共67页,编辑于2022年,星期六107.1.2 7.1.2 一些术语和符号一些术语和符号o传递函数依赖传递函数依赖n在在R(U)中,如果中,如果XY,(Y X),YX YZ,则称则称Z对对X传递函数依赖传递函数依赖。记为:记为:X Zn注注:如果如果YX,即即XY,则,则Z直接依赖于直接依赖于X。n例例:在关系在关系S S(Sno,Sname,Dept,Dept_masterSno,Sname,Dept,Dept_master)中有:中有:Sno dept,Sdept Dept_master Dept_master传递函数依赖于传递函数依赖于Sno传递第10页,共6
9、7页,编辑于2022年,星期六117.1.3 为什么要讨论函数依赖为什么要讨论函数依赖o数据依赖对关系模式的影响数据依赖对关系模式的影响 例例:建立一个描述学校教务的数据库:建立一个描述学校教务的数据库:学生的学号(学生的学号(Sno)、所在系()、所在系(Sdept)系主任姓名(系主任姓名(Mname)、课程名()、课程名(Cname)成绩(成绩(Grade)单一单一的关系模式的关系模式:Student U Sno,Sdept,Mname,Cname,Grade 第11页,共67页,编辑于2022年,星期六127.1.3 为什么要讨论函数依赖为什么要讨论函数依赖 属性组属性组U上的一组函数依
10、赖上的一组函数依赖F:F Sno Sdept,Sdept Mname,(Sno,Cname)Grade SnoCnameSdeptMnameGrade第12页,共67页,编辑于2022年,星期六137.1.3 为什么要讨论函数依赖为什么要讨论函数依赖关系模式关系模式Student中存在的问题中存在的问题1.1.数据冗余太大数据冗余太大2.2.更新异常(更新异常(Update AnomaliesUpdate Anomalies)3.3.插入异常(插入异常(Insertion AnomaliesInsertion Anomalies)4.4.删除异常(删除异常(Deletion Anomalies
11、Deletion Anomalies)第13页,共67页,编辑于2022年,星期六147.1.3 为什么要讨论函数依赖为什么要讨论函数依赖结论:结论:n Student关系模式不是一个好的模式。关系模式不是一个好的模式。n“好好”的模式:不会发生插入异常、删除异常、更的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少新异常,数据冗余应尽可能少原因:原因:由存在于模式中的由存在于模式中的某些数据依赖某些数据依赖引起的引起的解决方法:解决方法:通过通过分解分解关系模式来消除其中不合适的数据依关系模式来消除其中不合适的数据依赖赖第14页,共67页,编辑于2022年,星期六157.1.3
12、 为什么要讨论函数依赖为什么要讨论函数依赖o分解关系模式分解关系模式o把这个单一模式分成把这个单一模式分成3个关系模式:个关系模式:S(Sno,Sdept,Sno Sdept);SC(Sno,Cno,Grade,(,(Sno,Cno)Grade);DEPT(Sdept,Mname,Sdept Mname)第15页,共67页,编辑于2022年,星期六167.2 关系规范化关系规范化 规范化理论规范化理论正是用来改造关系模式,通过分解关系模式正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余
13、问题。异常、更新异常和数据冗余问题。第16页,共67页,编辑于2022年,星期六177.2.1 7.2.1 关系模式中的码关系模式中的码o候选码与主码候选码与主码n设设K为为R中的属性或属性组合。若中的属性或属性组合。若K U,则则K称称为为R的侯选码。的侯选码。n若候选码多于一个,则选定其中的一个做为主码。若候选码多于一个,则选定其中的一个做为主码。o主属性与非主属性主属性与非主属性n包含在任何一个候选码中的属性包含在任何一个候选码中的属性,称为主属性,称为主属性n不包含在任何码中的属性称为非主属性或非码属性不包含在任何码中的属性称为非主属性或非码属性o全码全码n整个属性组是码,称为全码整个
14、属性组是码,称为全码F第17页,共67页,编辑于2022年,星期六187.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-Key第
15、18页,共67页,编辑于2022年,星期六197.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主码与外部码一起提供了表示关系间联系的手段主码与外部码一起提供了表示关系间联系的手段第1
16、9页,共67页,编辑于2022年,星期六207.2.2 范式范式o范式是符合某一种级别的关系模式的集合范式是符合某一种级别的关系模式的集合o关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式同范式o范式的种类:范式的种类:n第一范式第一范式(1NF)n第二范式第二范式(2NF)n第三范式第三范式(3NF)nBC范式范式(BCNF)n第四范式第四范式(4NF)n第五范式第五范式(5NF)第20页,共67页,编辑于2022年,星期六217.2.2 范式范式o各种范式之间存在联系:各种范式之间存在联系:o某一关系模式某一关系
17、模式R为第为第n范式,可简记为范式,可简记为R nNF。o一个低一级范式的关系模式,通过一个低一级范式的关系模式,通过模式分解模式分解可以转可以转换为若干个高一级范式的关系模式的集合,这种过程换为若干个高一级范式的关系模式的集合,这种过程就叫就叫规范化规范化 第21页,共67页,编辑于2022年,星期六221NFo第一范式第一范式:如果一个关系模式如果一个关系模式R R的所有属性都是的所有属性都是不可分不可分的基本数据项的基本数据项,则,则R1NFR1NFo第一范式是对关系模式的最起码的要求。不满足第一第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库范式的数据库
18、模式不能称为关系数据库o但是满足第一范式的关系模式并不一定是一个好的关但是满足第一范式的关系模式并不一定是一个好的关系模式系模式第22页,共67页,编辑于2022年,星期六231NF第23页,共67页,编辑于2022年,星期六242NFo第二范式第二范式:如果如果R R(U U,F F)1NF)1NF,并且,并且R R中的每个非主属性中的每个非主属性都完全函数依赖于主码,则都完全函数依赖于主码,则R R(U U,F F)2NF)2NFo例例:S-L-C:S-L-C(Sno,Sdept,SLOC,Cno,GradeSno,Sdept,SLOC,Cno,Grade)函数依赖包括:函数依赖包括:(S
19、no,Cno)(Sno,Cno)F F Grade Grade Sno Sdept Sno Sdept (Sno,Cno)(Sno,Cno)P P Sdept Sdept Sno Sloc Sno Sloc (Sno,Cno)(Sno,Cno)P P Sloc Sloc Sdept Sloc Sdept Sloc 存在部分函数依赖,不是存在部分函数依赖,不是2NF2NF。第24页,共67页,编辑于2022年,星期六25 2NF(续)(续)oS-L-C的码为的码为(Sno,Cno)oS-L-C满足第一范式。满足第一范式。o非主属性非主属性Sdept和和Sloc部分函数依赖于码部分函数依赖于码(S
20、no,Cno)SnoCnoGradeSdeptSlocS-L-C第25页,共67页,编辑于2022年,星期六262NF(续)(续)oS-L-C不是一个好的关系模式不是一个好的关系模式o原因原因 Sdept、Sloc部分函数依赖于码。部分函数依赖于码。o解决方法解决方法 S-L-C分解为两个关系模式,以消除这些部分函数依分解为两个关系模式,以消除这些部分函数依赖赖 第26页,共67页,编辑于2022年,星期六272NF(续)(续)o分解办法分解办法n首先,对于组成主码的属性集合的每一个子集,首先,对于组成主码的属性集合的每一个子集,用它作为主码构成一个表。用它作为主码构成一个表。n然后,将依赖于
21、这些主码的属性放置到相应的表中。然后,将依赖于这些主码的属性放置到相应的表中。n最后,去掉只由主码的子集构成的表。最后,去掉只由主码的子集构成的表。oS-L-C分解为两个关系模式分解为两个关系模式 SC(Sno,Cno,Grade)S-L(Sno,Sdept,Sloc)第27页,共67页,编辑于2022年,星期六282NF(续)(续)o分解示例分解示例n对于对于S-L-C表,首先分解为如下形式的三张表:表,首先分解为如下形式的三张表:S-L(Sno,)C(Cno,)S-C(Sno,Cno,)n然后,将依赖于这些主码的属性放置到相应的表中然后,将依赖于这些主码的属性放置到相应的表中S-L(Sno
22、,Sdept,Sloc)C(Cno)S-C(Sno,Cno,Grade)n最后,去掉只由主码的子集构成的表,最终分解为:最后,去掉只由主码的子集构成的表,最终分解为:S-L(Sno,Sdept,Sloc)S-C(Sno,Cno,Grade)第28页,共67页,编辑于2022年,星期六292NF(续)(续)函数依赖图:SnoCnoGradeSCS-LSnoSdeptSloco关系模式关系模式SC的码为(的码为(Sno,Cno)o关系模式关系模式S-L的码为的码为Snoo这样非主属性对码都是完全函数依赖这样非主属性对码都是完全函数依赖 第29页,共67页,编辑于2022年,星期六30 2NF(续)
23、(续)S-L-C(Sno,Sdept,Sloc,Cno,Grade)1NF S-L-C(Sno,Sdept,Sloc,Cno,Grade)2NF SC(Sno,Cno,Grade)2NF S-L(Sno,Sdept,Sloc)2NF第30页,共67页,编辑于2022年,星期六31 2NF(续)(续)o采用投影分解法将一个采用投影分解法将一个1NF的关系分解为多个的关系分解为多个2NF的关系,可以在一定程度上减轻原的关系,可以在一定程度上减轻原1NF关系中存在的插关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。入异常、删除异常、数据冗余度大、修改复杂等问题。o将一个将一个1NF关系
24、分解为多个关系分解为多个2NF的关系,并不能完的关系,并不能完全消除关系模式中的各种异常情况和数据冗余。全消除关系模式中的各种异常情况和数据冗余。第31页,共67页,编辑于2022年,星期六322NF(续)(续)oS-LS-L(Sno,Sdept,SlocSno,Sdept,Sloc)存在问题)存在问题n数据冗余数据冗余 :有多少个学生就有多少个重复的:有多少个学生就有多少个重复的SdeptSdept和和SLOCSLOC;n插入异常插入异常:当新建一个系时,若还没有招收学生,:当新建一个系时,若还没有招收学生,则无法插入;则无法插入;第32页,共67页,编辑于2022年,星期六333NFo3N
25、F的定义的定义关系模式关系模式R 中若不存在这样的码中若不存在这样的码X、属性组、属性组Y及非主属性及非主属性Z(Z Y),使得使得XY,YZ成立,成立,Y X,则称,则称R 3NF。o若若R 3NF,则每一个,则每一个非主属性非主属性既不部分依赖既不部分依赖于于码码也不传递依赖也不传递依赖于码。于码。第33页,共67页,编辑于2022年,星期六343NF(续)(续)例:例:2NF关系模式关系模式S-L(Sno,Sdept,Sloc)中中n函数依赖:函数依赖:SnoSdept Sdept Sno SdeptSloc 可得:可得:SnoSloc,即,即S-L中存在非主属性对码的传递函数依中存在非
26、主属性对码的传递函数依赖,赖,S-L 3NF传递第34页,共67页,编辑于2022年,星期六35 3NF(续)(续)函数依赖图:S-LSnoSdeptSloc第35页,共67页,编辑于2022年,星期六363NF(续)(续)o解决方法解决方法 采用投影分解法,把采用投影分解法,把S-L分解为两个关系模式,以消除传分解为两个关系模式,以消除传递函数依赖:递函数依赖:S-D(Sno,Sdept)D-L(Sdept,Sloc)S-D的码为的码为Sno,D-L的码为的码为Sdept。n分解后的关系模式分解后的关系模式S-D与与D-L中不再存在传递依赖中不再存在传递依赖 第36页,共67页,编辑于202
27、2年,星期六373NF(续)(续)o分解过程分解过程n对于不是候选码的每个决定因子,从表中删去依对于不是候选码的每个决定因子,从表中删去依赖于它的所有属性;赖于它的所有属性;S-DS-D(Sno,SdeptSno,Sdept)(主(主码为码为SnoSno)n新建一个表,新表中包含在原表中所有依赖于该决新建一个表,新表中包含在原表中所有依赖于该决定因子的属性;定因子的属性;S-LS-L(Sdept,SlocSdept,Sloc)n将决定因子作为新表的主码。将决定因子作为新表的主码。S-LS-L的的 主主码为码为SdeptSdept第37页,共67页,编辑于2022年,星期六383NF(续)(续)
28、S-D的码为的码为Sno,D-L的码为的码为SdeptSnoSdeptS-DSdeptSlocD-Lo S-L(Sno,Sdept,Sloc)2NF S-L(Sno,Sdept,Sloc)3NF S-D(Sno,Sdept)3NFD-L(Sdept,Sloc)3NF第38页,共67页,编辑于2022年,星期六393NF(续)(续)o违反违反3NF3NF的传递依赖的三种情况的传递依赖的三种情况第39页,共67页,编辑于2022年,星期六403NF(续)(续)o采用投影分解法将一个采用投影分解法将一个2NF的关系分解为多个的关系分解为多个3NF的关系,的关系,可以在一定程度上解决原可以在一定程度上
29、解决原2NF关系中存在的插入异常、删除异常、关系中存在的插入异常、删除异常、数据冗余度大、修改复杂等问题。数据冗余度大、修改复杂等问题。o 将一个将一个2NF关系分解为多个关系分解为多个3NF的关系后,仍然不能完全的关系后,仍然不能完全消除关系模式中的各种异常情况和数据冗余。消除关系模式中的各种异常情况和数据冗余。第40页,共67页,编辑于2022年,星期六41BC范式(范式(BCNF)o关系模式关系模式R 1NF,若,若XY且且Y X时时X必必含有码,则含有码,则R BCNF。o等价于:每一个决定属性因素都包含码等价于:每一个决定属性因素都包含码第41页,共67页,编辑于2022年,星期六4
30、2BCNF(续)(续)o若若R BCNF n所有非主属性对每一个码都是完全函数依赖所有非主属性对每一个码都是完全函数依赖n所有的主属性对每一个不包含它的码,也是完全函所有的主属性对每一个不包含它的码,也是完全函数依赖数依赖n没有任何属性完全函数依赖于非码的任何一组属性没有任何属性完全函数依赖于非码的任何一组属性oR BCNF R 3NF充分不必要第42页,共67页,编辑于2022年,星期六43BCNF(续)(续)o例:关系模式例:关系模式C(Cno,Cname,Pcno)nC 3NFnC BCNFo例:关系模式例:关系模式S(Sno,Sname,Sdept,Sage)n假定假定S有两个码有两个
31、码Sno,SnamenS 3NFnS BCNF第43页,共67页,编辑于2022年,星期六44BCNF(续)(续)o例:关系模式例:关系模式SJP(S,J,P)n函数依赖:(函数依赖:(S,J)P;(J,P)Sn(S,J)与()与(J,P)都可以作为候选码)都可以作为候选码,属性相交属性相交nSJP 3NFnSJP BCNF第44页,共67页,编辑于2022年,星期六45 BCNF(续)(续)o例:在关系模式例:在关系模式STC(S,T,C)中,)中,S表示学生,表示学生,T表示教师,表示教师,C表示课程。表示课程。n函数依赖:函数依赖:(S,C)T,(S,T)C,TCn(S,C)和和(S,T
32、)都是候选码都是候选码第45页,共67页,编辑于2022年,星期六46 BCNF(续)(续)CSCTSTSTC中的函数依赖中的函数依赖第46页,共67页,编辑于2022年,星期六47BCNF(续)(续)oSTC 3NFn没没有有任任何何非非主主属属性性对对码码传传递递依依赖赖或或部部分分依赖依赖oSTC BCNFnT是决定因素,是决定因素,T不包含码不包含码第47页,共67页,编辑于2022年,星期六48BCNF(续)(续)o解决方法:将解决方法:将STC分解为二个关系模式:分解为二个关系模式:ST(S,T)BCNF,TC(T,C)BCNF 没有没有任何属性任何属性对码的部分函数依赖和传递函数
33、依赖对码的部分函数依赖和传递函数依赖STSTTCTC第48页,共67页,编辑于2022年,星期六49BCNF(续)(续)o主属性对候选键的传递依赖主属性对候选键的传递依赖第49页,共67页,编辑于2022年,星期六503NF与与BCNF的关系的关系oR BCNF R 3NFo如果R3NF,且R只有一个候选码 R BCNF R 3NF充分不必要充分必要第50页,共67页,编辑于2022年,星期六51多值依赖与多值依赖与4NF(了解)(了解)o多值依赖定义多值依赖定义 设设R(U)是一个属性集是一个属性集U上的一个关系模式,上的一个关系模式,X、Y和和Z是是U的子集,并且的子集,并且ZUXY。关系
34、模式。关系模式R(U)中中多值依赖多值依赖 XY成立,当且仅当对成立,当且仅当对R(U)的的任一关系任一关系r,给定的一,给定的一对(对(x,z)值,有一组)值,有一组Y的值,这组值仅仅决定于的值,这组值仅仅决定于x值而与值而与z值无关。值无关。o关系模式关系模式R 1NF,如果对于,如果对于R的每个非平凡多的每个非平凡多值依赖值依赖XY(Y X),),X都含有码,则都含有码,则R 4NF。第51页,共67页,编辑于2022年,星期六52规范化举例规范化举例o设有关系模式:设有关系模式:Student(学号,姓名,(学号,姓名,导师号,导师名,课程号,课程说明,成导师号,导师名,课程号,课程说
35、明,成绩)绩)o语义:一名学生只有一个导师,学生可选语义:一名学生只有一个导师,学生可选多门课。多门课。o将其规范化成将其规范化成3NF的。的。第52页,共67页,编辑于2022年,星期六531 1此表是此表是1NF1NF,其函数依赖为:,其函数依赖为:学号学号 p p 姓名,学号姓名,学号 p p 导师号,学号导师号,学号 p p 导师名,导师名,课程号课程号 p p 课程说明课程说明,(,(学号,课程号学号,课程号)成绩成绩 主码为(学号,课程号)主码为(学号,课程号)存在部分函数依赖关系,不是存在部分函数依赖关系,不是2NF2NF,首先将其分解为首先将其分解为2NF2NF。学生(学生(学
36、号学号,姓名,导师号,导师名),姓名,导师号,导师名),课程(课程(课程号课程号,课程说明),课程说明),成绩(成绩(学号,课程号学号,课程号,成绩),成绩)均为均为2NF2NF第53页,共67页,编辑于2022年,星期六542 2判是否为判是否为3NF 3NF“学生学生”表不是表不是3NF3NF,其函数依赖为:,其函数依赖为:学号学号姓名,学号姓名,学号导师号,导师号,导师号导师号 p p 导师名,导师名,学号学号传递传递导师名导师名o消消除除依依赖赖于于决决定定者者的的属属性性,把把它它们们放放在在一一个个单单独独的的表中,得到:表中,得到:o学生(学生(学号学号,姓名,导师号),导师(导
37、师号,导师,姓名,导师号),导师(导师号,导师名)名)第54页,共67页,编辑于2022年,星期六557.3 关系模式的分解准则关系模式的分解准则o模式分解要满足:模式分解要满足:n模式分解具有无损连接性;模式分解具有无损连接性;n模式分解能够保持函数依赖。模式分解能够保持函数依赖。无损连接无损连接是指分解后的关系通过自然是指分解后的关系通过自然连接可以恢复成原来的关系,即通过自然连接可以恢复成原来的关系,即通过自然连接得到的关系与原来的关系相比,既不连接得到的关系与原来的关系相比,既不多出信息、又不丢失信息。多出信息、又不丢失信息。保持函数依赖保持函数依赖分解是指在模式的分解分解是指在模式的
38、分解过程中,函数依赖不能丢失的特性,即模过程中,函数依赖不能丢失的特性,即模式分解不能破坏原来的语义。式分解不能破坏原来的语义。第55页,共67页,编辑于2022年,星期六56关系模式的分解准则(续)关系模式的分解准则(续)例:例:S-D-LS-D-L(SnoSno,DeptDept,LocLoc)有函数依赖:)有函数依赖:Sno DeptSno Dept,Dept LocDept Loc 不是第三范式的。至少可以有三种分解方案,分别为:不是第三范式的。至少可以有三种分解方案,分别为:方案方案1 1:S-LS-L(SnoSno,LocLoc),),D-LD-L(DeptDept,LocLoc)
39、方案方案2 2:S-DS-D(SnoSno,DeptDept),),S-LS-L(SnoSno,LocLoc)方案方案3 3:S-DS-D(SnoSno,DeptDept),),D-LD-L(DeptDept,LocLoc)这三种分解方案得到的关系模式都是第三范式的,这三种分解方案得到的关系模式都是第三范式的,那么如何比较这三种方案的好坏呢?由此在将一个关系那么如何比较这三种方案的好坏呢?由此在将一个关系模式分解为多个关系模式时除了提高规范化程度之外,模式分解为多个关系模式时除了提高规范化程度之外,还需要考虑还需要考虑其他的一些因素其他的一些因素。第56页,共67页,编辑于2022年,星期六5
40、7关系模式的分解准则(续)关系模式的分解准则(续)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
41、 1,r r2 2,r rn n时不会丢失信息,时不会丢失信息,关键是对关键是对r r1 1,r r2 2,r rn n做自然连接时可能产生一些做自然连接时可能产生一些r r中原中原来没有的元组,从而无法区别哪些元组是来没有的元组,从而无法区别哪些元组是r r中原来有的,即中原来有的,即数据库中应该存在的数据,哪些是不应该有的。在这个意义上数据库中应该存在的数据,哪些是不应该有的。在这个意义上就丢失了信息。就丢失了信息。第57页,共67页,编辑于2022年,星期六58关系模式的分解准则(续)关系模式的分解准则(续)o这三种分解方案是否都满足分解要求呢?这三种分解方案是否都满足分解要求呢?o假设
42、此关系模式的数据如表所示,此关系用假设此关系模式的数据如表所示,此关系用r r表示。表示。Sno Dept Loc S01D1 L1 S02 D2 L2 S03 D3 L3 S04 D4 L4 第58页,共67页,编辑于2022年,星期六59关系模式的分解准则(续)关系模式的分解准则(续)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
43、 D1 L1 D2 L2 D3 L3 D4 L4 Sno Dept Loc S01D1 L1 S01D3L1S02 D2 L2 S03 D2L2S04D1 L1S04 D3L41第59页,共67页,编辑于2022年,星期六60关系模式的分解准则(续)关系模式的分解准则(续)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上的投影的自然
44、连接等于上的投影的自然连接等于r r,则,则称关系模式称关系模式R R的这个分解具有的这个分解具有无损连接性无损连接性。第60页,共67页,编辑于2022年,星期六61关系模式的分解准则(续)关系模式的分解准则(续)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 Dep
45、t Loc S01D1 L1 S02 D2 L2 S03 D2L2S04 D3 L1 第61页,共67页,编辑于2022年,星期六62关系模式的分解准则(续)关系模式的分解准则(续)o方案方案2 2自然连接后恢复成了原来的自然连接后恢复成了原来的关系,因此,分解方案关系,因此,分解方案2 2具有无损具有无损连接性。连接性。o但分解方案但分解方案2 2没有保持原有的函数依没有保持原有的函数依赖关系,也不是好的分解方法。赖关系,也不是好的分解方法。第62页,共67页,编辑于2022年,星期六63关系模式的分解准则(续)关系模式的分解准则(续)o 分解方案分解方案3 3既满足无损连接性,又保持了原有
46、的函数既满足无损连接性,又保持了原有的函数依赖关系,因此它是有个好的分解方法。依赖关系,因此它是有个好的分解方法。o分解具有无损连接性和分解保持函数依赖是两个独立分解具有无损连接性和分解保持函数依赖是两个独立的标准的标准。具有无损连接性的分解不一定保持函数依赖;。具有无损连接性的分解不一定保持函数依赖;保持函数依赖的分解不一定具有无损连接性。保持函数依赖的分解不一定具有无损连接性。o一般情况下,在进行模式分解时,应将一般情况下,在进行模式分解时,应将有直接依赖有直接依赖关系的属性放置在一个关系模式中关系的属性放置在一个关系模式中,这样得到的分,这样得到的分解结果一般能具有无损连接性,并能保持函
47、数依解结果一般能具有无损连接性,并能保持函数依赖关系不变。赖关系不变。第63页,共67页,编辑于2022年,星期六64规范化小结规范化小结o关系数据库的规范化理论是数据库逻辑设计的工具关系数据库的规范化理论是数据库逻辑设计的工具o目的:尽量消除插入、删除异常,修改复杂,数据冗余目的:尽量消除插入、删除异常,修改复杂,数据冗余o基本思想:逐步消除数据依赖中不合适的部分基本思想:逐步消除数据依赖中不合适的部分n实质:概念的实质:概念的单一化单一化第64页,共67页,编辑于2022年,星期六65规范化小结(续)规范化小结(续)o关系模式规范化的基本步骤关系模式规范化的基本步骤 1NF 消除非主属性对
48、码的部分函数依赖消除非主属性对码的部分函数依赖消除决定属性消除决定属性 2NF集非码的非平集非码的非平 消除非主属性对码的传递函数依赖消除非主属性对码的传递函数依赖凡函数依赖凡函数依赖 3NF 消除主属性对码的部分和传递函数依赖消除主属性对码的部分和传递函数依赖 BCNF 消除非平凡且非函数依赖的多值依赖消除非平凡且非函数依赖的多值依赖 4NF第65页,共67页,编辑于2022年,星期六66规范化小结(续)规范化小结(续)o不能说规范化程度越高的关系模式就越好不能说规范化程度越高的关系模式就越好o在设计数据库模式结构时,必须对现实世界的实际情在设计数据库模式结构时,必须对现实世界的实际情况和用
49、户应用需求作进一步分析,确定一个合适的、况和用户应用需求作进一步分析,确定一个合适的、能够反映现实世界的模式能够反映现实世界的模式o上面的规范化步骤可以在其中任何一步终止上面的规范化步骤可以在其中任何一步终止第66页,共67页,编辑于2022年,星期六67作业作业 设某商业集团数据库中有一个关系模式为:设某商业集团数据库中有一个关系模式为:R(商店编码,顾客编码,消费总额,顾客单位,地址,电话)(商店编码,顾客编码,消费总额,顾客单位,地址,电话)该该模模式式的的关关系系记记载载每每个个顾顾客客在在每每个个商商店店的的累累计计消消费费总总额额。如如果果规定:规定:每个顾客在每个商店只有一个消费总额;每个顾客在每个商店只有一个消费总额;每个顾客只属于一个单位;每个顾客只属于一个单位;每个顾客单位只有一个地址、一个电话。每个顾客单位只有一个地址、一个电话。试回答下列问题:试回答下列问题:(1)说明)说明R不是不是2NF的理由,并把的理由,并把R分解成分解成2NF模式集。模式集。(2)进而分解成)进而分解成3NF模式集。模式集。第67页,共67页,编辑于2022年,星期六