《关系数据库规范化理论课件》由会员分享,可在线阅读,更多相关《关系数据库规范化理论课件(39页珍藏版)》请在金锄头文库上搜索。
1、上一页上一页下一页下一页返回首页返回首页第第 二二 章章 关系数据库规范化理论关系数据库规范化理论 2.1 2.1 规范化问题的提出规范化问题的提出2.2 2.2 函数依赖函数依赖2.3 2.3 关系规范化关系规范化 2.4 2.4 关系模式的分解准则关系模式的分解准则2.5 2.5 小结小结上一页上一页下一页下一页返回首页返回首页2.1 2.1 规范化问题的提出规范化问题的提出关关系系数数据据库库的的规规范范化化理理论论最最早早是是由由关关系系数数据据库库的的创创始始人人E.F.CoddE.F.Codd提出的,提出的,后后经经许许多多专专家家学学者者对对关关系系数数据据库库理理论论作作了了深
2、深入入的的研研究究和发展,形成了一整套和发展,形成了一整套有关关系数据库设计的理论有关关系数据库设计的理论。关系数据库的规范化理论主要包括三个方面的内容:关系数据库的规范化理论主要包括三个方面的内容:函数信赖函数信赖范式(范式(Normal FormNormal Form)模式设计和模式分解模式设计和模式分解其其中中,函函数数信信赖赖起起着着核核心心的的作作用用,是是模模式式分分解解和和模模式式设计的基础,设计的基础,范式范式是模式分解的标准。是模式分解的标准。 上一页上一页下一页下一页返回首页返回首页2.1 规范化问题的提出规范化问题的提出数据库的设计为什么要遵循一定的规范化理论?数据库的设
3、计为什么要遵循一定的规范化理论?什么是好的关系模式?什么是好的关系模式?某些不好的关系模式可能导致哪些问题?某些不好的关系模式可能导致哪些问题? 下面通过例子进行分析下面通过例子进行分析:例如,例如,设有描述学生修课及住宿情况的关系模式:设有描述学生修课及住宿情况的关系模式:S-L-S-L-C C(SnoSno,Sdept,Sloc,Sdept,Sloc,CnoCno,Grade,Grade)SnoSno表示学生学号,表示学生学号, SdeptSdept表示学生所在的表示学生所在的 系,系,SlocSloc表示学生表示学生所住宿舍楼,所住宿舍楼,Cno表示课程号,表示课程号, GradeGra
4、de表示成绩。表示成绩。 上一页上一页下一页下一页返回首页返回首页2.1 规范化问题的提出规范化问题的提出SnoSno SdeptSdept SLOC SLOC CnoCno Grade Grade 9812101 9812101 计算机计算机 2 2公寓公寓 DB DB 80809812101 9812101 计算机计算机 2 2公寓公寓 OS OS 85859821101 9821101 信息信息 1 1公寓公寓 C C 90909821101 9821101 信息信息 1 1公寓公寓 DS DS 84849821102 9821102 信息信息 1 1公寓公寓 OS OS 7878S-L
5、-C关系模式实例关系模式实例l 分析以上关系中的数据,我们可以看出:分析以上关系中的数据,我们可以看出:(SNO,CNO)属性的组合能属性的组合能唯一标识一个元组,所以唯一标识一个元组,所以(SNO,CNO)是该关系模式的是该关系模式的主码主码。上一页上一页下一页下一页返回首页返回首页3. 3. 删除异常删除异常 如果某个学生不再选修如果某个学生不再选修C C课程,本应该只删去课程,本应该只删去C C,但但C C是主是主关系键的一部分,为保证实体完整性,必须将整个元组一起删关系键的一部分,为保证实体完整性,必须将整个元组一起删掉,这样有关该学生的其它信息也随之丢失。掉,这样有关该学生的其它信息
6、也随之丢失。2.1 规范化问题的提出规范化问题的提出但在进行数据库的操作时,会出现以下几方面的问题:但在进行数据库的操作时,会出现以下几方面的问题:1. 数据冗余数据冗余 学生所在的系名和这个系所对应的宿舍楼名字存储的次数等学生所在的系名和这个系所对应的宿舍楼名字存储的次数等于该系的学生人数乘以每个学生选修的课程门数,数据的冗于该系的学生人数乘以每个学生选修的课程门数,数据的冗余度很大,浪费了存储空间。余度很大,浪费了存储空间。2. 插入异常插入异常 如果某个学生尚未选课如果某个学生尚未选课, 则学生所在的系名和这个系所对应的宿则学生所在的系名和这个系所对应的宿舍楼无法插入到数据库中。舍楼无法
7、插入到数据库中。 因为在这个关系模式中,因为在这个关系模式中,(SNO,CNO)是主关系键。根据关系的是主关系键。根据关系的实体完整性约束,主关系键的值不能为空,当某个学生尚未选课,实体完整性约束,主关系键的值不能为空,当某个学生尚未选课,即即Cno为空为空, 因此不能进行插入操作。因此不能进行插入操作。上一页上一页下一页下一页返回首页返回首页2.1 规范化问题的提出规范化问题的提出4. 更新异常更新异常 如果某一学生从计算机系转到信息系,那么不但要修改此学如果某一学生从计算机系转到信息系,那么不但要修改此学生的生的Sdept列的值列的值,而且还要修改其而且还要修改其Sloc的值的值,稍有不慎
8、,就稍有不慎,就有可能漏改某些记录,这就会造成数据的不一致性,破坏了有可能漏改某些记录,这就会造成数据的不一致性,破坏了数据的完整性。数据的完整性。由于存在以上问题,我们说,由于存在以上问题,我们说,S-L-CS-L-C是一个不好的关系模式。那么,怎是一个不好的关系模式。那么,怎样才能得到一个好的关系模式呢?样才能得到一个好的关系模式呢?我们把关系模式我们把关系模式S-L-CS-L-C分解为下面三个结构简单的关系模式,如图所示。分解为下面三个结构简单的关系模式,如图所示。上一页上一页下一页下一页返回首页返回首页SnoSno SdeptSdept SLOC SLOC CnoCno Grade G
9、rade 9812101 9812101 计算机计算机 2 2公寓公寓 DB DB 80809812101 9812101 计算机计算机 2 2公寓公寓 OS OS 85859821101 9821101 信息信息 1 1公寓公寓 C C 90909821101 9821101 信息信息 1 1公寓公寓 DS DS 84849821102 9821102 信息信息 1 1公寓公寓 OS OS 7878SnoSno CnoCno Grade Grade 9812101 9812101 DB DB 80809812101 9812101 OS OS 85859821101 9821101 C C
10、90909821101 9821101 DS DS 84849821102 9821102 OS OS 7878SdeptSdept SlocSloc 计算机计算机 2 2公寓公寓 信息信息 1 1公寓公寓 SnoSno SdeptSdept 9812101 9812101 计算机计算机 9821102 9821102 信息信息 2.1 规范化问题的提出规范化问题的提出S-LS-DS-C学生关系学生关系S-S-D(SnoD(Sno, , SdeptSdept) ) 选课关系选课关系S-S-C(Sno,Cno,GradeC(Sno,Cno,Grade) )系关系系关系S-S-L(Sdept,Sl
11、ocL(Sdept,Sloc) )上一页上一页下一页下一页返回首页返回首页2.1 规范化问题的提出规范化问题的提出经过上述分析,我们说分解后的关系模式是一个好的关系数据库模式。经过上述分析,我们说分解后的关系模式是一个好的关系数据库模式。一个好的关系模式应该具备以下四个条件:一个好的关系模式应该具备以下四个条件:l尽可能少的数据冗余尽可能少的数据冗余l没有插入异常没有插入异常l没有删除异常没有删除异常l没有更新异常没有更新异常如何按照一定的规范设计关系模式,将结构复杂的关系分解成如何按照一定的规范设计关系模式,将结构复杂的关系分解成结构简单的关系,从而把不好的关系数据库模式转变为好的关结构简单
12、的关系,从而把不好的关系数据库模式转变为好的关系数据库模式,这就是系数据库模式,这就是关系的规范化关系的规范化。规范化又可以根据不同的要求而分成若干级别。规范化又可以根据不同的要求而分成若干级别。我们要设计的关系模式中的各属性是相互依赖、相互制约的,我们要设计的关系模式中的各属性是相互依赖、相互制约的,这样才构成了一个结构严谨的整体。这样才构成了一个结构严谨的整体。因此在设计关模式时,必须从语义上分析这些因此在设计关模式时,必须从语义上分析这些依赖关系依赖关系。上一页上一页下一页下一页返回首页返回首页2.2 2.2 函数依赖函数依赖1.1.函数依赖的定义函数依赖的定义 函数对我们来说已经是非常
13、熟悉的概念,对公式:函数对我们来说已经是非常熟悉的概念,对公式: Y Y= =f f( (X X) )给定一个给定一个X X值,都会有一个值,都会有一个Y Y值和它对应,也可以说值和它对应,也可以说X X函数决定函数决定Y Y,或或Y Y函数依赖于函数依赖于X X。在关系数据库中讨论函数或函数依赖注重的在关系数据库中讨论函数或函数依赖注重的是语义上的关系,是语义上的关系,比如:比如: 省省= =f f( (城市城市) )如果如果“城市城市”是自变量是自变量X X,“省省”是因变量或函数值是因变量或函数值Y Y。并且把并且把X X决定决定Y Y,或或Y Y函数依赖于函数依赖于X X表示为:表示为
14、: X XY Y上一页上一页下一页下一页返回首页返回首页2.2 2.2 函数依赖函数依赖函函数数依依赖赖定定义义:如如果果有有一一个个关关系系模模式式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。 例如:对学生关系模式:例如:对学生关系模式:StudentStudent(SnoSno, , SNameSName, ,
15、 SdeptSdept, , SageSage)有:有:SnoSNameSnoSName, , SnoSdeptSnoSdept, , SnoSageSnoSage 对学生修课关系模式:对学生修课关系模式:SCSC(SnoSno, , CnoCno, Grade, Grade)有:有:(SnoSno, , CnoCno)GradeGrade上一页上一页下一页下一页返回首页返回首页2.2 2.2 函数依赖函数依赖2函数依赖与属性之间的联系类型有关函数依赖与属性之间的联系类型有关(1)在一个关系模式中,如果属性)在一个关系模式中,如果属性X与与Y有有1:1联系时,则存在联系时,则存在函数依赖函数依
16、赖XY,YX,即即 X Y(2)如果属性如果属性X与与Y有有1:m的联系时,则只存在函数依赖的联系时,则只存在函数依赖XY。 例如,例如,Sno与与Sage,Sdept之间均为之间均为1:m联系,所以有联系,所以有 SNOSage,SnoSdept。(3)如果属性如果属性X与与Y有有m: n的联系时,则的联系时,则X与与Y之间不存在任何函数之间不存在任何函数依赖关系。依赖关系。 例如,一个学生可以选修多门课程,一门课程又可以为多个学生例如,一个学生可以选修多门课程,一门课程又可以为多个学生选修,所以选修,所以SNO与与CNO之间不存在函数依赖关系。之间不存在函数依赖关系。由于函数依赖与属性之间
17、的联系类型有关,所以在确定属性间的函由于函数依赖与属性之间的联系类型有关,所以在确定属性间的函数依赖关系时,可以从数依赖关系时,可以从分析属性间的联系类型入手,便可确定属性间分析属性间的联系类型入手,便可确定属性间的函数依赖。的函数依赖。 例如,当学生无重名时,例如,当学生无重名时,SNO SN上一页上一页下一页下一页返回首页返回首页2.2 2.2 函数依赖函数依赖3一些术语和符号一些术语和符号 设有关系模式设有关系模式R R( (A1A1, ,A2A2, , ,AnAn) ),X X和和Y Y均为均为 A1A1, ,A2A2, , ,AnAn 的子集的子集如果如果X XY Y,但但Y Y不包
18、含于不包含于X X,则称则称X XY Y是非平凡的函数依赖。是非平凡的函数依赖。如果如果X XY Y,则称则称X X为决定因子。为决定因子。fX XY YX XY Yp 如果如果Y Y函数不依赖于函数不依赖于X X,则记作则记作X Y X Y 。如果对如果对X X的某个真子集的某个真子集XX,有有XYXY,则称则称Y Y部分函数部分函数依赖于依赖于X X,( (或或称称Y Y对对X X部分函数依赖部分函数依赖) )记作记作 。 如果如果X XY Y,并且并且Y YX X,则记作则记作X X Y Y。如果如果X XY Y,并且对于并且对于X X的一个任意真子集的一个任意真子集X X/ / 都有都
19、有X X/ / Y Y,则称则称Y Y完全函数依赖于完全函数依赖于X X(Y(Y对对X X 完全函数依赖完全函数依赖) ),记作记作上一页上一页下一页下一页返回首页返回首页2.2 2.2 函数依赖函数依赖 例例1 1:有关系模式:有关系模式:SCSC(Sno,Sname,Cno,Credit,GradeSno,Sname,Cno,Credit,Grade) 各属性分别为:学号、姓名、课程号、学分、成绩,主码为(各属性分别为:学号、姓名、课程号、学分、成绩,主码为(SnoSno, , CnoCno)fp函数依赖关系有:函数依赖关系有:SnoSnameSnoSname 姓名函数依赖于学号姓名函数依
20、赖于学号因为因为SnoSno GradeGrade,Cno,Cno Grade, ( Grade, (Sno,CnoSno,Cno) ) Grade Grade, , 所以有所以有(SnoSno, , CnoCno) Grade Grade 成绩完全函数依赖于学号和课程号成绩完全函数依赖于学号和课程号(SnoSno, , CnoCno) SnameSname 姓名部分函数依赖于学号和课程号姓名部分函数依赖于学号和课程号上一页上一页下一页下一页返回首页返回首页2.2 2.2 函数依赖函数依赖如果如果XYXY(非平凡函数依赖,并且非平凡函数依赖,并且Y Y X X)、)、YZYZ,则称则称Z Z传
21、递函数传递函数依赖于依赖于X(X(或称或称Z Z对对X X传递函数依赖传递函数依赖) )。 例如例如: :在关系模式:在关系模式:S S(Sno,Sname,Dept,Dept_masterSno,Sname,Dept,Dept_master)中中, , 各属性分别为:学号、姓名、所在系和系主任(假设一个系只有一各属性分别为:学号、姓名、所在系和系主任(假设一个系只有一 个主任),主码为个主任),主码为SnoSno。 传递传递函数依赖关系有:函数依赖关系有: SnoSno SnameSname 由于:由于:SnoSno Dept , Dept Dept , Dept Dept_masterDe
22、pt_master所以有:所以有:SnoSno Dept_masterDept_master( (系主任传递函数依赖于学号系主任传递函数依赖于学号) )上一页上一页下一页下一页返回首页返回首页一一. .关系模式中的码关系模式中的码 1 1候选码候选码 设设K K为为R (U, F)R (U, F)中的属性或属性组,若中的属性或属性组,若K UK U,则则K K为为R R候选码。候选码。(U-U-表示关系表示关系R R的属性全集的属性全集, , F-F-表示关系表示关系R R上的依赖函数集上的依赖函数集) )主码:主码:关系关系R R ( (U U, , F F) )中可能有多个候选码,则选其中
23、一个作为中可能有多个候选码,则选其中一个作为 主码主码全码全码:候选码为整个属性组。:候选码为整个属性组。主属性与非主属性:主属性与非主属性:在在R R ( (U U, , F F) )中,中,包含在任一候选码中的属包含在任一候选码中的属性称为主属性,不包含在任一候选码中的属性称为非主属性。性称为主属性,不包含在任一候选码中的属性称为非主属性。 例例1 1:SCSC(SnoSno,CnoCno,GradeGrade)其候选码为其候选码为:(:(SnoSno,CnoCno),),也为主码也为主码则主属性为则主属性为: SnoSno,CnoCno , Grade Grade为非主属性。为非主属性。
24、 2.3 关系规范化关系规范化f 上一页上一页下一页下一页返回首页返回首页2.3 关系规范化关系规范化一一. .关系模式中的码关系模式中的码 例例2 2:R R(P P,W W,A A) 其中各属性含义分别为:其中各属性含义分别为: 演奏者,作品和听众。其语义为:一个演奏者演奏者,作品和听众。其语义为:一个演奏者可演奏多个作品,某一作品可被多个演奏者演奏;听众也可欣赏不同演可演奏多个作品,某一作品可被多个演奏者演奏;听众也可欣赏不同演奏者个不同作品。奏者个不同作品。其其候选码为:(候选码为:(P P,W W,A A),因为只有这三者才能确定一场音乐会。我们因为只有这三者才能确定一场音乐会。我们
25、称全部属性均为主码的表为称全部属性均为主码的表为全码表全码表。2 2外码外码 定义:定义:若若R R(U U,F F)的属性(组)的属性(组)X X(X X属于属于U U)是另一个关系是另一个关系S S的主的主码,则称码,则称X X为为R R的外码。的外码。 例例3: 3: 学生关系学生关系SD(SnoSD(Sno, , SdeptSdept) )和选课关系选课关系SC(Sno,Cno,Grade),SCSC(Sno,Cno,Grade),SC中的中的SnoSno是是SDSD中的中的主码主码, ,则则SnoSno是是SCSC的的外码外码 上一页上一页下一页下一页返回首页返回首页2.3 关系规范
26、化关系规范化二二. .范式范式规范化的规范化的基本思想基本思想是消除关系模式中的数据冗余,消除数据依赖中是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据插入、更新、删除时发生异常现象。的不合适的部分,解决数据插入、更新、删除时发生异常现象。这就要求关系数据库设计出来的关系模式要满足一定的条件。这就要求关系数据库设计出来的关系模式要满足一定的条件。我们把关系数据库的规范化过程中为不同程度的规范化要求设立的我们把关系数据库的规范化过程中为不同程度的规范化要求设立的不同标准称为不同标准称为范式范式(Normal FormNormal Form)。)。由于规范化的程度不同,就产生了由
27、于规范化的程度不同,就产生了不同的范式不同的范式。满足最基本规范化要求的关系模式叫满足最基本规范化要求的关系模式叫第一范式第一范式(1(1NF)NF)在第一范式中进一步满足一些要求为在第一范式中进一步满足一些要求为第二范式第二范式(2(2NF)NF)以此类推就产生了以此类推就产生了第三范式第三范式(3(3NF)NF)等概念。等概念。每种范式都规定了一些限制约束条件。每种范式都规定了一些限制约束条件。 上一页上一页下一页下一页返回首页返回首页2.3 关系规范化关系规范化二二. .范式范式范式的概念最早由范式的概念最早由E.F.CoddE.F.Codd提出。提出。从从19711971年年起起,Co
28、ddCodd相相继继提提出出了了关关系系的的三三级级规规范范化化形形式式,即即第第一一范范式(式(1 1NFNF)、)、第二范式(第二范式(2 2NFNF)、)、第三范式(第三范式(3 3NFNF)。)。19741974年年,CoddCodd和和BoyceBoyce以以共共同同提提出出了了一一个个新新的的范范式式的的概概念念,即即Boyce-Boyce-CoddCodd范式,简称范式,简称BCBC范式范式。19761976年年FaginFagin提出了第四范式,提出了第四范式,后来又有人定义了第五范式。后来又有人定义了第五范式。至至 此此 在在 关关 系系 数数 据据 库库 规规 范范 中中
29、建建 立立 了了 一一 个个 范范 式式 系系 列列 :1 1NF,2NF,3NF,BCNF,4NF,5NF,NF,2NF,3NF,BCNF,4NF,5NF,一级比一级有更严格的要求。一级比一级有更严格的要求。上一页上一页下一页下一页返回首页返回首页2.3 关系规范化关系规范化 各个范式之间的联系可以表示为:各个范式之间的联系可以表示为: 5 5NFNF 4NF 4NF BCNF BCNF 3NF 3NF 2NF 2NF 1NF 1NF上一页上一页下一页下一页返回首页返回首页2.3 关系规范化关系规范化1第一范式第一范式 第第一一范范式式(First Normal Form)是是最最基基本本的
30、的规规范范形形式式,即即关关系系中中每个属性都是不可再分的简单项。每个属性都是不可再分的简单项。 定定义义: :如如果果关关系系模模式式R R,其其所所有有的的属属性性均均为为简简单单属属性性,即即每每个个属属性性都是不可再分的,则称都是不可再分的,则称R R属于第一范式,简称属于第一范式,简称1 1NFNF,记作记作R R 1NF1NF。 系名称系名称 高级职称人数高级职称人数教授教授 副教授副教授 计算机系计算机系 6 61010信息管理系信息管理系 3 35 5电子与通讯系电子与通讯系 4 48 8系名称系名称教授教授 副教授副教授 计算机系计算机系 6 61010信息管理系信息管理系
31、3 35 5电子与通讯系电子与通讯系 4 48 8上一页上一页下一页下一页返回首页返回首页2.3 关系规范化关系规范化2第二范式第二范式 定义:定义:如果关系模式如果关系模式R R1NF1NF,并且并且R R中的每个非主属性都完全函数中的每个非主属性都完全函数 依赖于主码,则依赖于主码,则R R2NF2NF。 例:例:S-L-S-L-C C(Sno,Sdept,Sloc,Cno,GradeSno,Sdept,Sloc,Cno,Grade)就不是就不是2 2NFNF的。的。 因为(因为(Sno,CnoSno,Cno)是主码,而又有:是主码,而又有:SnoSdeptSnoSdept, , 因此有:
32、因此有:(SnoSno,CnoCno) SdeptSdept p即即存在非主属性对主码的部分函数依赖,所以存在非主属性对主码的部分函数依赖,所以S-L-CS-L-C不是不是2 2NFNF。上一页上一页下一页下一页返回首页返回首页2.3 关系规范化关系规范化2第二范式第二范式 分解过程为:分解过程为:n首先,对于组成主码的属性集合的每一个子集,用它作为主码首先,对于组成主码的属性集合的每一个子集,用它作为主码构成一个表。构成一个表。S-S-C(Sno,CnoC(Sno,Cno),),S(SnoS(Sno),),C(CnoC(Cno) ) fffn 对于每个表,将依赖于此主码的属性放置到此表中。对
33、于每个表,将依赖于此主码的属性放置到此表中。 S-L-CS-L-C关系模式分解后的形式为:关系模式分解后的形式为: S-S-L L(SnoSno,Sdept,Sloc,Sdept,Sloc)和和S-S-C C(SnoSno, , Cno,GradeCno,Grade) S-L有:有:Sno Sdept,Sno SLOC:是是2NF S-C有有:(Sno, Cno) Grade:是是2NF上一页上一页下一页下一页返回首页返回首页2.3 关系规范化关系规范化2第二范式第二范式 2 2NFNF的缺点的缺点2 2NFNF的关系模式在进行数据操作时,仍然存在着一些问题:的关系模式在进行数据操作时,仍然存
34、在着一些问题:数数据据冗冗余余 每每个个系系名名和和所所在在的的宿宿舍舍楼楼名名字字存存储储的的次次数数等等于于该该系系的的学学生人数。生人数。插入异常插入异常 当一个新系没有招生时,有关该系的信息无法插入。当一个新系没有招生时,有关该系的信息无法插入。删删除除异异常常 某某系系学学生生全全部部毕毕业业而而没没有有招招生生时时,删删除除全全部部学学生生的的记记录录也随之删除了该系的有关信也随之删除了该系的有关信更新异常更新异常 更换系所在宿舍楼名字时,仍需改动较多的学生记录。更换系所在宿舍楼名字时,仍需改动较多的学生记录。之所以存在这些问题,是由于在之所以存在这些问题,是由于在S-LS-L表中
35、存在着表中存在着非主属性对主码的传递非主属性对主码的传递依赖依赖。分析分析S-LS-L表中函数依赖关系,表中函数依赖关系,SnoSdeptSnoSdept,SdeptSlocSdeptSloc,SnoSlocSnoSloc,非主属性非主属性SlocSloc对主码对主码SnoSno传递依赖。传递依赖。为此,对关系模式还需进一步简化,消除这种传递依赖,得到为此,对关系模式还需进一步简化,消除这种传递依赖,得到3 3NFNF。 上一页上一页下一页下一页返回首页返回首页S-LS-L分解后的关系模式为:分解后的关系模式为:S-S-D D(SnoSno,Sdept,Sdept)和和D-D-L L(Sdep
36、tSdept,Sloc,Sloc) 对对S-DS-D,有:有:SnoSno SdeptSdept,因此因此S- DS- D是是3 3NFNF的的 对对D-LD-L,有:有:SdeptSdept SlocSloc,因此因此D-LD-L也是也是3 3NFNF的的2.3 关系规范化关系规范化3第三范式第三范式 定义:定义:如果如果R R( (U U, ,F F) 2NF) 2NF,并且所有非主属性都不传递依赖于主码,则并且所有非主属性都不传递依赖于主码,则 R R( (U U, ,F F) 3NF) 3NF。 ff关系模式关系模式S-S-L L(SnoSno,Sdept,Sloc,Sdept,Slo
37、c)不是不是3 3NFNF。分解过程为分解过程为: : (1 1)对于不是候选码的每个决定因子,从表中删去依赖于它的所有属性;)对于不是候选码的每个决定因子,从表中删去依赖于它的所有属性; 得到得到S-S-D D(SnoSno,Sdept,Sdept) (2 2)新建一个表,新表中包含在原表中所有依赖于该决定因子的属性;)新建一个表,新表中包含在原表中所有依赖于该决定因子的属性; (3 3)将决定因子作为新表的主码。新建的表)将决定因子作为新表的主码。新建的表: :D-D-L L(Sdept,SlocSdept,Sloc) 上一页上一页下一页下一页返回首页返回首页2.3 关系规范化关系规范化3
38、第三范式第三范式 关关系系模模式式S-LS-L由由2 2NFNF分分解解为为3 3NFNF后后,函函数数依依赖赖关关系系变变得得更更加加简简单单,既既没没有有非非主主属属性性对对主主码码的的部部分分依依赖赖,也也没没有有非非主主属属性性对对主主码码的的传传递递依依赖赖,解解决决了了2 2NFNF中中存存在的四个问题。在的四个问题。数数据据冗冗余余降降低低。系系所所在在的的宿宿舍舍楼楼名名字字存存储储次次数数与与该该系系的的学学生生人人数数无无关关,只只在在关系关系D-LD-L中存储一次中存储一次不不存存在在插插入入异异常常。当当一一个个新新系系没没有有学学生生时时,该该系系的的信信息息可可以以
39、直直接接插插入入到到关关系系D-LD-L中,而与学生关系中,而与学生关系S-DS-D无关无关不不存存在在删删除除异异常常。要要删删除除某某系系的的全全部部学学生生而而仍仍然然保保留留该该系系的的有有关关信信息息时时,可可以只删除学生关系以只删除学生关系S-DS-D中的相关学生记录,而不影响系关系中的相关学生记录,而不影响系关系D-LD-L中的数据。中的数据。不不存存在在更更新新异异常常。更更换换所所在在的的宿宿舍舍楼楼时时,只只需需修修改改关关系系D-LD-L中中一一个个相相应应元元组组的的SlocSloc属性值,从而不会出现数据的不一致现象。属性值,从而不会出现数据的不一致现象。 S-L-C
40、S-L-C规规范范到到3 3NFNF后后,所所存存在在的的异异常常现现象象已已经经全全部部消消失失。通通常常在在数数据据库库设设计计中,中,一般要求要达到一般要求要达到3 3NFNF。 上一页上一页下一页下一页返回首页返回首页3第三范式第三范式 但是但是3 3NFNF只限制了非主属性对码的依赖关系,而没有限制主属性对码的只限制了非主属性对码的依赖关系,而没有限制主属性对码的 依赖关系。依赖关系。 例如:例如:设关系模式设关系模式SNCSNC(SNOSNO,SNSN,CN0CN0,SCORESCORE),),其中其中SNOSNO代表学号,代表学号,SNSN代代表学生姓名并假设没有重名,表学生姓名
41、并假设没有重名,CNOCNO代表课程号,代表课程号,SCORESCORE代表成绩。可以判定,代表成绩。可以判定,SNCSNC有两个候选码(有两个候选码(SNOSNO,CNOCNO)和(和(SNSN,CNOCNO),),其函数依赖如下:其函数依赖如下: SNO SNO SN SN (SNOSNO,CNOCNO)SCORESCORE (SNSN,CNOCNO)SCORESCORE 如某个同学需要改名,则需要将该学生的所有记录都要进行修改,如某个同学需要改名,则需要将该学生的所有记录都要进行修改,稍有不慎,稍有不慎,就有可能漏改某些记录,这就会造成数据的不一致性。就有可能漏改某些记录,这就会造成数据
42、的不一致性。产生操作异常的原因产生操作异常的原因: : (SNO,CNO) SN,即存在主属性对码的即存在主属性对码的部分部分函数依赖函数依赖为了解决这种问题,为了解决这种问题,BoyceBoyce与与CoddCodd共同提出了一个新范式的定义,这就是共同提出了一个新范式的定义,这就是Boyce-Boyce-CoddCodd范式,通常简称范式,通常简称BCNFBCNF或或BCBC范式。它弥补了范式。它弥补了3 3NFNF的不足。的不足。2.3 关系规范化关系规范化p上一页上一页下一页下一页返回首页返回首页 但是,因为但是,因为SNO SNO SN SN,即决定因素即决定因素SNOSNO或或SN
43、SN不包含候选码,不包含候选码, 从另一个角度说,存在着主属性对码的部分函数依赖:从另一个角度说,存在着主属性对码的部分函数依赖: (SNOSNO,CNOCNO) SN SN, (SNSN,CNOCNO) SNO SNO, 所以所以SNCSNC不是不是BCNFBCNF。2.3 关系规范化关系规范化4BC范式范式 (BCNF) 定义:定义:若关系模式若关系模式R1NFR1NF,对于关系对于关系R R的每个函数依赖的每个函数依赖XYXY且且Y Y X X, X X必含有候选码,则必含有候选码,则RBCNFRBCNF。 即即每个决定属性集都包含候选码。每个决定属性集都包含候选码。上面例子中唯一的非主
44、属性上面例子中唯一的非主属性SCORESCORE对码不存在部分函数依对码不存在部分函数依赖,也不存在传递函数依赖。所以赖,也不存在传递函数依赖。所以SNCSNC 3NF3NF。 pp上一页上一页下一页下一页返回首页返回首页2.3 关系规范化关系规范化4BC范式范式 (BCNF) 解决这一问题的办法仍然是通过解决这一问题的办法仍然是通过投影分解投影分解进一步提高进一步提高SNCSNC的范式等级,将的范式等级,将SNCSNC规范到规范到BCNFBCNF。 可以将可以将SNCSNC分解成如下两个关系:分解成如下两个关系:S1(SNO,SN),S2(SNO,CNO,SCORE)S1(SNO,SN),S
45、2(SNO,CNO,SCORE) 对于对于S1S1,有两个候选码有两个候选码SNOSNO和和SNSN,对于对于S2S2,主码为(主码为(SNOSNO,CNOCNO)。)。在这两个关系中,在这两个关系中,每个决定属性集都包含候选码每个决定属性集都包含候选码( (即即无论主属性还是非主属无论主属性还是非主属性都不存在对码的部分依赖和传递依赖性都不存在对码的部分依赖和传递依赖) ),S1S1 BCNFBCNF,S2S2 BCNFBCNF。关系关系SNCSNC转换成转换成BCNFBCNF后,数据冗余度明显降低。学生的姓名只在关系后,数据冗余度明显降低。学生的姓名只在关系S1S1中中存储一次,学生要改名
46、时,只需改动一条学生记录中的相应的存储一次,学生要改名时,只需改动一条学生记录中的相应的SNSN值,从而值,从而不会发生修改异常。不会发生修改异常。SNOSNS1S1中的函数依赖关系中的函数依赖关系SNOCNOSCORES2S2中的函数依赖关系中的函数依赖关系上一页上一页下一页下一页返回首页返回首页2.4 关系模式的分解准则关系模式的分解准则关关系系规规范范化化的的目目的的:解解决决关关系系模模式式中中存存在在的的插插入入、删删除除、更更新新操操作作异异常,数据冗余问题常,数据冗余问题. .关关系系规规范范化化的的方方法法:围围绕绕函函数数依依赖赖的的主主线线,对对一一个个关关系系模模式式进进
47、行行分分解解,使关系从较低级范式变换到较高级范式。使关系从较低级范式变换到较高级范式。( (模式分解模式分解) ) 分解关系模分解关系模式,逐步消式,逐步消除不合适的除不合适的函数依赖函数依赖1NF2NF 3NF BCNF 消除非主属性对码的部分函数依赖消除非主属性对码的部分函数依赖消除非主属性对码的传递函数依赖消除非主属性对码的传递函数依赖消除主属性对码的部分和传消除主属性对码的部分和传递函数依赖递函数依赖上一页上一页下一页下一页返回首页返回首页2.4 关系模式的分解准则关系模式的分解准则模式分解的准则:模式分解的准则:模式分解具有无损连接性模式分解具有无损连接性: 分解后的关系通过自然连分
48、解后的关系通过自然连接可以恢复成原来的关系,即通过自然连接得到的关系接可以恢复成原来的关系,即通过自然连接得到的关系与原来的关系相比,既不多出信息、又不丢失信息。与原来的关系相比,既不多出信息、又不丢失信息。 模式分解能够保持函数依赖模式分解能够保持函数依赖: 在模式的分解过程中,在模式的分解过程中,函数依赖不能丢失的特性,即模式分解不能破坏原来的函数依赖不能丢失的特性,即模式分解不能破坏原来的语义。语义。上一页上一页下一页下一页返回首页返回首页2.4 关系模式的分解准则关系模式的分解准则例:例:S-D-S-D-L L(SnoSno,DeptDept,LocLoc)有函数依赖:有函数依赖: S
49、noSno Dept Dept, Dept Loc Dept Loc 不是第三范式的。至少可以有三种分解方案,分别为:不是第三范式的。至少可以有三种分解方案,分别为:n方案方案1 1:S-S-L L(SnoSno,LocLoc),),D-LD-L(DeptDept,LocLoc)n方案方案2 2:S-S-D D(SnoSno,DeptDept),),S-LS-L(SnoSno,LocLoc)n方案方案3 3:S-S-D D(SnoSno,DeptDept),),D-LD-L(DeptDept,LocLoc) 这三种分解方案得到的关系模式都是第三范式的,那么这三种分解方案得到的关系模式都是第三范
50、式的,那么如何比较这三种方案的好坏呢?由此在将一个关系模式分解为如何比较这三种方案的好坏呢?由此在将一个关系模式分解为多个关系模式时除了提高规范化程度之外,还需要遵守一定的多个关系模式时除了提高规范化程度之外,还需要遵守一定的准则准则. .三种分解方案是否都满足分解三种分解方案是否都满足分解准则准则呢?呢?上一页上一页下一页下一页返回首页返回首页2.4 关系模式的分解准则关系模式的分解准则假设此关系模式的数据假设此关系模式的数据如表如表2-12-1所示,此关系用所示,此关系用r r表示。表示。 Sno Dept Loc S01D1 L1 S02 D2 L2 S03 D2 L2S04 D3 L1
51、表21上一页上一页下一页下一页返回首页返回首页2.4 关系模式的分解准则关系模式的分解准则方案方案1:1:将将S-D-LS-D-L分解分解投影得到投影得到S-LS-L和和D-LD-L关系关系Sno Loc S01L1 S02 L2 S03 L2S04 L1 Dept Loc D1 L1 D2 L2 D3 L1 S-LD-LSno Dept Loc S01D1 L1 S01D3L1S02 D2 L2 S03 D2L2S04D1 L1S04 D3L1表22结论结论: 方案方案1不满足无损连接性不满足无损连接性自然连接自然连接上一页上一页下一页下一页返回首页返回首页2.4 关系模式的分解准则关系模式
52、的分解准则方案方案2: 2: 将将S-D-LS-D-L分解分解投影得到投影得到S-DS-D和和S-LS-L关系关系Sno DeptS01D1S02 D2S03 D2S04 D3 Sno Loc S01L1 S02 L2 S03L2S04 L1S-DS-LSno Dept Loc S01D1 L1 S02 D2 L2 S03 D2L2S04 D3L1表23结论结论: 方案方案2满足无损连接性满足无损连接性,但但没有保持原有的函数依赖关系没有保持原有的函数依赖关系.但如果假设学生如果假设学生S03S03从从D2D2系转到了系转到了D3D3系,则需在表系,则需在表S-DS-D(S03,D2S03,D
53、2)改为(改为(S03,D3S03,D3),),同时还同时还需要在表需要在表S-LS-L(S03,L2S03,L2)改为(改为(S03,L1S03,L1)。)。如果这两个修改没有同时进行,则数据库中就会如果这两个修改没有同时进行,则数据库中就会出现不一致信息。这是由于出现不一致信息。这是由于这样分解得到的两个关系模式没有保持原来的函数依赖关系造这样分解得到的两个关系模式没有保持原来的函数依赖关系造成的成的。原有的函数依赖。原有的函数依赖Dept LocDept Loc在分解后跨在了两个关系模式上。因此分解方案在分解后跨在了两个关系模式上。因此分解方案2 2没有没有保持原有的函数依赖关系,也不是
54、好的分解方法。保持原有的函数依赖关系,也不是好的分解方法。自然连接自然连接上一页上一页下一页下一页返回首页返回首页2.4 关系模式的分解准则关系模式的分解准则方案方案3:3:将将S-D-LS-D-L分解分解投影得到投影得到S-DS-D和和D-LD-L关系关系Dept Loc D1 L1 D2 L2 D3 L1 S-DD-LSno Dept Loc S01D1 L1 S02 D2 L2 S03 D2L2S04 D3L1表24结论结论: 方案方案3既满足无损连接性既满足无损连接性,又又保持原有的函数依赖关保持原有的函数依赖关系系.故它是一个好的分解方法故它是一个好的分解方法Sno DeptS01D
55、1S02 D2S03 D2S04 D3 自然连接自然连接上一页上一页下一页下一页返回首页返回首页2.4 关系模式的分解准则关系模式的分解准则 分解具有无损连接性和分解保持函数依赖是两个独立的分解具有无损连接性和分解保持函数依赖是两个独立的标准。标准。具有无损连接性的分解不一定保持函数依赖;保持具有无损连接性的分解不一定保持函数依赖;保持函数依赖的分解不一定具有无损连接性。函数依赖的分解不一定具有无损连接性。 一般情况下,在进行模式分解时,应将有一般情况下,在进行模式分解时,应将有直接依赖关系直接依赖关系的属性放置在一个关系模式中的属性放置在一个关系模式中,这样得到的分解结果一般,这样得到的分解
56、结果一般能具有无损连接性,并能保持函数依赖关系不变。能具有无损连接性,并能保持函数依赖关系不变。 上一页上一页下一页下一页返回首页返回首页2.5 小结小结关系规范化理论关系规范化理论是设计没有操作异常的关系数据库的是设计没有操作异常的关系数据库的基本原则基本原则. .规范化理论主要是规范化理论主要是研究关系中各属性之间的依赖关系研究关系中各属性之间的依赖关系,根据依赖关系,根据依赖关系的不同,我们介绍了不包含子属性的的不同,我们介绍了不包含子属性的第一范式第一范式,到消除了属性间的部,到消除了属性间的部分依赖关系的分依赖关系的第二范式第二范式,再到消除了属性间的传递依赖关系的,再到消除了属性间
57、的传递依赖关系的第三范第三范式式,最后到每个决定因子都必须是候选码的,最后到每个决定因子都必须是候选码的BCNF。 范式的每一次升级都是通过范式的每一次升级都是通过模式分解模式分解实现的,在进行模式分解时应注实现的,在进行模式分解时应注意保持分解后的关系能够意保持分解后的关系能够具有无损连接性并能保持原有的函数依赖关具有无损连接性并能保持原有的函数依赖关系。系。 对于一般的数据库应用来说,设计到对于一般的数据库应用来说,设计到第三范式第三范式就足够了。因为规范化就足够了。因为规范化程度越高程度越高, ,分解得越细分解得越细, ,表的个数越多表的个数越多, ,则在检索操作时会因连接而降低则在检索操作时会因连接而降低检索效率。检索效率。