《5- 模式设计理论.ppt》由会员分享,可在线阅读,更多相关《5- 模式设计理论.ppt(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、5 关系数据库规范化理论关系数据库规范化理论同济大学同济大学本章本章目标目标 本章主要介绍关系数据库的规范化本章主要介绍关系数据库的规范化理论,理论,要求对关系模式设计中可能出现要求对关系模式设计中可能出现的问题及其产生原因以及解决的途径、的问题及其产生原因以及解决的途径、分解的原则和方法进行理解和掌握。分解的原则和方法进行理解和掌握。5.1 问题的概述问题的概述5.1.1 问题的提出与分析问题的提出与分析 数据库理论与设计中有一个重要的问数据库理论与设计中有一个重要的问题,就是在一个数据库中如何构造合适的题,就是在一个数据库中如何构造合适的关系模式,它涉及一系列的理论与技术,关系模式,它涉及
2、一系列的理论与技术,从而形成了关系数据库设计理论。由于合从而形成了关系数据库设计理论。由于合适的关系模式要符合一定的规范化要求,适的关系模式要符合一定的规范化要求,所以又可称为关系数据库的规范化理论。所以又可称为关系数据库的规范化理论。q 问题的提出问题的提出 例例5.1.1设有一个关系模式设有一个关系模式R(U),),其中其中U为为由属性由属性S#,C#,Tn,Td和和G组成的属性集合,其组成的属性集合,其中中S#和和C#的含义同前,而的含义同前,而Tn为任课教师姓名,为任课教师姓名,Td为任课教师所在系别,为任课教师所在系别,G为课程成绩。给关系具有为课程成绩。给关系具有如下语义:如下语义
3、:一个学生只有一个学号,一门课程只有一个课一个学生只有一个学号,一门课程只有一个课程号;程号;每一位学生选修的每一门课程都有一个成绩;每一位学生选修的每一门课程都有一个成绩;每一门课程只有一位教师任课,但一门教师可每一门课程只有一位教师任课,但一门教师可以担任多门课程;以担任多门课程;教师没有重名,每一位教师只属于一个系。教师没有重名,每一位教师只属于一个系。v根据上述语义和常识,可以知道根据上述语义和常识,可以知道R R的候选的候选键有以下三组:键有以下三组:S#,C#、C#,Tn、Tn,Td选定选定S#,C#作为主键作为主键通过分析关系模式通过分析关系模式R(U),),我们可以发我们可以发
4、现下面两类问题。现下面两类问题。v第一类问题是所谓数据大量冗余这表现在:第一类问题是所谓数据大量冗余这表现在:每一门课程的任课教师姓名必须对选修该门每一门课程的任课教师姓名必须对选修该门课程的学生重复一次;课程的学生重复一次;每一门课程的任课教师所在的系名必须对选每一门课程的任课教师所在的系名必须对选修该门课程的学生重复一次。修该门课程的学生重复一次。v第二类问题是所谓更新出现异常第二类问题是所谓更新出现异常(update anomalies)这表现在:这表现在:修改异常修改异常(modification anomalies)修改一门课程的修改一门课程的任课教师,或者一门课程由另一个开设,就需
5、要修改任课教师,或者一门课程由另一个开设,就需要修改多个元组。如果不分修改,部分不修改,就会出现数多个元组。如果不分修改,部分不修改,就会出现数据间的不一致。据间的不一致。插入异常插入异常(insert anomalies)由于主键中元素的属性由于主键中元素的属性值不能取空值,如果某系的一位教师不开课,则这位值不能取空值,如果某系的一位教师不开课,则这位教师的姓名和所属的系名就不能插入;如果一位教师教师的姓名和所属的系名就不能插入;如果一位教师所开的课程无人选修或者一门课程列入计划而目前不所开的课程无人选修或者一门课程列入计划而目前不开,也无法插入。开,也无法插入。删除异常删除异常(delet
6、ion anomalies)如果所有学生都退选如果所有学生都退选一门课,则有关这门课的其他数据(一门课,则有关这门课的其他数据(Tn和和Td)也将也将删除;同样,删除;同样,如果一位教师因故暂时停开,则这位教如果一位教师因故暂时停开,则这位教师的其他信息(师的其他信息(Td,C#)也将被删除。也将被删除。q 问题的分析问题的分析 这两类现象的根本原因在于关系的结构。这两类现象的根本原因在于关系的结构。一个关系可以有一个或者多个候选键,其一个关系可以有一个或者多个候选键,其中一个可以选为主键。主键的值唯一确定其他中一个可以选为主键。主键的值唯一确定其他属性的值,它是各个元组型和区别的标识,也属性
7、的值,它是各个元组型和区别的标识,也是一个元组存在的标识。这些候选键的值不能是一个元组存在的标识。这些候选键的值不能重复出现,也不能全部或者部分设为空值。本重复出现,也不能全部或者部分设为空值。本来这些候选键都可以作为独立的关系存在,在来这些候选键都可以作为独立的关系存在,在实际上却是不得不依附其他关系而存在。这就实际上却是不得不依附其他关系而存在。这就是关系结构带来的限制,它不能正确反映现实是关系结构带来的限制,它不能正确反映现实世界的真实情况。世界的真实情况。如果在构造关系模式的时候,不从语义上如果在构造关系模式的时候,不从语义上研究和考虑到属性间的这种关联,简单地将有研究和考虑到属性间的
8、这种关联,简单地将有关系和无关系的、关系密切的和关系松散的、关系和无关系的、关系密切的和关系松散的、具有此种关联的和有彼种关联的属性随意编排具有此种关联的和有彼种关联的属性随意编排在一起,就必然发生某种冲突,引起某些在一起,就必然发生某种冲突,引起某些“排排它它”现象出现,即冗余度水平较高,更新产生现象出现,即冗余度水平较高,更新产生异常。解决问题的根本方法就是将关系模式进异常。解决问题的根本方法就是将关系模式进行分解,也就是进行所谓关系的规范化。行分解,也就是进行所谓关系的规范化。5.1.2 问题的解决方案问题的解决方案 由上面的讨论可以知道,在关系数据库的由上面的讨论可以知道,在关系数据库
9、的设计当中,不是随便一种关系模式设计方案都设计当中,不是随便一种关系模式设计方案都是可行的,更不是任何一种关系模式都是可以是可行的,更不是任何一种关系模式都是可以投入应用的。由于数据库中的每一个关系模式投入应用的。由于数据库中的每一个关系模式的属性之间需要满足某种内在的必然联系,因的属性之间需要满足某种内在的必然联系,因此,设计一个好的数据库的根本方法是先要分此,设计一个好的数据库的根本方法是先要分析和掌握属性间的语义关联,然后再依据这些析和掌握属性间的语义关联,然后再依据这些关联得到相应的设计方案。关联得到相应的设计方案。就目前而言,人们认识到属性之间一般有两就目前而言,人们认识到属性之间一
10、般有两种依赖关系,一种是函数依赖关系,一种是多值种依赖关系,一种是函数依赖关系,一种是多值依赖关系。函数依赖关系与更新异常密切相关,依赖关系。函数依赖关系与更新异常密切相关,多值依赖与数据冗余密切联系。基于对这两种依多值依赖与数据冗余密切联系。基于对这两种依赖关系不同层面上的具体要求,人们又将属性之赖关系不同层面上的具体要求,人们又将属性之间的联系分为若干等级,这就是所谓的关系的规间的联系分为若干等级,这就是所谓的关系的规范化范化(normalization)。由此看来,解决问题的基本方案就是分析研由此看来,解决问题的基本方案就是分析研究属性之间的联系,按照每个关系中属性间满足究属性之间的联系
11、,按照每个关系中属性间满足某种内在语义条件,也就是按照属性间联系所处某种内在语义条件,也就是按照属性间联系所处的等级规范来构造关系。由此产生的一整套有关的等级规范来构造关系。由此产生的一整套有关理论称之为关系数据库的规范化理论。规范化理理论称之为关系数据库的规范化理论。规范化理论是关系数据库设计中的最重要部分。论是关系数据库设计中的最重要部分。5.2 规范化基本理论规范化基本理论 5.2.1 函数依赖函数依赖q函数依函数依赖赖的概念的概念 设设R(U)是属性集是属性集U上的关系模式,上的关系模式,X、Y是是U的一个子集。的一个子集。R是是R(U)中的任意中的任意给给定定的一个关系的一个关系r。
12、若若对对于于r中任意两个元中任意两个元组组s和和t,当,当sX=tX时时,就有,就有sY=tX,则则称属性称属性子集子集X函数决定属性子集函数决定属性子集Y或者称或者称Y函数依函数依赖赖于于X,否否则则就称就称X不函数决定不函数决定Y或者称或者称Y不函不函数依数依赖赖于于X。如果如果Y函数依赖于函数依赖于X,则记为则记为XY;如果如果XY,则称,则称X为决定因素为决定因素(Determinant);如果如果XY,且,且YX,则记为则记为XY;如果如果Y不函数依赖于不函数依赖于X,则记为则记为XY特别需要注意得是函数依赖不是指关系模式特别需要注意得是函数依赖不是指关系模式R中中某个或某些关系满足
13、的约束条件,而是指某个或某些关系满足的约束条件,而是指R的一的一切关系均要满足的约束条件。切关系均要满足的约束条件。q 特殊的函数依赖特殊的函数依赖非平凡函数依赖非平凡函数依赖 如果如果XY,但,但Y不是不是X的子集,则称的子集,则称XY是是非平凡的函数依赖,否则称为平凡的函数依赖。非平凡的函数依赖,否则称为平凡的函数依赖。完全函数依赖完全函数依赖 如果如果XY,但对于但对于X中的任意一个真子集中的任意一个真子集X,都有都有Y不依赖于不依赖于X,否则称为否则称为Y完全依赖于完全依赖于X。当。当Y完全依赖于完全依赖于X时,记为时,记为:部分函数依赖部分函数依赖 如果如果XY,但,但Y不完全函数依
14、赖于不完全函数依赖于X,则则称称Y对对X部分函数依赖,记为:部分函数依赖,记为:传递函数依赖传递函数依赖 如果如果Y非平凡函数依赖于非平凡函数依赖于X,但,但X不函数依赖于不函数依赖于Y,并且并且Z函数依赖于函数依赖于Y,则称则称Z传递函数依赖于传递函数依赖于X。q 键键定义定义 设设K是是R(U,F)中的属性子集,如果中的属性子集,如果KY,则称则称K为为R的超键的超键(Super key)。如果如果K为为R的超键,并且的超键,并且K是是“最小的最小的”,即,即K的任意一个真子集都不再是的任意一个真子集都不再是R的超键,则称的超键,则称K为为R的候选键的候选键(Candidate key),
15、超键也简称为超键也简称为“键键”。设属性子集设属性子集K不是关系模式不是关系模式R的候选键,但是的候选键,但是另一个关系模式的候选键,则称另一个关系模式的候选键,则称K是是R的外键的外键(Foreign key)。一个关系一个关系R的候选键可以有多个。如果在其的候选键可以有多个。如果在其中选定一个,则称该选定的候选键为主键中选定一个,则称该选定的候选键为主键(Prime key)。主属性与非主属性主属性与非主属性候选键中的任意一个属性元素称为主属性候选键中的任意一个属性元素称为主属性(Prime attribute););不在候选键中的属性称为非主属性不在候选键中的属性称为非主属性(Nonpr
16、ime attribute)或者非键属性或者非键属性(Non-key attribute)。5.2.2 依据于函数依赖的范式依据于函数依赖的范式q 关系数据的基本要求关系数据的基本要求第一范式(第一范式(1NF)如果一个关系模式中的每一个属性值都是如果一个关系模式中的每一个属性值都是一个不可分解的数据量,则称该关系模式满足一个不可分解的数据量,则称该关系模式满足第一范式第一范式(first normal form),记为记为R1NF。第一范式规定了一个关系中的属性值必须第一范式规定了一个关系中的属性值必须是是“原子原子”的,它排斥了属性值为元组、数组的,它排斥了属性值为元组、数组或某种复合数据
17、的可能性,使得关系数据库中或某种复合数据的可能性,使得关系数据库中所与关系的属性值都是所与关系的属性值都是“最简形式最简形式”,这样就,这样就可以做到起始结构简单,为以后复杂的讨论带可以做到起始结构简单,为以后复杂的讨论带来极大的方便。一般而言,每一个关系模式都来极大的方便。一般而言,每一个关系模式都必须满足第一范式,这是对每一个关系最基本必须满足第一范式,这是对每一个关系最基本的起码要求。的起码要求。q 第二范式第二范式关系模式的确定关系模式的确定一般对于一个关系一般对于一个关系R而言,除了要确定而言,除了要确定R的属性的属性U之外,还要根据之外,还要根据R的语义确定这个关系模式上的语义确定
18、这个关系模式上的所有函数依赖的所有函数依赖F,这样一个关系模式就是由三这样一个关系模式就是由三元元组组R、U、F确定的一个整体,可以写为确定的一个整体,可以写为R(U,F)。需要注意的是,这里的表达式仅仅表示需要注意的是,这里的表达式仅仅表示一个三元组,并不表示通常一个三元组,并不表示通常“谓词谓词”或者关系。或者关系。学生关系模式学生关系模式S可以写为可以写为S(S#,Sn,Sd,Sa,S#Sn,S#Sd,S#Sa)假设有一个关系假设有一个关系SCG,它由属性它由属性S#、Sn、Sd、Ss、C#、G其中其中Ss表示学生所学专业,其它含表示学生所学专业,其它含义同前。义同前。这个关系的某些语义
19、如下:这个关系的某些语义如下:每个学生属于一个且仅属于一个系与一个专业;每个学生属于一个且仅属于一个系与一个专业;每个学生修读的每门课程有且仅有一个成绩;每个学生修读的每门课程有且仅有一个成绩;各个系无相同专业。各个系无相同专业。v按照上述语义和其他信息,上述属性之间的函数按照上述语义和其他信息,上述属性之间的函数依赖关系可以如下表示:依赖关系可以如下表示:S#Sn,S#Sd,S#Ss,(,(S#,C#)Gv此时有关系模式如下此时有关系模式如下:SCG(S#、Sn、Sd、Ss、C#、G,S#Sn,S#Sd,S#Ss,(,(S#,C#)G)对于明确了函数依赖的关系模式就可以对于明确了函数依赖的关
20、系模式就可以进行规范化的工作了。规范化的核心是对关进行规范化的工作了。规范化的核心是对关系模式逐级提出所必需遵循的约束条件,其系模式逐级提出所必需遵循的约束条件,其表现形式就是各级表现形式就是各级“范式范式”,出发点和落脚,出发点和落脚点当然是为着所建立的关系模式具有较少的点当然是为着所建立的关系模式具有较少的异常性和较低的冗余度。异常性和较低的冗余度。第二范式的概念第二范式的概念如果关系模式如果关系模式R的每一个非主属性完全函数依的每一个非主属性完全函数依赖于赖于R的键,则称该关系模式的键,则称该关系模式R满足第二范式,满足第二范式,记为记为R2NF。由定义可以知道,第二范式的实质是要从第一
21、由定义可以知道,第二范式的实质是要从第一范式中消除非主属性对键的部分函数依赖范式中消除非主属性对键的部分函数依赖。一般范式与第二范式一般范式与第二范式 满足第一范式的关系模式不一定满足第二满足第一范式的关系模式不一定满足第二范式。例如在范式。例如在SCG当中,当中,(S#,C#)是键,而是键,而SCG所有非主属性的集合为所有非主属性的集合为Sn,Sd,Ss、G,但是部分依赖于但是部分依赖于(S#,C#)的。因为的。因为G完全完全依赖于依赖于C#,Sn,Sd,Ss 完全依赖于完全依赖于 S#。一个关系仅仅满足第一范式是不够的,为一个关系仅仅满足第一范式是不够的,为了减少异常性和降低冗余度,它还应
22、当满足第了减少异常性和降低冗余度,它还应当满足第二范式。这里的基本方法是将一个不满足第二二范式。这里的基本方法是将一个不满足第二范式的关系模式进行分解,使得分解后的关系范式的关系模式进行分解,使得分解后的关系模式满足第二范式。模式满足第二范式。v SCG 可以分解为如下两个关系模式:可以分解为如下两个关系模式:SCG1(S#、C#、G,(S#,C#)G)SCG2(S#、Sn、Sd、Ss,S#Sn,S#Sd,S#Ss)此时,此时,SCG1 和和 SCG2 就是满足第二范式的了。就是满足第二范式的了。GS#C#SdSsSnS#C#GS#SdSsSn满足第二范式关系的分析满足第二范式关系的分析 第二
23、范式不能完全避免异常现象第二范式不能完全避免异常现象的发生。例如在的发生。例如在SCG2中,它由如下的中,它由如下的关系模式:关系模式:S#SnSdSn 在这个模式当中,如果要登记一个尚未在这个模式当中,如果要登记一个尚未招生的系的专业设置情况,要插入这个信息招生的系的专业设置情况,要插入这个信息就比较困难。这样,如果要删除一些学生,就比较困难。这样,如果要删除一些学生,有可能将有关系的专业设置情况一起删掉。有可能将有关系的专业设置情况一起删掉。其中的原因,就在于其中的原因,就在于Sd是函数依赖于是函数依赖于S#的,的,又是函数依赖又是函数依赖于于Ss的;同时,的;同时,Ss函数依赖于函数依赖
24、于S#,由此必然引起传递函数依赖的出现。由由此必然引起传递函数依赖的出现。由此可见,要进一步消除异常现象,必须使得此可见,要进一步消除异常现象,必须使得关系模式中不出现函数传递现象。关系模式中不出现函数传递现象。q 第三范式第三范式概念概念如果关系模式如果关系模式R中的每一个非主属性既不部分中的每一个非主属性既不部分依赖也不传递依赖于键,则称这个关系模式属依赖也不传递依赖于键,则称这个关系模式属于第三范式,记为于第三范式,记为R3NF。设设F是关系模式是关系模式R的的FD集,如果对于集,如果对于F中每一个中每一个非平凡的非平凡的FD XY,都有都有X是是R的超键,或者的超键,或者Y的每个属性都
25、是主属性,那么称的每个属性都是主属性,那么称R是是3NF的模的模式。式。;设关系模式设关系模式R,当,当R上每一个上每一个FD X-A满足下列满足下列条件之一时:条件之一时:即即XA 是一个平凡的是一个平凡的FDX是是R的超键的超键A是主属性是主属性关系模式关系模式R就是就是3NF模式。模式。如果如果RR3NF,则对于任意一个非平凡函数依赖则对于任意一个非平凡函数依赖XY,Y不能是非主属性,否则,任取不能是非主属性,否则,任取R中的中的键键K,由于由于X不是超键,所以不是超键,所以KX且且K不依赖于不依赖于X,而题设是而题设是XY,也就是非主属性也就是非主属性Y传递依赖于传递依赖于键键K。此时
26、,此时,X不能是一个键不能是一个键K的真子集,否则的真子集,否则Y将部分函数依赖于键将部分函数依赖于键K;反之,如果反之,如果X不是超键,则不是超键,则Y不会部分依赖于不会部分依赖于X,当然以不会部分依赖于键;若当然以不会部分依赖于键;若Y是主属性,则第是主属性,则第三范式是对非主属性而言,则自然满足条件。三范式是对非主属性而言,则自然满足条件。满足第三范式关系的分析满足第三范式关系的分析由主属性和非主属性,人们可以将关系模式中的由主属性和非主属性,人们可以将关系模式中的所有属性分为两大类:一类是所有键的集合(在所有属性分为两大类:一类是所有键的集合(在不引起混淆的情况下,也可以看作是所有键中
27、的不引起混淆的情况下,也可以看作是所有键中的元素元素主属性构成的集合),称之为主属性集;主属性构成的集合),称之为主属性集;另一类是所有非主属性构成的集合,称之为非主另一类是所有非主属性构成的集合,称之为非主属性集。第三范式实际上是要求每一个非主属性属性集。第三范式实际上是要求每一个非主属性必须完全依赖而且不能传递依赖于主属性集合中必须完全依赖而且不能传递依赖于主属性集合中的键,从而在关系模式中理清了复杂的依赖关系,的键,从而在关系模式中理清了复杂的依赖关系,实现了属性依赖的标准化和单一化,避免了异常实现了属性依赖的标准化和单一化,避免了异常性的出现。性的出现。可以将满足第三范式的关系模式看作
28、为一个物理可以将满足第三范式的关系模式看作为一个物理中的原子,其中主属性集合就是原子核,而非主中的原子,其中主属性集合就是原子核,而非主属性集合中的元素就是这个原子中的电子,它们属性集合中的元素就是这个原子中的电子,它们紧紧依赖于主属性集合而构成一个紧密的整体。紧紧依赖于主属性集合而构成一个紧密的整体。一般范式与第三范式一般范式与第三范式 一个范式如果不满足第三范式,可以通过一个范式如果不满足第三范式,可以通过模式分解将其分解为若干个模式,使得分解后模式分解将其分解为若干个模式,使得分解后的模式能够满足第三范式。的模式能够满足第三范式。例如:例如:SCG2满足第二范式,但是不满足第三满足第二范
29、式,但是不满足第三范式,可以将其分解为如下两个关系模式:范式,可以将其分解为如下两个关系模式:SCG21(S#,Sn.Ss)和和 SCG22(Ss,Sd)其依赖情况如下图所示其依赖情况如下图所示 S#C#GS#SnSsSsSdv SCG 经过几次分解之后,得到三个关系模式:经过几次分解之后,得到三个关系模式:SCG1,SCG21,SCG22 这三个模式都满足第三范式,同时没有异这三个模式都满足第三范式,同时没有异常现象出现,而且冗余度较小。常现象出现,而且冗余度较小。q BC范式范式概念概念设设R是一个关系模式,如果对于每一个函数依是一个关系模式,如果对于每一个函数依赖对赖对XY,其中的决定因
30、素其中的决定因素X都含有键,则称都含有键,则称关系模式关系模式R满足满足Boyce-Codd范式,简称范式,简称BC范式,范式,记为记为RBCNF。BC范式的本质意义在于,其中的每一个决定因范式的本质意义在于,其中的每一个决定因素都是一个超键。或者说,在素都是一个超键。或者说,在BCNF中,除了中,除了键决定其所有属性和超键决定其所有属性之外,键决定其所有属性和超键决定其所有属性之外,绝不会有其他的非平凡函数依赖。特别是不会绝不会有其他的非平凡函数依赖。特别是不会有非主属性作为决定因素的非平凡函数依赖。有非主属性作为决定因素的非平凡函数依赖。BCNF在概念上已经是构单纯的了,就函数依在概念上已
31、经是构单纯的了,就函数依赖而言,它进行了必要的分解,并且消除了增、赖而言,它进行了必要的分解,并且消除了增、删中的异常现象和一些冗余。删中的异常现象和一些冗余。一般而言,函数依赖中的决定因素不一定一般而言,函数依赖中的决定因素不一定都是含有键,例如都是含有键,例如在在SCG22中,中,SsSd,但是但是Ss并不含有并不含有SCG的键。的键。关系模式中的决定因素不含该模式中的键,关系模式中的决定因素不含该模式中的键,会有什么样的后果呢?换句话说会有什么样的后果呢?换句话说,BC范式范式会有什么样的性质呢?会有什么样的性质呢?v 由由BC范式的定义可以知到:范式的定义可以知到:所有非主属性对于每一
32、个键都是完全函所有非主属性对于每一个键都是完全函数依赖的;数依赖的;所有主属性对于每一个不含有它的键也所有主属性对于每一个不含有它的键也是完全函数依赖的;是完全函数依赖的;任何属性都不会完全依赖于非键的任何任何属性都不会完全依赖于非键的任何一组属性。一组属性。BC范式的基本性质范式的基本性质当当RBCNF,则由则由BCNF定义可知,定义可知,BCNF的的实质是排除了任何属性对键的传递依赖和部分实质是排除了任何属性对键的传递依赖和部分依赖,所以依赖,所以R3NF。这样就可以得到下面的这样就可以得到下面的定理,它说明定理,它说明BCNF不会比不会比3NF“宽松宽松”。如果关系模式如果关系模式R(U
33、)满足满足BCNF,则,则R必满足必满足3NF。那末,满足那末,满足3NF是否也满足是否也满足BCNF呢?下面的呢?下面的例子说明这样的情形在一般条件下是不成立的,例子说明这样的情形在一般条件下是不成立的,它表明它表明BCNF是比是比3NF更为严格。更为严格。例:例:设有关系模式设有关系模式SCT,其中,其中,S,C的含义如前,的含义如前,而而T表示教师。表示教师。SCT中有以下语义:中有以下语义:每个教师仅上一门课程;每个教师仅上一门课程;学生与课程的关系确定之后,教师即唯一确定。学生与课程的关系确定之后,教师即唯一确定。v由此,由此,SCT中就有下面的函数依赖关系:中就有下面的函数依赖关系
34、:(S,C)T TC SCTSTTC 这个关系模式满足这个关系模式满足3NF,因为主属性集合因为主属性集合为为S,C,非主属性集合为非主属性集合为T,而,而T完全依赖完全依赖于于S,C,同时不存在传递依赖。这里,同时不存在传递依赖。这里,T是是决定因素,但决定因素,但T不含有任何键。不含有任何键。这个例子说明,即使是这个例子说明,即使是3NF范式也避免不范式也避免不了异常性。因为如果某门课程本学期不开设,了异常性。因为如果某门课程本学期不开设,就无学生选读,此时有关教师固定开设这门课就无学生选读,此时有关教师固定开设这门课程的信息就无法显示。由此看来,应当进一步程的信息就无法显示。由此看来,应
35、当进一步将关系模式分解为将关系模式分解为BCNF。在此例中,在此例中,SCT可可以进一步分解为以进一步分解为ST和和CT,这两个关系模这两个关系模式都是式都是BCNF,不会产生异常现象。不会产生异常现象。5.3 规范化理论中其它问题规范化理论中其它问题5.3.1 规范化问题小结规范化问题小结q 规范化问题的整体认识规范化问题的整体认识规范化的目的规范化的目的 解决插入、删除中出现的异常现象,解决插入、删除中出现的异常现象,处理数据冗余程度高的问题。处理数据冗余程度高的问题。规范化的方法规范化的方法 从关系模式中各个属性之间的依赖关系从关系模式中各个属性之间的依赖关系(函数依赖和多值依赖)着眼,
36、尽力做到每(函数依赖和多值依赖)着眼,尽力做到每个模式只有来表示客观世界中的个模式只有来表示客观世界中的“一个一个”事事件。件。规范化的实现方案规范化的实现方案 采用模式分解的方法。采用模式分解的方法。从本质上来说,规范化的过程就是一个从本质上来说,规范化的过程就是一个不断消除属性依赖关系中某些弊病的过程,不断消除属性依赖关系中某些弊病的过程,而在实际上,就是从第一范式到第四范式的而在实际上,就是从第一范式到第四范式的逐步递进的过程。逐步递进的过程。1NF消除决定因素中消除决定因素中 消除非主属性对主键的部分依赖消除非主属性对主键的部分依赖非主属性的非平非主属性的非平 2NF凡多值依赖凡多值依
37、赖 消除非主属性对主键的传递依赖消除非主属性对主键的传递依赖 3NF 消除主属性对主键的部分依赖于消除主属性对主键的部分依赖于 传递依赖传递依赖 BCNF 消除非平凡且非函数依赖的多值依赖消除非平凡且非函数依赖的多值依赖 4NFq 关于规范化问题的说明关于规范化问题的说明 规范化是一种理论,它研究如何通过规范以规范化是一种理论,它研究如何通过规范以解决异常于冗余现象。在实际数据库设计中构做解决异常于冗余现象。在实际数据库设计中构做关系模式是需要考虑到这种因素。但是,客观世关系模式是需要考虑到这种因素。但是,客观世界是复杂的,在构做模式时还需要考虑到其他的界是复杂的,在构做模式时还需要考虑到其他
38、的多种因素。如果模式分解过多,就会在数据查询多种因素。如果模式分解过多,就会在数据查询过程中用到较多的连接运算,而这必然影响到查过程中用到较多的连接运算,而这必然影响到查询速度。因此在实际问题当中,需要综合多方面询速度。因此在实际问题当中,需要综合多方面的因素,统一权衡利弊,最后拿出的应是一个较的因素,统一权衡利弊,最后拿出的应是一个较为切合实际的合理的模式。为切合实际的合理的模式。5.3.2 规范化研究的进一步课题规范化研究的进一步课题 函数依赖理论的研究函数依赖理论的研究 模式分解理论的研究模式分解理论的研究本章本章小结小结函数依赖:函数依赖:函数依赖的定义;关系的键码函数依赖的定义;关系的键码和超键码;函数依赖规则。和超键码;函数依赖规则。关系模式设计:关系模式设计:可能出现的问题;问题产可能出现的问题;问题产生的根源;解决的途径;分解的原则;分生的根源;解决的途径;分解的原则;分解的方法;第一、二、三、解的方法;第一、二、三、BC范范式。式。