《一章关系数据库理论》由会员分享,可在线阅读,更多相关《一章关系数据库理论(65页珍藏版)》请在金锄头文库上搜索。
1、返回返回第第4章章 关系数据关系数据库库理理论论1返回返回本章概要本章概要前面已经讲述了前面已经讲述了关系数据库关系数据库、关系模型关系模型的基本概念以的基本概念以及关系数据库的及关系数据库的标准语言标准语言。如何使用关系模型设计关系数据库,也就是面对一个如何使用关系模型设计关系数据库,也就是面对一个现实问题,如何选择一个比较好的关系模式的集合,现实问题,如何选择一个比较好的关系模式的集合,每个关系又应该由哪些属性组成。这属于数据库设计每个关系又应该由哪些属性组成。这属于数据库设计的问题,确切地讲是数据库的问题,确切地讲是数据库逻辑设计逻辑设计的问题,有关数的问题,有关数据库设计的全过程将在第
2、据库设计的全过程将在第6章详细讨论。章详细讨论。本章讲述本章讲述关系数据库规范化理论关系数据库规范化理论,这是数据库逻辑设,这是数据库逻辑设计的理论依据。计的理论依据。要求了解规范化理论的研究动机及其在数据库设计中的作用,掌握函数依赖的有关概念,第一范式、第二范式、第三范式的定义,重点掌握并能够灵活运用关系模式规范化的方法和关系模式分解的方法,这也是本章的难点。2返回返回4.1 4.1 规范化问题的提出规范化问题的提出4.1.1 4.1.1 规范化理论的主要内容规范化理论的主要内容关关系系数数据据库库的的规规范范化化理理论论最最早早是是由由关关系系数数据据库库的创始人的创始人E.F.E.F.C
3、oddCodd提出的,提出的,后后经经许许多多专专家家学学者者对对关关系系数数据据库库理理论论作作了了深深入入的的研研究究和和发发展展,形形成成了了一一整整套套有有关关关关系系数数据据库库设计的理论。设计的理论。在在该该理理论论出出现现以以前前,层层次次和和网网状状数数据据库库的的设设计计只只是是遵遵循循其其模模型型本本身身固固有有的的原原则则,而而无无具具体体的的理理论论依依据据可可言言,因因而而带带有有盲盲目目性性,可可能能在在以以后后的运行和使用中发生许多预想不到的问题。的运行和使用中发生许多预想不到的问题。3返回返回在关系数据库系统中,在关系数据库系统中,关系模型关系模型包括一组包括一
4、组关系关系模式模式,各个关系不是完全孤立的,数据库的设,各个关系不是完全孤立的,数据库的设计较层次和网状模型更为重要。计较层次和网状模型更为重要。如何设计一个适合的关系数据库系统,关键是如何设计一个适合的关系数据库系统,关键是关系数据库关系数据库模式模式的设计,一个好的关系数据库的设计,一个好的关系数据库模式应该包括多少模式应该包括多少关系模式关系模式,而每一个关系模,而每一个关系模式又应该包括哪些式又应该包括哪些属性属性,又如何将这些相互关,又如何将这些相互关联的关系模式组建一个适合的联的关系模式组建一个适合的关系模型关系模型,这些,这些工作决定了到整个系统运行的效率,也是系统工作决定了到整
5、个系统运行的效率,也是系统成败的关键所在,所以必须在关系数据库的成败的关键所在,所以必须在关系数据库的规规范化理论范化理论的指导下逐步完成。的指导下逐步完成。 4返回返回关系数据库的规范化理论主要包括三个方面的内容:关系数据库的规范化理论主要包括三个方面的内容:函数信赖范式(Normal Form)模式设计其其中中,函函数数信信赖赖起起着着核核心心的的作作用用,是是模模式式分分解解和和模模式式设计的基础,范式是模式分解的标准。设计的基础,范式是模式分解的标准。4.1.2 4.1.2 关系模式的存储异常问题关系模式的存储异常问题数据库的逻辑设计为什么要遵循一定的规范化理论?数据库的逻辑设计为什么
6、要遵循一定的规范化理论?什么是好的关系模式?什么是好的关系模式?某些不好的关系模式可能导致哪些问题?某些不好的关系模式可能导致哪些问题?下面通过例子进行分析下面通过例子进行分析: :5返回返回例如例如,要求设计,要求设计教学管理数据库教学管理数据库,其关系模式,其关系模式SCDSCD如下:如下:SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)其其中中,SNOSNO表表示示学学生生学学号号,SNSN表表示示学学生生姓姓名名,AGEAGE表表示示学学生生年年龄龄,DEPTDEPT表表示示学学生生所所在在的的系系别别,MNMN表表示示系系主主任任姓名,姓名,CNOCNO表示课程号,
7、表示课程号,SCORESCORE表示成绩。表示成绩。 根据实际情况,这些数据有如下语义规定:根据实际情况,这些数据有如下语义规定:1. 一个系有若干个学生,但一个学生只属于一个系;2. 一个系只有一名系主任,但一个系主任可以同时兼几个系的系主任;3. 一个学生可以选修多门功课,每门课程可有若干学生选修;4. 每个学生学习课程有一个成绩。在在此此关关系系模模式式中中填填入入一一部部分分具具体体的的数数据据,则则可可得得到到SCDSCD关关系系模模式式的的实实例例,即即一一个个教教学学管管理理数数据据库库,如如图图4.14.1所所示。示。6返回返回图图4.1 4.1 关系关系SCDSCDSNOSN
8、AGEDEPTMNCNOSCORES1赵亦17计算机刘伟C190S1赵亦17计算机刘伟C285S2钱尔18信息王平C557S2钱尔18信息王平C680S2钱尔18信息王平C770S2钱尔18信息王平C570S3孙珊20信息王平C10S3孙珊20信息王平C270S3孙珊20信息王平C485S4李思男自动化刘伟C1937返回返回根根据据上上述述的的语语义义规规定定,并并分分析析以以上上关关系系中中的的数数据据,我我们们可可以以看看出出:(SNO,CNO)属属性性的的组组合合能能唯唯一一标标识识一一个个元元组组,所所以以(SNO,CNO)是是该该关关系系模模式式的的主主关关系系键键。但但在在进进行行
9、数数据据库的操作时,会出现以下几方面的问题。库的操作时,会出现以下几方面的问题。1. 1. 数数据据冗冗余余。每个系名和系主任的名字存储的次数等于该系的学生人数乘以每个学生选修的课程门数,同时学生的姓名、年龄也都要重复存储多次,数据的冗余度很大,浪费了存储空间。2. 2. 插插入入异异常常。如果某个新系没有招生,尚无学生时,则系名和系主任的信息无法插入到数据库中。因为在这个关系模式中,(SNO,CNO)是主关系键。根据关系的实体完整性约束,主关系键的值不能为空,而这时没有学生,SNO和CNO均无值,因此不能进行插入操作。另外,当某个学生尚未选课,即CNO未知,实体完整性约束还规定,主关系键的值
10、不能部分为空,同样不能进行插入操作。8返回返回3. 删除异常。某系学生全部毕业而没有招生时,删除全部学生的记录则系名、系主任也随之删除,而这个系依然存在,在数据库中却无法找到该系的信息。另外,如果某个学生不再选修C1课程,本应该只删去C1,但C1是主关系键的一部分,为保证实体完整性,必须将整个元组一起删掉,这样,有关该学生的其它信息也随之丢失。4. 更新异常。如果学生改名,则该学生的所有记录都要逐一修改SN;又如某系更换系主任,则属于该系的学生记录都要修改MN的内容,稍有不慎,就有可能漏改某些记录,这就会造成数据的不一致性,破坏了数据的完整性。9返回返回由由于于存存在在以以上上问问题题,我我们
11、们说说,SCDSCD是是一一个个不不好好的的关关系系模模式式。产产生生上上述述问问题题的的原原因因,直直观观地地说说,是是因因为为关关系系中中“包罗万象包罗万象”,内容太杂了。,内容太杂了。那么,怎样才能得到一个好的关系模式呢?那么,怎样才能得到一个好的关系模式呢?我我们们把把关关系系模模式式SCDSCD分分解解为为下下面面三三个个结结构构简简单单的的关关系系模模式,如图式,如图4.24.2所示。所示。学生关系S(SNO,SN,AGE,DEPT)选课关系SC(SNO,CNO,SCORE)系关系D(DEPT,MN)10返回返回S SCS SCS SCS SCSNOSNAGEDEPTSNOCNOS
12、CORES1赵亦17计算机S1C190S2钱尔18信息S1C285S3孙珊20信息S2C557S4李思21自动化S2C680S2C7D D D DS2C570DEPTMNS3C10计算机刘伟S3C270信息王平S3C485自动化刘伟S4C193图4.2 分解后的关系模式11返回返回在以上三个关系模式中,实现了信息的某种程在以上三个关系模式中,实现了信息的某种程度的分离,度的分离,S中存储学生基本信息,与所选课程及系主任无关;D中存储系的有关信息,与学生无关;SC中存储学生选课的信息,而与所学生及系的有关信息无关。与与SCDSCD相比,分解为三个关系模式后,数据的相比,分解为三个关系模式后,数据
13、的冗余度明显降低。冗余度明显降低。当新插入一个系时,只要在关系D中添加一条记录。当某个学生尚未选课,只要在关系S中添加一条学生记录,而与选课关系无关,这就避免了插入异常。当一个系的学生全部毕业时,只需在S中删除该系的全部学生记录,而关系D中有关该系的信息仍然保留,从而不会引起删除异常。同时,由于数据冗余度的降低,数据没有重复存储,也不会引起更新异常。12返回返回经经过过上上述述分分析析,我我们们说说分分解解后后的的关关系系模模式是一个好的关系数据库模式。式是一个好的关系数据库模式。从从而而得得出出结结论论,一一个个好好的的关关系系模模式式应应该该具备以下四个条件:具备以下四个条件:1. 尽可能
14、少的数据冗余。2. 没有插入异常。3. 没有删除异常。4. 没有更新异常。13返回返回但但要要注注意意,一一个个好好的的关关系系模模式式并并不不是是在在任任何何情情况况下下都都是最优的,是最优的,比如查询某个学生选修课程名及所在系的系主任时,要通过连接,而连接所需要的系统开销非常大,因此要以实际设计的目标出发进行设计如何按照一定的规范设计关系模式,将结构复杂的关如何按照一定的规范设计关系模式,将结构复杂的关系分解成结构简单的关系,从而把不好的关系数据库系分解成结构简单的关系,从而把不好的关系数据库模式转变为好的关系数据库模式,这就是模式转变为好的关系数据库模式,这就是关系的规范关系的规范化化。
15、规范化又可以根据不同的要求而分成若干级别。规范化又可以根据不同的要求而分成若干级别。我们要设计的关系模式中的各属性是相互依赖、相互我们要设计的关系模式中的各属性是相互依赖、相互制约的,这样才构成了一个结构严谨的整体。制约的,这样才构成了一个结构严谨的整体。因此在设计关模式时,必须从语义上分析这些因此在设计关模式时,必须从语义上分析这些依赖关依赖关系系。数据库模式的好坏和关系中各属性间的依赖关系有关,数据库模式的好坏和关系中各属性间的依赖关系有关,因此,我们先讨论属性间的依赖关系,然后再讨论关因此,我们先讨论属性间的依赖关系,然后再讨论关系规范化理论。系规范化理论。 14返回返回4.2 4.2
16、函数依赖函数依赖4.2.14.2.1函数依赖的定义及性质函数依赖的定义及性质关关系系模模式式中中的的各各属属性性之之间间相相互互依依赖赖、相相互互制制约约的的联联系系称为称为数据依赖数据依赖。数据依赖一般分为数据依赖一般分为函数依赖函数依赖、多值依赖多值依赖和和连接依赖连接依赖。其中其中, ,函数依赖函数依赖是最重要的数据依赖。是最重要的数据依赖。函函数数依依赖赖(Functional Functional DependencyDependency)是是关关系系模模式式中中属属性之间的一种性之间的一种逻辑依赖关系逻辑依赖关系。例如在上一节介绍的关系模式SCD中,SNO与SN、AGE、DEPT之
17、间都有一种依赖关系。由于一个SNO只对应一个学生,而一个学生只能属于一个系,所以当SNO的值确定之后,SN,AGE,DEPT的值也随之被唯一的确定了。这类似于变量之间的单值函数关系。设单值函数Y=F(X),自变量X的值可以决定一个唯一的函数值Y。在这里,我们说SNO决定函数(SN,AGE,DEPT),或者说(SN,AGE,DEPT)函数依赖于SNO。15返回返回下面给函数依赖的形式化定义。下面给函数依赖的形式化定义。 4.2.1.14.2.1.1函数依赖的定义函数依赖的定义定定义义4.14.1设设关关系系模模式式R(UR(U,F)F),U U是是属属性性全全集集,F F是是U U上上的的函函数
18、数依依赖赖集集,X X和和Y Y是是U U的的子子集集,如如果果对对于于R(U)R(U)的的任任意意一一个个可可能能的的关关系系r r,对对于于X X的的每每一一个个具具体体值值,Y Y都都有有唯唯一一的的具具体体值值与与之之对对应应,则则称称X X决决定定函函数数Y Y,或或Y Y函函数数依依赖赖于于X X,记记作作XYXY。我我们们称称X X为为决决定定因因素素,Y Y为为依依赖赖因因素素。当当Y Y不不函函数数依依赖于赖于X X时,记作:时,记作:X YX Y。当当XYXY且且YXYX时,则记作:时,则记作:X YX Y。对于关系模式对于关系模式SCDSCDU=SNO,SN,AGE,DE
19、PT,MN,CNO,SCOREF=SNOSN,SNOAGE,SNODEPT一一个个SNOSNO有有多多个个SCORESCORE的的值值与与其其对对应应,因因此此SCORESCORE不不能能唯唯一一地地确确定定,即即SCORESCORE不不能能函函数数依依赖赖于于SNOSNO,所所以以有有: SNO SCORESNO SCORE。但是但是SCORESCORE可以被(可以被(SNOSNO,CNOCNO)唯一地确定。所以可表唯一地确定。所以可表示为:(示为:(SNOSNO,CNOCNO)SCORESCORE。 16返回返回有关函数依赖的几点说明:有关函数依赖的几点说明:1 1平凡的函数依赖与非平凡的
20、函数依赖。平凡的函数依赖与非平凡的函数依赖。当属性集Y是属性集X的子集时,则必然存在着函数依赖XY,这种类型的函数依赖称为平凡的函数依赖。如果Y不是X的子集,则称XY为非平凡的函数依赖。若不特别声明,我们讨论的都是非平凡的函数依赖。2 2函数依赖是语义范畴的概念。函数依赖是语义范畴的概念。我们只能根据语义来确定一个函数依赖,而不能按照其形式化定义来证明一个函数依赖是否成立。例如,对于关系模式S,当学生不存在重名的情况下,可以得到:SNAGESNDEPT这种函数依赖关系,必须是在没有重名的学生条件下才成立的,否则就不存在函数依赖了。所以函数依赖反映了一种语义完整性约束。17返回返回3 3函数依赖
21、与属性之间的联系类型有关。函数依赖与属性之间的联系类型有关。(1)在一个关系模式中,如果属性X与Y有1:1联系时,则存在函数依赖XY,YX,即X Y。 例如,当学生无重名时,SNO SN。(2)如果属性X与Y有1:m的联系时,则只存在函数依赖XY。 例 如 , SNO与 AGE, DEPT之 间 均 为 1:m联 系 , 所 以 有SNOAGE,SNODEPT。(3)如果属性X与Y有m: n的联系时,则X与Y之间不存在任何函数依赖关系。 例如,一个学生可以选修多门课程,一门课程又可以为多个学生选修,所以SNO与CNO之间不存在函数依赖关系。由于函数依赖与属性之间的联系类型有关,所以在确定由于函
22、数依赖与属性之间的联系类型有关,所以在确定属性间的函数依赖关系时,可以从分析属性间的函数依赖关系时,可以从分析属性间的联系类属性间的联系类型型入手,便可确定属性间的函数依赖。入手,便可确定属性间的函数依赖。 18返回返回4 4函数依赖关系的存在与时间无关。函数依赖关系的存在与时间无关。因为函数依赖是指关系中的所有元组应该满足的约束条件,而不是指关系中某个或某些元组所满足的约束条件。当关系中的元组增加、删除或更新后都不能破坏这种函数依赖。因此,必须根据语义来确定属性之间的函数依赖,而不能单凭某一时刻关系中的实际数据值来判断。例如,对于关系模式S,假设没有给出无重名的学生这种语义规定,则即使当前关
23、系中没有重名的记录,也只能存在函数依赖SNOSN,而不能存在函数依赖SNSNO,因为如果新增加一个重名的学生,函数依赖SNSNO必然不成立。所以函数依赖关系的存在与时间无关,而只与数据之间的语义规定有关。19返回返回5 5函数依赖可以保证关系分解的无损连接性。函数依赖可以保证关系分解的无损连接性。设R(X,Y,Z),X,Y,Z为不相交的属性集合,如果XY或XZ,则有R(X,Y,Z)=RX,Y*RX,Z,其中,RX,Y表示关系R在属性(X,Y)上的投影,即R等于其投影在X上的自然连接,这样便保证了关系R分解后不会丢失原有的信息,称作关系分解的无损连接性。例如,对于关系模式SCD,有SNO(SN,
24、AGE,DEPT,MN),SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)=SCDSNO,SN,AGE,DEPT,MN*SCDSNO,CNO,SCORE,也就是说,用其投影在SNO上的自然连接可复原关系模式SCD。这一性质非常重要,在后一节的关系规范化中要用到。20返回返回4.2.1.2 4.2.1.2 函数依赖的基本性质函数依赖的基本性质1 1投影性。投影性。根据平凡的函数依赖的定义可知,一组属性函数决定它的所有子集。例如,在关系SCD中,(SNO,CNO)SNO和(SNO,CNO)CNO。2 2扩张性。扩张性。若XY且WZ,则(X,W)(Y,Z)。例如,SNO(SN,AG
25、E),DEPTMN,则有(SNO,DEPT)(SN,AGE,MN)。3 3合并性。合并性。若XY且XZ则必有X(Y,Z)。例如,在关系SCD中,SNO(SN,AGE),SNO(DEPT,MN),则有SNO(SN,AGE,DEPT,MN)。4 4分解性。分解性。若X(Y,Z),则XY且XZ。很显然,分解性为合并性的逆过程。由合并性和分解性,很容易得到以下事实:由合并性和分解性,很容易得到以下事实:XA1,A2,,An成立的充分必要条件是XAi(i=1,2,n)成立。21返回返回4.2.2 4.2.2 完全函数依赖与部分函数依赖完全函数依赖与部分函数依赖定定义义4.24.2 设设关关系系模模式式R
26、(U)R(U),U U是是属属性性全全集集,X X和和Y Y是是U U的的子子集,集,如果XY,并且对于X的任何一个真子集X,都有X Y,则称Y对X完全函数依赖(FullFunctionalDependency),记作 X Y。如果对X的某个真子集X,有XY,则称Y对部分函数依赖(PartialFunctionalDependency),记作X Y。例如,在关系模式SCD中,因为SNO SCORE,且CNO SCORE,所以有:(SNO,CNO) SCORE 。 而SNOAGE,所以(SNO,CNO) AGE。由定义由定义4.24.2可知:可知:只有当决定因素是组合属性时,讨论部分函数依赖才有
27、意义,当决定因素是单属性时,只能是完全函数依赖。例如,在关系模式S(SNO,SN,AGE,DEPT),决定因素为单属性SNO,有SNO(SN,AGE,DEPT),不存在部分函数依赖。22返回返回4.2.3 4.2.3 传递函数依赖传递函数依赖定定义义4.34.3 设设有有关关系系模模式式R R(U U),U U是是属属性性全全集集,X X,Y Y,Z Z是是U U的子集,的子集,若XY,但Y X,而YZ(Y X,Z Y),则称Z对X传递函数依赖(TransitiveFunctionalDependency),记作:X Z。如果YX,则X Y,这时称Z对X直接函数依赖,而不是传递函数依赖。例如,
28、在关系模式SCD中,SNODEPTN,但DEPTN SNO,而DEPTNMN,则有SNO MN。当学生不存在重名的情况下,有SNOSN,SNSNO,SNO SN,SNDEPTN,这时DEPTN对SNO是直接函数依赖,而不是传递函数依赖。综上所述,函数依赖分为完全函数依赖、部分函数依赖和传递函数依赖三类,它们是规范化理论的依据和规范化程度的准则,下面我们将以介绍的这些概念为基础,进行数据库的规范设计。 23返回返回4.3 范式范式 规范化的规范化的基本思想基本思想是消除关系模式中的数据冗余,消是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据插入、删除除数据依赖中的不合适的部分,
29、解决数据插入、删除时发生异常现象。时发生异常现象。这就要求关系数据库设计出来的关系模式要满足一定这就要求关系数据库设计出来的关系模式要满足一定的条件。的条件。我们把关系数据库的规范化过程中为不同程度的规范我们把关系数据库的规范化过程中为不同程度的规范化要求设立的不同标准称为化要求设立的不同标准称为范式范式(Normal FormNormal Form)。)。由于规范化的程度不同,就产生了由于规范化的程度不同,就产生了不同的范式不同的范式。满足最基本规范化要求的关系模式叫满足最基本规范化要求的关系模式叫第一范式第一范式,在第一范式中进一步满足一些要求为在第一范式中进一步满足一些要求为第二范式第二
30、范式,以此类推就产生了以此类推就产生了第三范式第三范式等概念。等概念。每种范式都规定了一些限制约束条件。每种范式都规定了一些限制约束条件。 24返回返回范式的概念最早由范式的概念最早由E.F.E.F.CoddCodd提出。提出。从从19711971年年起起,CoddCodd相相继继提提出出了了关关系系的的三三级级规规范范化化形形式式,即即第第一一范范式式(1 1NFNF)、第第二二范范式式(2 2NFNF)、第三范式(第三范式(3 3NFNF)。)。19741974年年,CoddCodd和和BoyceBoyce以以共共同同提提出出了了一一个个新新的的范范式的概念,即式的概念,即Boyce-Bo
31、yce-CoddCodd范式,简称范式,简称BCBC范式。范式。19761976年年FaginFagin提出了第四范式,提出了第四范式,后来又有人定义了第五范式。后来又有人定义了第五范式。至至此此在在关关系系数数据据库库规规范范中中建建立立了了一一个个范范式式系系列列:1 1NF,2NF,3NF,BCNF,4NF,5NF,NF,2NF,3NF,BCNF,4NF,5NF,一一级级比比一一级级有有更更严严格的要求。格的要求。各个范式之间的联系可以表示为:各个范式之间的联系可以表示为:5NF 4NF BCNF 3NF 2NF 1NF如图4.3所示。25返回返回图图4.3 4.3 各种范式之间的关系各
32、种范式之间的关系下面逐一介绍各级范式及其规范化。下面逐一介绍各级范式及其规范化。 26返回返回4.3.1 4.3.1 第一范式第一范式第第一一范范式式(First Normal Form)是是最最基基本本的的规规范范形形式式,即即关关系系中中每每个个属属性性都都是是不不可可再再分分的的简简单单项。项。定定义义4.44.4 如如果果关关系系模模式式R R,其其所所有有的的属属性性均均为为简简单单属属性性,即即每每个个属属性性都都城城是是不不可可再再分分的的,则则称称R R属于第一范式,简称属于第一范式,简称1 1NFNF,记作记作R R 1NF1NF。在第在第2 2章讨论关系的性质时,我们把满足
33、这个条件的关章讨论关系的性质时,我们把满足这个条件的关系称为系称为规范化关系规范化关系。在关系数据库系统中只讨论规范化的关系,凡是非规范在关系数据库系统中只讨论规范化的关系,凡是非规范化的关系模式必须化成规范化的关系。化的关系模式必须化成规范化的关系。在非规范化的关系中去掉组合项就能化成规范化的关系。在非规范化的关系中去掉组合项就能化成规范化的关系。每个规范化的关系都属于每个规范化的关系都属于1 1NFNF,这也是它之所以称为这也是它之所以称为“第一第一”的原因。的原因。 27返回返回然然而而,一一个个关关系系模模式式仅仅仅仅属属于于第第一一范范式式是是不不适用的。适用的。在在4.14.1节节
34、中中给给出出的的关关系系模模式式SCDSCD属属于于第第一一范范式式,但但其其具具有有大大量量的的数数据据冗冗余余,具具有有插插入入异异常常、删删除异常、更新异常等弊端。除异常、更新异常等弊端。为什么会存在这种问题呢?为什么会存在这种问题呢?让让我我们们分分析析一一下下SCDSCD中中的的函函数数依依赖赖关关系系,它它的的关系键是(关系键是(SNOSNO,CNOCNO)的属性组合,所以有:的属性组合,所以有: (SNO,CNO) SCORESNOSN,(SNO,CNO) SNSNOAGE,(SNO,CNO) AGESNODEPT,(SNO,CNO) DEPTSNO MN,(SNO,CNO) M
35、N28返回返回我们可以用函数信赖图表示以上函数依赖关系,如图我们可以用函数信赖图表示以上函数依赖关系,如图4.44.4所示。所示。 SNMNSCORE图图图图4.4 4.4 4.4 4.4 SCDSCDSCDSCD中的函数依赖关系中的函数依赖关系中的函数依赖关系中的函数依赖关系SNOCNOPPf由此可见,在SCD中,既存在完全函数依赖,又存在部分函数依赖和传递函数依赖。这种情况往往在数据库中是不允许的,也正是由于关系中存在着复杂的函数依赖,才导致数据操作中出现了种弊端。克服这些弊端的方法是用投影运算将关系分解,去掉过于复杂的函数依赖关系,向更高一级的范式进行转换。29返回返回4.3.2 4.3
36、.2 第二范式第二范式4.3.2.1 4.3.2.1 第二范式的定义第二范式的定义定定义义4.54.5 如如果果关关系系模模式式R R 1NF1NF,且且每每个个非非主主属属性性都都完完全全函函数数依依赖赖于于R R的的每每个个关关系系键键,则则称称R R属属于于第第二二范范式式(Second Normal Form),简称简称2 2NFNF,记作记作R R 2NF2NF。在关系模式在关系模式SCDSCD中,中,SNOSNO,CNOCNO为主属性,为主属性,AGEAGE,DEPTDEPT,MNMN,MNMN,SCORESCORE均为非主属性,经上述分析,存在非主属性均为非主属性,经上述分析,存
37、在非主属性对关系键的部分函数依赖,所以对关系键的部分函数依赖,所以SCDSCD 2NF2NF。而如图而如图4.24.2所示的由所示的由SCDSCD分解的三个关系模式分解的三个关系模式S S,D D,SCSC,其中其中S S的关系键为的关系键为SNOSNO,D D的关系键为的关系键为DEPTDEPT,都是单属性,都是单属性,不可能存在部分函数依赖。不可能存在部分函数依赖。而对于而对于SCSC,(,(SNOSNO,CNOCNO) SCORE SCORE。所以所以SCDSCD分解后,分解后,消除了非主属性对关系键的部分函数依赖,消除了非主属性对关系键的部分函数依赖,S S,D D,SCSC均均属于属
38、于2 2NFNF。 30返回返回又又如如在在2.4.22.4.2中中,讲讲述述全全码码的的概概念念时时给给出出的的关关系模式系模式TCSTCS(T T,C C,S S),),一个教师可以讲授多门课程,一门课程可以为多个教师讲授,同样一个学生可以选听多门课程,一门课程可以为多个学生选听,(T,C,S)三个属性的组合是关系键,T,C,S都是主属性,而无非主属性,所以也就不可能存在非主属性对关系键的部分函数依赖,TCS2NF。经以上分析,可以得到两个结论:经以上分析,可以得到两个结论:1从1NF关系中消除非主属性对关系键的部分函数依赖,则可得到2NF关系。2如果R的关系键为单属性,或R的全体属性均为
39、主属性,则R2NF。31返回返回4.3.2.2 24.3.2.2 2NFNF规范化规范化2 2NFNF规规范范化化是是指指把把1 1NFNF关关系系模模式式通通过过投投影影分分解解转转换换成成2 2NFNF关系模式的集合。关系模式的集合。分分解解时时遵遵循循的的基基本本原原则则就就是是“一一事事一一地地”,让让一一个个关关系系只只描描述述一一个个实实体体或或者者实实体体间间的的联联系系。如如果果多多于于一一个个实实体体或联系,则进行投影分解。或联系,则进行投影分解。下面以关系模式下面以关系模式SCDSCD为例,来说明为例,来说明2 2NFNF规范化的过程规范化的过程例例4.1 4.1 将将SC
40、D(SNO,SN,AGE,DEPT,MN,CNO,SCORE)SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE)规规范范到到2 2NFNF。由SNOSN,SNOAGE,SNODEPT,(SNO,CNO) SCORE,可以判断,关系SCD至少描述了两个实体,一个为学生实体,属性有SNO、SN、AGE、DEPT、MN;另一个是学生与课程的联系(选课),属性有SNO、CNO和SCORE。根据分解的原则,我们可以将SCD分解成如下两个关系,如图4.5所示。32返回返回SD(SNO,SN,AGE,DEPT,MN),描述学生实体;SC(SNO,CNO,SCORE),描述学生与课程的联系。S
41、DSD SNOSNAGEDEPTMNS1赵亦17计算机刘伟S2钱尔18信息王平S3孙珊20信息王平S4李思21自动化刘伟SCSC SNOCNOSCORES1C190S1C285S2C557S2C680S2C7S2C570S3C10S3C270S3C485S4C193图4.5 关系SD和SC33返回返回对于分解后的两个关系对于分解后的两个关系SDSD和和SCSC,主键分别为主键分别为SNOSNO和和(SNOSNO,CNOCNO),),非主属性对主键完全函数依赖。因此,非主属性对主键完全函数依赖。因此,SDSD 2NF2NF,SCSC 2NF2NF,而且前面已经讨论,而且前面已经讨论,SCDSCD
42、的这种分的这种分解没有丢失任何信息,具有无损连接性。解没有丢失任何信息,具有无损连接性。分解后,分解后,SDSD和和SCSC的函数依赖分别如图的函数依赖分别如图4.64.6和和4.74.7所示。所示。 SNOSNSNOCNOSCOREAGEDEPTMN图图4.6 4.6 SDSD中的函数依赖关系中的函数依赖关系 图图4.7 4.7 SCSC中的函数依赖关系中的函数依赖关系 34返回返回1 1NFNF的关系模式经过投影分解转换成的关系模式经过投影分解转换成2 2NFNF后,消除了一后,消除了一些数据冗余。些数据冗余。分析图分析图4.54.5中中SDSD和和SCSC中的数据,可以看出,它们存储的中
43、的数据,可以看出,它们存储的冗余度比关系模式冗余度比关系模式SCDSCD有了较大辐度的降低。有了较大辐度的降低。学生的姓名、年龄不需要重复存储多次。学生的姓名、年龄不需要重复存储多次。这样便可在一定程度上避免数据更新所造成的数据不这样便可在一定程度上避免数据更新所造成的数据不一致性的问题。一致性的问题。由于把学生的基本信息与选课信息分开存储,则学生由于把学生的基本信息与选课信息分开存储,则学生基本信息因没选课而不能插入的问题得到了解决,插基本信息因没选课而不能插入的问题得到了解决,插入异常现象得到了部分改善。入异常现象得到了部分改善。同样,如果某个学生不再选修同样,如果某个学生不再选修C1C1
44、课程,只在选课关系课程,只在选课关系SCSC中删去该该学生选修中删去该该学生选修C1C1的记录即可,而的记录即可,而SDSD中有关该中有关该学生的其它信息不会受到任何影响,也解决了部分删学生的其它信息不会受到任何影响,也解决了部分删除异常问题。除异常问题。因此可以说关系模式因此可以说关系模式SDSD和和SCSC在性能上比在性能上比SCDSCD有了显著提有了显著提高。高。 35返回返回下面对下面对2 2NFNF规范化作规范化作形式化的描述形式化的描述。设设关关系系模模式式R R(X,Y,ZX,Y,Z),R R 1NF1NF,但但R R 2NF2NF,其其中中,X X是是键键属属性性,Y Y,Z
45、Z是是非非键键属属性性,且且存存在在部部分分函函数数依依赖赖,X X Y Y。设设X X可可表表示示为为X1X1、X2X2,其其中中X1 X1 Y Y。则则R R(X X,Y Y,Z Z)可可以以分分解解为为RX1RX1,YY和和RXRX,ZZ。因因为为X1YX1Y,所所以以R(XR(X,Y Y,Z)=RX1Z)=RX1,Y*RX1Y*RX1,X2X2,Z=RX1Z=RX1,Y*RXY*RX,ZZ,即即R R等等于于其其投投影影RX1RX1,YY和和 X X,ZZ在在X1X1上上的的自自然然连连接接,R R的的分分解具有解具有无损连接性无损连接性。由于由于X1 YX1 Y,因此因此RX1RX1
46、,YY 2NF2NF。若若RXRX,Z Z 2NF2NF,可以按照上述方法继续进行投影分可以按照上述方法继续进行投影分解,直到将解,直到将RXRX,ZZ分解为属于分解为属于2 2NFNF关系的集合,关系的集合,且这种分解必定是有限的。且这种分解必定是有限的。 36返回返回4.3.2.3 24.3.2.3 2NFNF的缺点的缺点2 2NFNF的的关关系系模模式式解解决决了了1 1NFNF中中存存在在的的一一些些问问题题,2 2NFNF规规范范化化的的程程度度比比1 1NFNF前前进进了了一一步步,但但2 2NFNF的的关关系系模模式式在在进进行行数数据据操操作时,仍然存在着一些问题:作时,仍然存
47、在着一些问题:1数据冗余。每个系名和系主任的名字存储的次数等于该系的学生人数。2插入异常。当一个新系没有招生时,有关该系的信息无法插入。3删除异常。某系学生全部毕业而没有招生时,删除全部学生的记录也随之删除了该系的有关信息。4更新异常。更换系主任时,仍需改动较多的学生记录。之所以存在这些问题,是由于在之所以存在这些问题,是由于在SCDSCD中存在着非主属性对中存在着非主属性对主键的传递依赖。主键的传递依赖。分析分析SCDSCD中的函数依赖关系,中的函数依赖关系,SNOSNSNOSN,SNOAGESNOAGE,SNODEPTSNODEPT,DEPTMNDEPTMN,SNO MNSNO MN,非主
48、属性非主属性MNMN对主键对主键SNOSNO传递依赖。传递依赖。为此,对关系模式为此,对关系模式SCDSCD还需进一步简化,消除这种传递依还需进一步简化,消除这种传递依赖,得到赖,得到3 3NFNF。 37返回返回4.3.3 4.3.3 第三范式第三范式4.3.3.1 4.3.3.1 第三范式的定义第三范式的定义定定义义4.64.6 如如果果关关系系模模式式R R 2NF2NF,且且每每个个非非主主属属性性都都不不传传递递依依赖赖于于R R的的每每个个关关系系键键,则则称称R R属属于于第第三三范范式式(Third Normal Form),简简称称3 3NFNF,记记作作R R 3NF3NF
49、。第三范式具有如下性质:第三范式具有如下性质:1 1如果如果R R 3NF3NF,则则R R也是也是2 2NFNF。38返回返回2 2如果如果R R 2NF2NF,则则R R不一定是不一定是3 3NFNF。例如,我们前面由关系模式SCD分解而得到的SD和SC都为2NF,其中,SC3NF,但在SD中存在着非主属性MN对主键SNO传递依赖,SD3NF。对于SD,应该进一步进行分解,使其转换成3NF。4.3.3.2 3NF4.3.3.2 3NF规范化规范化3 3NFNF规规范范化化是是指指把把2 2NFNF关关系系模模式式通通过过投投影影分分解解转转换换成成3 3NFNF关系模式的集合。关系模式的集
50、合。和和2 2NFNF的的规规范范化化时时遵遵循循的的原原则则相相同同,即即“一一事事一一地地”,让一个关系只描述一个实体或者实体间的联系。让一个关系只描述一个实体或者实体间的联系。下面以下面以2 2NFNF关系模式关系模式SDSD为例,来说明为例,来说明3 3NFNF规范化的过程。规范化的过程。 39返回返回例例4.24.2将将SD(SNO,SN,AGE,DEPT,MN)SD(SNO,SN,AGE,DEPT,MN)规范到规范到3 3NFNF。 分析SD的属性组成,可以判断,关系SD实际上描述了两个实体: 一个为学生实体,属性有SNO,SN,AGE,DEPT; 另一个是系的实体,其属性DEPT
51、和MN。根据分解的原则,我们可以将SD分解成如下两个关系,如图4.8所示。 S(SNO,SN,AGE,DEPT),描述学生实体; D(DEPT,MN),描述系的实体。40返回返回S DS DDEPTMN计算机刘伟信息王平自动化刘伟SNOSNAGEDEPTS1赵亦17计算机S2钱尔18信息S3孙珊20信息S4李思21自动化对于分解后的两个关系S和D,主键分别为SNO和DEPT,不存在非主属性对主键的传递函数依赖。因此,S3NF,D3NF。图图4.8 4.8 关系关系S S和和D D 41返回返回分解后,分解后,S S和和D D的函数依赖分别如图的函数依赖分别如图4.94.9和和4.104.10所
52、示。所示。SNOSNDEPTAGEDEPTMN图图4.9 4.9 S S中的函数依赖关系图中的函数依赖关系图图图4.10 4.10 D D中的函数依赖关系图中的函数依赖关系图由以上两图可以看出,关系模式SD由2NF分解为3NF后,函数依赖关系变得更加简单,既没有非主属性对键的部分依赖,也没有非主属性对键的传递依赖,解决了2NF中存在的四个问题。42返回返回1数据冗余降低。系主任的名字存储的次数与该系的学生人数无关,只在关系D中存储一次。2不存在插入异常。当一个新系没有学生时,该系的信息可以直接插入到关系D中,而与学生关系S无关。3不存在删除异常。要删除某系的全部学生而仍然保留该系的有关信息时,
53、可以只删除学生关系S中的相关学生记录,而不影响系关系D中的数据。 4不存在更新异常。更换系主任时,只需修改关系D中一个相应元组的MN属性值,从而不会出现数据的不一致现象。SCD规范到3NF后,所存在的异常现象已经全部消失。但是,3NF只限制了非主属性对键的依赖关系,而没有限制主属性对键的依赖关系。如果发生了这种依赖,仍有可能存在数据冗余、插入异常、删除异常和修改异常。这时,则需对3NF进一步规范化,消除主属性对键的依赖关系,为了解决这种问题,Boyce与Codd共同提出了一个新范式的定义,这就是Boyce-Codd范式,通常简称BCNF或BC范式。它弥补了3NF的不足。43返回返回4.3.4
54、4.3.4 BCBC范式范式4.3.4.1 4.3.4.1 BCBC范式的定义范式的定义定定义义4.74.7 如如果果关关系系模模式式R R 1NF1NF,且且所所有有的的函函数数依依赖赖XYXY(Y Y X X), ,决决定定因因素素X X都都包包含含了了R R的的一一个个候候选选键键,则则称称R R属属于于BCBC范范式式(Boyce-Codd Normal Form),记作记作R R BCNFBCNF。BCNFBCNF具有如下性质:具有如下性质:1满足BCNF的关系将消除任何属性(主属性或非主属性)对键的部分函数依赖和传递函数依赖。也就是说,如果RBCNF,则R也是3NF。证明:采用反证
55、法。设R不是3NF。则必然存在如下条件的函数依赖,XY(Y X),YZ,其中X是键属性,Y是任意属性组,Z是非主属性,Z Y,这样YZ函数依赖的决定因素Y不包含候选键,这与BCNF范式的定义相矛盾,所以如果RBCNF,则R也是3NF。44返回返回2 2如果如果R R 3NF3NF,则则R R不一定是不一定是BCNFBCNF。现举例说明。设关系模式现举例说明。设关系模式SNCSNC(SNOSNO,SNSN,CN0CN0,SCORESCORE),),其中其中SNOSNO代表学号,代表学号,SNSN代表学生姓名并假设没有重名,代表学生姓名并假设没有重名,CNOCNO代表课程号,代表课程号,SCORE
56、SCORE代表成绩。可以判定,代表成绩。可以判定,SNCSNC有两个候选键(有两个候选键(SNOSNO,CNOCNO)和和(SNSN,CNOCNO),),其函数依赖如下:其函数依赖如下: SNO SN(SNO,CNO)SCORE(SN,CNO)SCORE。唯一的非主属性唯一的非主属性SCORESCORE对键不存在部分函数依赖,也不存在传递函对键不存在部分函数依赖,也不存在传递函数依赖。所以数依赖。所以SNCSNC 3NF3NF。但是,因为但是,因为SNO SNSNO SN,即决定因素即决定因素SNOSNO或或SNSN不包含候选键,从另一不包含候选键,从另一个角度说,存在着主属性对键的部分函数依
57、赖:个角度说,存在着主属性对键的部分函数依赖: (SNOSNO,CNOCNO) SN SN,(,(SNSN,CNOCNO) SNO SNO,所以所以SNCSNC不是不是BCNFBCNF。正是存在着这种主属性对键的部分函数依赖关系,造成了关系正是存在着这种主属性对键的部分函数依赖关系,造成了关系SNCSNC中存在着较大的数据冗余,学生姓名的存储次数等于该生所选的中存在着较大的数据冗余,学生姓名的存储次数等于该生所选的课程数。从而会引起修改异常。课程数。从而会引起修改异常。比如,当要更改某个学生的姓名时,则必须搜索出现该姓名的每比如,当要更改某个学生的姓名时,则必须搜索出现该姓名的每个学生记录,并
58、对其姓名逐一修改,这样容易造成数据的不一致个学生记录,并对其姓名逐一修改,这样容易造成数据的不一致问题。问题。解决这一问题的办法仍然是通过投影分解进一步提高解决这一问题的办法仍然是通过投影分解进一步提高SNCSNC的范式等的范式等级,将级,将SNCSNC规范到规范到BCNFBCNF。 45返回返回4.3.4.2 4.3.4.2 BCNFBCNF规范化规范化BCNFBCNF规规范范化化是是指指把把3 3NFNF关关系系模模式式通通过过投投影影分分解解转转换换成成BCNFBCNF关系模式的集合。关系模式的集合。下面以下面以3 3NFNF关系模式关系模式SNCSNC为例,来说明为例,来说明BCNFB
59、CNF规范化的过程。规范化的过程。例例4.34.3将将SNC(SNO,SN,CNOSNC(SNO,SN,CNO,SCORE)SCORE)规范到规范到BCNFBCNF。分分析析SNCSNC数数据据冗冗余余的的原原因因,是是因因为为在在这这一一个个关关系系中中存存在在两两个个实实体体,一一个个为为学学生生实实体体,属属性性有有SNOSNO、SNSN;另另一一个个是选课实体,属性有是选课实体,属性有SNOSNO、CNOCNO和和SCORESCORE。根据分解的原则,我们可以将根据分解的原则,我们可以将SNCSNC分解成如下两个关系:分解成如下两个关系:S1(SNO,SN),描述学生实体;S2(SNO
60、,CNO,SCORE),描述学生与课程的联系。对于对于S1S1,有两个候选键有两个候选键SNOSNO和和SNSN,对于对于S2S2,主键为(主键为(SNOSNO,CNOCNO)。)。在这两个关系中,无论主属性还是非主属性都不存在在这两个关系中,无论主属性还是非主属性都不存在对键的部分依赖和传递依赖,对键的部分依赖和传递依赖,S1S1 BCNFBCNF,S2S2 BCNFBCNF。 46返回返回分解后,分解后,S1S1和和S2S2的函数依赖分别如图的函数依赖分别如图4.114.11和和4.124.12所示。所示。SNOSNSNOCNOSCORE图图4.11 4.11 S1S1中的函数依赖关系中的
61、函数依赖关系 图图4.12 4.12 S2S2中的函数依赖关系中的函数依赖关系 关系SNC转换成BCNF后,数据冗余度明显降低。学生的姓名只在关系S1中存储一次,学生要改名时,只需改动一条学生记录中的相应的SN值,从而不会发生修改异常。47返回返回例例4.44.4设设关关系系模模式式TCSTCS(T T,C C,S S),T T表表示示教教师师,C C表表示示课课程程,S S表表示示学学生生。语语义义假假设设是是,每每一一位位教教师师只只讲讲授授一一门门课课程程;每每门门课课程程由由多个教师讲授;某一学生选定某门课程,就对应于一确定的教师。多个教师讲授;某一学生选定某门课程,就对应于一确定的教
62、师。根据语义假设,根据语义假设,TCSTCS的函数依赖是:的函数依赖是:(S S,C C)TT,(,(S S,T T)CC,TCTC。函数依赖图如图函数依赖图如图4.134.13所示。所示。 SCTSTC4.13 4.13 TCSTCS中的函数依赖关系中的函数依赖关系 48返回返回对对于于TCSTCS,(S S,C C)和和(S S,T T)都都是是候候选选键键,两两个个候候选选键键相相交交,有有公公共共的的属属性性S S。TCSTCS中中不不存存在在非非主主属属性性,也也就就不不可可能能存存在在非非主主属属性性对对键的部分依赖或传递依赖,所以键的部分依赖或传递依赖,所以TCSTCS 3NF3
63、NF。但从但从TCSTCS的一个关系实例(如图的一个关系实例(如图4.144.14)分析,仍存在一些问题。)分析,仍存在一些问题。 TCST1C1S1T1C1S2T2C1S3T2C1S4T3C2S2T4C2S2T4C3S2图图4.14 4.14 关系关系TCSTCS 49返回返回1 1数数据据冗冗余余。虽虽然然每每个个教教师师只只开开一一门门课课,但但每每个个选选修修该该教师该该门课程的学生元组都要记录这一信息。教师该该门课程的学生元组都要记录这一信息。2 2插插入入异异常常。当当某某门门课课程程本本学学期期不不开开,自自然然就就没没有有学学生生选选修修。没没有有学学生生选选修修,因因为为主主
64、属属性性不不能能为为空空,教教师师上上该该门门课课程程的的信信息息就就无无法法插插入入。同同样样原原因因,学学生生刚刚入入校校, ,尚未选课,有关信息也不能输入。尚未选课,有关信息也不能输入。3 3删删除除异异常常。如如果果选选修修某某门门课课程程的的学学生生全全部部毕毕业业,删删除除学学生生记记录录的的同同时时, ,随随之之也也删删除除了了教教师师开开设设该该门门课课程程的的信信息。息。4 4更新异常。更新异常。当某个教师开设的某门课程改名后,所有当某个教师开设的某门课程改名后,所有选修该教师该门课程的学生元组都要进行修改,如果选修该教师该门课程的学生元组都要进行修改,如果漏改某个数据,则破
65、坏了数据的完整性。漏改某个数据,则破坏了数据的完整性。 50返回返回分分析析出出现现上上述述问问题题的的原原因因在在于于主主属属性性部部分分依依赖赖于于键键,(S S,T T)C C,因因此此关关系系模模式式还还继继续续分分解解,转转换换成成更更高高一一级的范式级的范式BCNFBCNF,以消除数据库操作中的异常现象。以消除数据库操作中的异常现象。将将TCSTCS分分解解为为两两个个关关系系模模式式STST(S S,T T)和和TCTC(T T,C C),消消除除函函数数依依赖赖(S S,T T)C C。其其中中STST的的键键为为S S,TCTC的的键键为为T T。STST BCNFBCNF,
66、TCTC BCNFBCNF。这这两两个个关关系系模模式式的的函函数数依依赖赖图图分别如图分别如图4.154.15和和4.164.16所示。所示。 STTC图图4.15 4.15 STST中的函数依赖关系中的函数依赖关系 图图4.16 4.16 TCTC中的函数依赖关系中的函数依赖关系 51返回返回关关系系模模式式TCSTCS由由规规范范到到BCNFBCNF后后,使使原原来来存存在在的的四四个个异异常常问问题题得得到到解解决。决。 1 1数据冗余降低。数据冗余降低。每个教师开设课程的信息只在TC关系中存储一次。 2 2不不存存在在插插入入异异常常。对于所开课程尚未有学生选修的教师信息可以直接存储
67、在关系TC中,而对于尚未选修课程的学生可以存储在关系ST中。 3 3不不存存在在删删除除异异常常。如果选修某门课程的学生全部毕业,可以只删除关系ST中的相关学生记录,而不影响系关系TC中相应教师开设该门课程的信息。 4 4不不存存在在更更新新异异常常。当某个教师开设的某门课程改名后,只需修改关系TC中的一个相应元组即可,不会破坏数据的完整性。如如果果一一个个关关系系数数据据库库中中所所有有关关系系模模式式都都属属于于3 3NFNF,则则已已在在很很大大程程度度上上消消除除了了插插入入异异常常和和删删除除异异常常,但但由由于于可可能能存存在在主主属属性性对对候候选选键键的部分依赖和传递依赖,因此
68、关系模式的分离仍不够彻底。的部分依赖和传递依赖,因此关系模式的分离仍不够彻底。如如果果一一个个关关系系数数据据库库中中所所有有关关系系模模式式都都属属于于BCNFBCNF,那那么么在在函函数数依依赖赖的的范范畴畴内内,已已经经实实现现了了模模式式的的彻彻底底分分解解,消消除除了了产产生生插插入入异异常常和删除异常的根源,而且数据冗余也减少到极小程度。和删除异常的根源,而且数据冗余也减少到极小程度。 52返回返回4.4 关系模式的规范化关系模式的规范化 到到目目前前为为止止,规规范范化化理理论论已已经经提提出出了了六六类类范范式式(有有关关4 4NFNF和和5 5NFNF的内容不再详细介绍)。的
69、内容不再详细介绍)。各各范范式式级级别别是是在在分分析析函函数数依依赖赖条条件件下下对对关关系系模模式式分分离离程程度度的一种测度,范式级别可以逐级升高。的一种测度,范式级别可以逐级升高。一一个个低低一一级级范范式式的的关关系系模模式式,通通过过模模式式分分解解转转化化为为若若干干个个高高一一级级范范式式的的关关系系模模式式的的集集合合,这这种种分分解解过过程程叫叫作作关关系系模模式的式的规范化规范化(NormalizationNormalization)。)。4.4.1 4.4.1 关系模式规范化的目的和原则关系模式规范化的目的和原则一个关系只要其分量都是不可分的数据项,就可称作规范化的关一
70、个关系只要其分量都是不可分的数据项,就可称作规范化的关系,但这只是最基本的规范化。系,但这只是最基本的规范化。这样的关系模式是合法的。这样的关系模式是合法的。但人们发现有些关系模式存在插入、删除、修改异常、数据冗余但人们发现有些关系模式存在插入、删除、修改异常、数据冗余等弊病。等弊病。规范化的目的就是使结构合理,消除存储异常,使数据冗余尽量规范化的目的就是使结构合理,消除存储异常,使数据冗余尽量小,便于插入、删除和更新。小,便于插入、删除和更新。 53返回返回规规范范化化的的基基本本原原则则就就是是遵遵从从概概念念单单一一化化“一一事事一一地地”的的原原则则,即即一个关系只描述一个实体或者实体
71、间的联系。一个关系只描述一个实体或者实体间的联系。若多于一个实体,就把它若多于一个实体,就把它“分离分离”出来。出来。因因此此,所所谓谓规规范范化化,实实质质上上是是概概念念的的单单一一化化,即即一一个个关关系系表表示示一一个实体。个实体。4.4.2 4.4.2 关系模式规范化的步骤关系模式规范化的步骤规规范范化化就就是是对对原原关关系系进进行行投投影影,消消除除决决定定属属性性不不是是候候选键的任何函数依赖。具体可以分为以下几步:选键的任何函数依赖。具体可以分为以下几步:1对1NF关系进行投影,消除原关系中非主属性对键的部分函数依赖,将1NF关系转换成若干个2NF关系。2对2NF关系进行投影
72、,消除原关系中非主属性对键的传递函数依赖,将2NF关系转换成若干个3NF关系。3对3NF关系进行投影,消除原关系中主属性对键的部分函数依赖和传递函数依赖,也就是说使决定因素都包含一个候选键。得到一组BCNF关系。54返回返回关系规范化的基本步骤如图关系规范化的基本步骤如图4.174.17所示。所示。 1NF2NF3NFBCNF消除决定属性不是候选键的非平凡的函数依赖消除非主属性对键的部分函数依赖消除非主属性对键的传递函数依赖消除主属性对键的部分和传递函数依赖图图4.17 4.17 规范化过程规范化过程 一般情况下,我们说没有异常弊病的数据库设计是好的数据库设计,一个不好的关系模式也总是可以通过
73、分解转换成好的关系模式的集合。但是在分解时要全面衡量,综合考虑,视实际情况而定。对于那些只要求查询而不要求插入、删除等操作的系统,几种异常现象的存在并不影响数据库的操作。这时便不宜过度分解,否则当要对整体查询时,需要更多的多表连接操作,这有可能得不偿失。在实际应用中,最有价值的是3NF和BCNF,在进行关系模式的设计时,通常分解到3NF就足够了。55返回返回4.4.2 4.4.2 关系模式规范化的要求关系模式规范化的要求关关系系模模式式的的规规范范化化过过程程是是通通过过对对关关系系模模式式的的投投影影分分解解来来实实现现的的,但但是是投投影影分分解解方方法法不不是是唯唯一一的的,不不同同的的
74、投投影影分分解解会会得得到到不不同同的的结结果。果。在在这这些些分分解解方方法法中中,只只有有能能够够保保证证分分解解后后的的关关系系模模式式与与原原关关系系模模式等价的方法才是有意义的。式等价的方法才是有意义的。下面先给出两个定义:下面先给出两个定义:无无损损连连接接性性(Lossless Lossless JoinJoin):设设关关系系模模式式R(UR(U,F)F)被被分分解解为为若若干干个个关关系系模模式式R R1 1(U(U1 1,F F1 1) ),R R2 2(U(U2 2,F F2 2) ),, , R Rn n(U(Un n,F Fn n) ),其其中中U=UU=U1 1U
75、U2 2UUN N,且且不不存存在在U UN NU Uj j式式,F Fi i为为F F在在U Uj j上上的的投投影影,如如果果R R与与R R1 1,R R2 2,R Rn n自自然然连连接接的的结结果果相相等等,则则称称关关系系模模式式R R的的分分解解具具有有无无损损连连接性。接性。函函数数依依赖赖保保持持性性(Preserve Preserve DependencyDependency):设设关关系系模模式式R(UR(U,F)F)被被分分解解为为若若干干个个关关系系模模式式R R1 1(U(U1 1,F F1 1) ),R R2 2(U(U2 2,F F2 2) ),, , R Rn
76、 n(U(Un n,F Fn n) ),其其中中U=UU=U1 1U U2 2UUN N,且且不不存存在在U UN NU Uj j式式,F Fi i为为F F在在U Uj j上上的的投投影影,如如果果F F所所蕴蕴含含的的函函数数依依赖赖一一定定也也由由分分解解得得到到的的某某个个关关系系模模式式中中的的函函数数依依赖赖F Fi i所蕴含,则称关系模式所蕴含,则称关系模式R R的分解具有函数依赖保持性。的分解具有函数依赖保持性。 56返回返回判判断断对对关关系系模模式式的的一一个个分分解解是是否否与与原原关关系系模模式式等等价价可可以以有有三三种种不不同的标准:同的标准:1分解要具有无损连接性
77、。2分解要具有函数依赖保持性。3分解既要具有无损连接性,又要具有函数依赖保持性。例例如如,对对于于4.3.2.24.3.2.2中中例例4.24.2的的关关系系模模式式SD(SNO,SN,AGE,DEPT,MN)SD(SNO,SN,AGE,DEPT,MN),规范到规范到3 3NFNF,可以有以下三种不同的分解方法:可以有以下三种不同的分解方法:第一种:第一种:S(SNO,SN,AGE,DEPT)D(DEPT,MN)SD(SNO,SN,AGE,DEPT,MN)=SSNO,SN,AGE,DEPT*DDEPT,MN,也就是说,用其两个投影在DEPT上的自然连接可复原关系模式SD。也就是说这种分解具有无
78、损连接性。对对于于分分解解后后的的关关系系模模式式S S,有有函函数数依依赖赖SNODEPTSNODEPT,对对于于D D,有有函函数数依依赖赖DEPTMNDEPTMN,这这种种分分解解方方法法保保持持了了原原来来的的SDSD中中的的两两个个完完全全函函数数依依赖赖SNODEPTSNODEPT,DEPTMNDEPTMN。分分解解既既具具有有无无损损连连接接性性,又又具具有有函函数数依赖保持性。依赖保持性。前面已经给出详细的论述,这是一种正确的分解方法。前面已经给出详细的论述,这是一种正确的分解方法。 57返回返回第二种:第二种:S1(SNO,SN,AGE,DEPT)D1(SNO,MN) 分解后
79、的关系如图分解后的关系如图4.184.18所示。所示。S1 S1 D1 D1SNOSNAGEDEPTS1赵亦17计算机S2钱尔18信息S3孙珊20信息S4李思21自动化SNOMNS1刘伟S2王平S3王平S4刘伟图图4.18 4.18 关系关系S1S1和和D1D1 58返回返回分分解解以以后后,两两个个关关系系的的主主键键都都为为SNOSNO,也也不不存存在在非非主主属属性性对对主主键键的的传传递递函函数数依依,所所以以两两个个关关系系均均属属于于3 3NFNF。且且SD=S1*D1SD=S1*D1,关关系系模模式式SDSD等等于于S1S1和和D1D1在在SNOSNO上上的的自自然然连连接接,这
80、这种种分分解解也也具具有有无无损损连连接接性性,保保证证不不丢丢失失原原关关系系中中的的信信息息。但但这这种种分分解解结结果果,仍仍然然存存在在着一些问题:着一些问题:1数据冗余。每个系名和系主任的名字存储的次数等于该系的学生人数。2插入异常。当一个新系没有招生时,系主任的名字则无法插入。3删除异常。某系学生全部毕业而没有招生时,要删除全部学生的记录,两个关系都要涉及,有关该系的信息将被删除。4更新异常。更换系主任时,需改动较多的学生记录。另外,某个学生要转系,还必须修改两个关系。59返回返回之之所所以以存存在在上上述述问问题题,是是因因为为分分解解得得到到的的两两个个关系模式不是相互独立的。
81、关系模式不是相互独立的。SDSD中中的的函函数数依依赖赖DEPTMNDEPTMN既既没没有有投投影影到到关关系系模模式式S1S1上上,也也没没有有投投影影到到关关系系模模式式D1D1上上,而而是是跨跨在在这这两两个个关关系系模模式式上上,也也就就是是说说这这种种分分解解方方法法没没有有保保持持原原关关系系中中的的函函数数依依赖赖,却却用用了了原原关关系系隐含的传递函数依赖隐含的传递函数依赖SNO MNSNO MN。分分解解只只具具有有无无损损连连接接性性,而而不不具具有有函函数数依依赖赖保保持性。持性。因此,因此,“弊病弊病”仍然没有解决。仍然没有解决。60返回返回第三种:第三种:S2(SNO
82、,SN,AGE,MN)D2(DEPT,MN) 分解后的关系如图分解后的关系如图4.194.19所示。所示。S2 D2S2 D2DEPTMN计算机刘伟信息王平自动化刘伟SNOSNAGEMNS1赵亦17刘伟S2钱尔18王平S3孙珊20王平S4李思21刘伟图图4.19 4.19 关系关系S2S2和和D2D2 61返回返回分分解解以以后后,两两个个关关系系均均为为3 3NFNF,公公共共属属性性为为MNMN,但但MN SNOMN SNO,MN DEPTMN DEPT,所以所以S2*D2SDS2*D2SD。S2S2和和D2D2在在MNMN上的自然连接的结果如图上的自然连接的结果如图4.204.20。SN
83、OSNAGEDEPTMNS1赵亦17计算机刘伟S1赵亦17自动化刘伟S2钱尔18信息王平S3孙珊20信息王平S4李思21计算机刘伟S4李思21自动化刘伟图图4.20 4.20 S2S2和和D2D2的自然连接的自然连接62返回返回S2*D2S2*D2比比原原来来的的关关系系SDSD多多了了两两个个元元组组(S1S1,赵赵亦亦,1717,自自动动化化,刘刘伟伟)和和(S4S4,李李思思,2121,计计算算机机,刘刘伟伟),因因此此也也无无法法知知道道原原来来的的SDSD关关系系中中究究竟竟有有哪哪些些元元组组,从从这这个个意意义义上上说说,此此分分解解方方法法仍仍然然丢丢失失了了信信息息。所所以以
84、其其分解是不可恢复的。分解是不可恢复的。另另外外,这这种种分分解解方方法法只只保保持持了了原原来来的的SDSD中中的的DEPTMNDEPTMN这这个个完完全全函函数数依依赖赖而而未未用用另另外外一一个个SNODEPTSNODEPT完完全全依依赖赖,却却用用了了原原关关系系的的传传递递函函数数依依赖赖SNO SNO MNMN。所所以以分分解解既既不不具具有有无无损损连连接接性性,也也不不具具有有函函数数依依赖赖保保持持性性,同同样样存在着数据操作的异常情况。存在着数据操作的异常情况。经经以以上上几几种种分分解解方方法法的的分分析析,如如果果一一个个分分解解具具有有无无损损连连接接性性,则则能能够
85、够保保证证不不丢丢失失信信息息。如如果果一一个个分分解解具具有有函数依赖保持性,则可以减轻或解决各种异常情况。函数依赖保持性,则可以减轻或解决各种异常情况。分分解解具具有有无无损损连连接接性性和和函函数数依依赖赖保保持持性性是是两两个个相相互互独独立立的的标标准准。具具有有无无损损连连接接性性的的分分解解不不一一定定具具有有函函数数依依赖赖保保持持性性。同同样样,具具有有函函数数依依赖赖保保持持性性的的分分解解也也不不一一定具有无损连接性。定具有无损连接性。63返回返回规规范范化化理理论论提提供供了了一一套套完完整整的的模模式式分分解解方方法法,按按照照这这套套算算法法可可以以做做到到:如如果
86、果要要求求分分解解既既具具有有无无损损连连接接性性,以以具具有有函函数数依依赖赖保保持持性性,则则分分解解一一定定能能够够达达到到3 3NFNF,但但不一定能够达到不一定能够达到BCNFBCNF。所所以以在在3 3NFNF的的规规范范化化中中,既既要要检检查查分分解解是是否否具具有有无无损损连连接性,又要检查分解是否具有函数依赖保持性。接性,又要检查分解是否具有函数依赖保持性。只只有有这这两两条条都都满满足足,才才能能保保证证分分解解的的正正确确性性和和有有效效性性,才才既既不不会会发发生生信信息息丢丢失失,又又保保证证关关系系中中的的数数据据满满足足完完整性约束。整性约束。 64返回返回小小
87、 结结 在这一章,我们首先由关系模式的存储异常问题引出了函数依赖在这一章,我们首先由关系模式的存储异常问题引出了函数依赖的概念,其中包括完全函数依赖、部分函数依赖和传递函数依赖,的概念,其中包括完全函数依赖、部分函数依赖和传递函数依赖,这些概念是规范化理论的依据和规范化程度的准则。这些概念是规范化理论的依据和规范化程度的准则。规范化就是对原关系进行投影,消除决定属性不是候选键的任何规范化就是对原关系进行投影,消除决定属性不是候选键的任何函数依赖。函数依赖。一个关系只要其分量都是不可分的数据项,就可称作规范化的关一个关系只要其分量都是不可分的数据项,就可称作规范化的关系,也称作系,也称作1NF。
88、消除消除1NF关系中非主属性对键的部分函数依赖,得到关系中非主属性对键的部分函数依赖,得到2NF,消除消除2NF关系中非主属性对键的传递函数依赖,得到关系中非主属性对键的传递函数依赖,得到3NF,消除消除3NF关关系中主属性对键的部分函数依赖和传递函数依赖,便可得到一组系中主属性对键的部分函数依赖和传递函数依赖,便可得到一组BCNF关系。关系。在规范化过程中,逐渐消除存储异常,使数据冗余尽量小,便于在规范化过程中,逐渐消除存储异常,使数据冗余尽量小,便于插入、删除和更新。插入、删除和更新。规范化的基本原则就是遵从概念单一化规范化的基本原则就是遵从概念单一化“一事一地一事一地”的原则,即的原则,即一个关系只描述一个实体或者实体间的联系。一个关系只描述一个实体或者实体间的联系。规范化的投影分解方法不是唯一的,对于规范化的投影分解方法不是唯一的,对于3NF的规范化,分解既的规范化,分解既要具有无损连接性,又要具有函数依赖保持性。要具有无损连接性,又要具有函数依赖保持性。 65