




已阅读5页,还剩68页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章关系数据库设计理论,本章要点关系数据库设计理论主要包括数据依赖、范式及规范化方法这三部分内容。关系模式中数据依赖问题的存在,可能会导致库中数据冗余、插入异常、删除异常、修改复杂等问题,规范化模式设计方法使用范式这一概念来定义关系模式所符合的不同级别的要求。较低级别范式的关系模式,经模式分解可转换为若干符合较高级别范式要求的关系模式。本章的重点是函数依赖相关概念及基于函数依赖的范式及其判定。,关系模式的表示,定义关系的描述称为关系模式(RelationSchema)。一个关系模式应当是一个五元组。它可以形式化地表示为:R(U,D,dom,F)。其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域的集合,dom为属性向域的映象集合,F为属性间数据的依赖关系集合。关系模式通常可以简记为:R(A1,A2,An)或R(U)。其中R为关系名,A1,A2,An为属性名。而域名及属性向域的映象常常直接说明为属性的类型、长度。,4.1问题的提出,如何使用关系模型设计关系数据库?也就是面对一个现实问题,如何选择一个比较好的关系模式的集合?其中每个关系模式又由哪些属性组成?这就是数据库逻辑设计主要关心的问题,4.1.1规范化理论概述,关系数据库设计理论主要包括三个方面的内容:函数依赖、范式(NormalForm)和模式设计。其中函数依赖起着核心作用,是模式分解和模式设计的基础,范式是模式分解的标准。关系数据库设计时要遵循一定的规范化理论。只有这样才可能设计出一个较好的数据库来。前面已经讲过关系数据库设计的关键所在是关系数据库模式的设计,也就是关系模式的设计。那么到底什么是好的关系模式呢?某些不好的关系模式可能导致哪些问题?下面通过例子对这些问题进行分析。,4.1.2不合理的关系模式存在的问题,例1要求设计学生-课程数据库,其关系模式SDC如下:SDC(SNO,SN,AGE,DEPT,MN,CNO,SCORE)根据实际情况,这些数据有如下语义规定:(1)一个系有若干个学生,但一个学生只属于一个系;(2)一个系只有一名系主任,但一个系主任可以同时兼几个系的系主任;(3)一个学生可以选修多门功课,每门课程可被若干个学生选修;(4)每个学生学习每门课程有一个成绩。,4.1.2不合理的关系模式存在的问题,根据上述语义规定并分析以上关系中的数据,我们可以看出,(SNO,CNO)属性的组合能唯一标识一个元组(每行中SNO与CNO的组合均是不同的),所以(SNO,CNO)是该关系模式的主关系键(即主键,又名主码等)。但在进行数据库的操作时,会出现以下几方面的问题。数据冗余(2)插入异常(3)删除异常(4)修改异常因此,把不好的关系数据库模式转变为较好的关系数据库模式,即关系的规范化,4.1.2不合理的关系模式存在的问题,示例数据主码是(SNO,CNO),4.1.2不合理的关系模式存在的问题,数据冗余总字节数=(5+8+4+8+8+3+4)*9系名和系负责人重复9次学号和姓名重复3次课程名重复3次,4.1.2不合理的关系模式存在的问题,插入异常计算机系成立,尚未招生无法插入-在学生表存储数据必须保证其实体完整性-主属性不能为空,故学号和课程名不能为空。招生完毕,但学生尚未选课无法插入-学号是有了,但学生尚未选修,所以课程名不知道求学校有多少系?-结果不正确,在学生表中还未有计算机系含在内问计算机负责人是谁?-不知道,计算机系不存在由于信息不全,导致应该存储的数据无法存储。,4.1.2不合理的关系模式存在的问题,删除异常计算机系06级学生毕业,删除所有该年级学生-由于计算机系只有06级学生,被删除后,连带计算机系负责人信息一起被删除。问学校有几个系?问计算机系负责人是谁?若s2学生取消三门选修课程,则学要删除对该学生对应的三条记录。该学生记录信息也因此被删除这个时候如果问问计算机系有多少学生?删除元组时导致额外信息的丢失,4.1.2不合理的关系模式存在的问题,修改异常(更新异常)计算机系负责人改为张文瑞需要修改9条记录某学生改名,则该学生的所有记录都要逐一修改SN的值由于数据重复存储导致更新操作复杂。,4.1.2不合理的关系模式存在的问题,上述问题的根本原因学生关系模式的规范化程度较低解决办法通过规范化理论对其进行规范化,可以逐步降低和消除上述问题,4.2规范化,本节将讨论下述内容:首先讨论一个关系属性间不同的依赖情况,讨论如何根据属性间的依赖情况来判定关系是否具有某些不合适的性质。通常按属性间依赖情况来区分关系规范化的程度为第一范式、第二范式、第三范式、BC范式和第四范式等。然后直观地描述如何将具有不合适性质的关系转换为更合适的形式。,4.2.1函数依赖,函数依赖定义4.1设关系模式R(U,F),U是属性全集,F是U上的函数依赖集,X和Y是U的子集,如果对于R(U)的任意一个可能的关系r,对于X的每一个具体值,Y都有唯一的具体的值与之对应,则称X函数决定Y,或Y函数依赖于X,记XY。我们称X为决定因素,Y为依赖因素。当Y不函数依赖于X时,记作:XY。当XY且YX时,则记作:XY。函数依赖有几点需要说明:(1)平凡的函数依赖与非平凡的函数依赖当属性集Y是属性集X的子集时,则必然存在着函数依赖XY,这种类型的函数依赖称为平凡的函数依赖。如果Y不是X子集,则称XY为非平凡的函数依赖。若不特别声明,我们讨论的都是非平凡的函数依赖。,4.2.1函数依赖,(2)函数依赖与属性间的联系类型有关在一个关系模式中,如果属性X与Y有1:1联系时,则存在函数依赖XY,YX,即XY。例如,当学生没有重名时,SNOSN。如果属性X与Y有m:1的联系时,则只存在函数依赖XY。例如,SNO与AGE,DEPT之间均为m:1联系,所以有SNOAGE,SNODEPT。如果属性X与Y有m:n的联系时,则X与Y之间不存在任何函数依赖关系。例如,一个学生可以选修多门课程,一门课程又可以为多个学生选修,所以SNO与CNO之间不存在函数依赖关系。,4.2.1函数依赖,(3)函数依赖的语义范畴的概念我们只能根据语义来确定一个函数依赖,而不能按照其形式化定义来证明一个函数依赖是否成立。(4)函数依赖关系的存在与时间无关(5)函数依赖可以保证关系分解的无损连接性函数依赖的基本性质(1)投影性根据平凡的函数依赖的定义可知,一组属性函数决定它的所以子集。例如,在关系SDC中,(SNO,CNO)SNO和(SNO,CNO)CNO。说明:投影性产生的是平凡的函数依赖,需要时也能使用的。,4.2.1函数依赖,(2)扩张性若XY且WZ,则(X,W)(Y,Z)。例如,SNO(SN,AGE),DEPTMN,则有(SNO,DEPT)(SN,AGE,MN)。说明:扩张性实现了两函数依赖决定因素与被决定因素的分别合并作用。(3)合并性若XY且XZ则必有X(Y,Z)。例如,在关系SDC中,SNO(SN,AGE),SNODEPT,则有SNO(SN,AGE,DEPT)。说明:决定因素相同的两函数依赖被决定因素的可以合并。,4.2.1函数依赖,(4)分解性若X(Y,Z),则XY且XZ。很显然,分解性为合并性的逆过程。说明:决定因素能决定全部,当然也能决定全部中的部分。由合并性和分解性,很容易得到以下事实:XA1,A2,,An成立的充分必要条件是XAi(i=1,2,n)成立。,4.2.1函数依赖,3完全/部分函数依赖和传递/非传递函数依赖定义4.2设有关系模式R(U),U是属性全集,X和Y是U的子集,XY,并且对于X的任何一个真子集X,都有XY,则称Y对X完全函数依赖(FullFunctionalDependency),记作XfY。如果对X的某个真子集X,有XY,则称Y对X部分函数依赖(PartialFunctionalDependency),记作XpY,4.2.1函数依赖,定义4.3设有关系模式R(U),U是属性全集,X,Y,Z是U的子集,若XY,但YX,而YZ,(YX)则称Z对X传递函数依赖(TransitiveFunctionalDependency),记作:XtZ注意:如果有YX,则XY,这时称Z对X直接函数依赖,而不是传递函数依赖。综上所述,函数依赖可以有不同的分类,即有如下之分:平凡的函数依赖与非平凡的函数依赖;完全函数依赖与部分函数依赖;传递函数依赖与非传递函数依赖(即直接函数依赖),这些是比较重要的概念,它们将在关系模式的规范化进程中作为准则的主要内容而被使用到。,4.2.2码,定义4.4设K为R(U,F)中的属性或属性集合,若KfU,则K为R的候选码(或候选关键字或候选键)(Candidatekey)。若候选码多于一个,则选定其中的一个为主码(或称主键,Primarykey).包含在任何一个候选码中的属性,叫做主属性(Primeattribute)。不包含在任何候选码中的属性称为非主属性(Nonprimeattribute)或非码属性(Non-keyattribute)。在最简单的情况,单个属性是码。最极端的情况,整个属性组U是码,称为全码(All-key)。,4.2.2码,已知关系模式R(U,F),如何来找出R的所有候选键呢?方法的步骤为:1、查看函数依赖集F中的每个形如XiYi的(i=1,n)函数依赖关系。看哪些属性在所有Yi(i=1,n)中没有出现过,设没出现过的属性集为P(P=U-Y1-Y2-Yn)。则当P=(表示空集)时,转4;当P时,转2。2、根据候选键的定义,候选键中应必含P(因为没有其它属性能决定P)。考察P,若有PfU成立,则P为候选键,并且候选键只有一个P(考虑一下为什么呢?),转5结束;若PfU不成立,则转3。,4.2.2码,3、P可以分别与U-P中的每一个属性合并,形成P1,P2,Pm。再分别判断PjfU(j=1,m)是否成立?能成立则找到了一个候选键,没有则放弃。合并一个属性若不能找到或不能找全候选键,可进一步考虑P与U-P中的两个(或三个,四个,)属性的所有组合分别进行合并,继续判断分别合并后的各属性组对U的完全函数决定情况;如此直到找出R的所有候选键为止。转5结束。(需要提醒的是:如若属性组K已有KfU,则完全不必去考察含K的其它属性组合了,显然它们都不可能再是候选键了)。,4.2.2码,4、若P=,则可以先考察XiYi(i=1,n)中的单个Xi,判断是否有XifU?若成立则Xi为候选键。剩下不是候选键的Xi,可以考察它们两个或多个的组合,查看其是否能完全函数决定U,从而找出其它还有可能的候选键。转5结束。5、本方法结束。定义4.5关系模式R中属性或属性组X并非R的主码,但X是另外一个关系模式S的主码,则称X是R的外部码或外部关系键(ForeignKey),也称外码。,4.2.3范式,规范化的基本思想是消除关系模式中的数据冗余,消除数据依赖中的不合适的部分,解决数据插入、删除与修改时发生的异常现象。这就要求关系数据库设计出来的关系模式要满足一定的条件。我们把关系数据库的规范化过程中为不同程度的规范化要求设立的不同的标准或准则称为范式(NormalForm)。满足最低要求的叫第一范式,简称1NF。当把某范式看成是满足该范式的所有关系模式的集合时,各个范式之间的集合关系可以表示为:一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。,4.2.4第一范式,第一范式(FirstNormalForm)是最基本的规范化形式,即关系中每个属性都是不可再分的简单项。定义4.6如果关系模式R所有的属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式,简称1NF,记作R1NF。在关系数据库系统中只讨论规范化的关系,凡是非规范化的关系模式必须转化成规范化的关系。在非规范化的关系中去掉组合项就能转化成规范化的关系。每个规范化的关系都是属于1NF。,4.2.5第二范式,1第二范式的定义定义4.7如果关系模式R1NF,R(U,F)中的所有非主属性都完全函数依赖于任意一个候选关键字,则称关系R是属于第二范式(SecondNormalForm),简称2NF,记作R2NF。从定义可知,满足第二范式的关系模式R中,不可能有某非主属性对某候选关键字存在部分函数依赖.分析SDC关系模式,它的候选码是(sno,cno),非主属性(sn,age,dept,mn,score)(Sno,cno)fscore(Sno,cno)psn(Snofsn)(Sno,cno)page(Sno,cno)pdept(Sno,cno)pmn所以该关系模式不属于第二范式,4.2.5第二范式,22NF的规范化2NF规范化是指把1NF关系模式通过投影分解,消除非主属性对候选关键字的部分函数依赖,转换成2NF关系模式的集合的过程。注意:如果R的候选关键字均为单属性,或R的全体属性均为主属性,则R2NF。将SDC关系模式分解成连个关系模式SD(sno,sn,sge,dept,mn)描述学生实体Sc(sno,cno,score)描述学生与课程的联系,4.2.5第二范式,规范化结果SD(sno,sn,sge,dept,mn)Sc(sno,cno,score),规范化前总字节数=(5+8+4+8+8+3+4)*9=360B规范化后总字节数=(5+8+4+8+8)*3+(5+3+4)*9=99+108=207B,4.2.5第二范式,异常问题缓解数据冗余(减轻,但仍存在)-系名和系负责人重复存储3次,sc中课程号重复存储3次,学号重复3次更新异常(减轻,但仍存在)-修改计算机系负责人仍要修改3次插入异常(减轻,但仍存在)-计算机系成立,没有招生,无法插入(未解决)-招生完毕,学生尚未选修课程,可以插入学生基本信息表删除异常(减轻,但仍存在)-取消选修,未删除学生信息-删除系中学生,仍然活导致系的信息丢失。(未解决),4.2.6第三范式,1第三范式的定义定义4.8如果关系模式R2NF,R(U,F)中所有非主属性对任何候选关键字都不存在传递函数依赖,则称R是属于第三范式(ThirdNormalForm),简称3NF,记作R3NF。第三范式具有如下性质:(1)如果R3NF,则R也是2NF。(2)如果R2NF,则R不一定是3NF。,4.2.6第三范式,2NF的关系模式解决了1NF中存在的一些问题,但2NF的关系模式SDC在进行数据操作时,仍然存在下面一些问题:1.数据冗余2.插入异常3.删除异常4.修改异常之所以存在这些问题,是由于在SD中存在着非主属性对候选关键字的传递依赖。消除这种依赖就转换成了3NF。23NF的规范化3NF规范化是指把2NF关系模式通过投影分解,消除非主属对候选关键字的传递函数依赖,而转换成3NF关系模式集合的过程。方法:将起传递关系作用函数关系中的主属性(决定方)和非主属性取出单独构成一个关系模式,再将它的决定方和关系式中余下的属性,加上主码,构成另外一个模式。,4.2.6第三范式,对SD关系进行规范化由于只有系负责人(mn)传递函数依赖于sno(snodept,deptmn)故分解得到D(dept,mn)S(sno,sn,age,dept),4.2.6第三范式,异常问题缓解数据冗余降低-规范前学生情况总字节数(5+8+4+8+8)*3=99B-规范后学生+系总字节数(5+8+4+8)*3+(8+8)=91B更新异常不再-修改计算机系负责人只修改条记录即可插入异常不再-计算机系成立可插入系,不需要招生。删除异常不再-删除系中学生,系的信息不会丢失。,进一步优化,将作为外码的字段所占空间减少,即减少重复项的空间占用。例:将系名用系号表示(2B),优化前总字节数91B优化后总字节数=(5+8+4+2)*3+(2+8+8)=57+18=75B,4.2.7BC范式,1、存在问题的3NF示例例43设有关系模式SCS(SNO,SN,CNO,SCORE)假设不重名候选码?(SNO,CNO)和(SN,CNO)SCS属于第三范式?函数依赖关系图?存在的问题?数据冗余较大,修改异常原因?存在主属性对候选码的部分函数依赖解决办法?消除主属性对候选码的部分函数依赖,4.2.7BC范式,1BC范式的定义定义4.9如果关系模式R1NF,且所有的函数依赖XY(Y不包含于X,即YX),决定因素X都包含了R的一个候选码,则称R属于BC范式(Boyce-CoddNormalForm),记作RBCNF。由BCNF的定义可以得到以下结论,一个满足BCNF的关系模式有:(1)所有非主属性对每一个候选码都是完全函数依赖。(2)所有的主属性对每一个不包含它的候选码都是完全函数依赖。(非平凡的函数依赖)(3)没有任何属性完全函数依赖于非码的任何一组属性。,4.2.7BC范式,BCNF规范化实例设有关系模式STK(S,T,K),S表示学生,T表示教师,K表示课程。假设每一位教师只讲授一门课程;每门课程由多个教师讲授;某一学生选定某门课程,就对应一个确定的教师。STK的函数依赖是:(S,K)T,(S,T)K,TK候选码:(S,K)和(S,T)且两个候选码有交集s关系中的所有属性都是主属性?STK属于第三范式(完美吗?)STK不属于BCNF范式(TK,T是决定因素,而T不包含候选码)STK的问题:1)插入异常:-新生入校,未选修课程,不能插入(K是主属性不能为空)-新开的课,还未有学生选修,不能插入?,4.2.7BC范式,2)删除异常-选修过课程的学生全部毕业,学生信息要被删除,相对应教师和课程信息也被删除。造成教师和课程信息丢失。3)数据冗余大-如一个教师只上一门课,但所有选修该课程的学生都要反复记录这个信息。4)修改复杂-课程名改,所有选修过该课程的学生所在元组都要改。,4.2.7BC范式,改进将属于第三范式的STK关系采用投影分解法分为两个关系,STK分解为ST(S,T)其中S是码STTK(T,K)其中T是码TK实际上这一过程消除了原有的主属性传递函数依赖于码和部分函数依赖于码。(前提是一个教师只教授一门课,所以不存在一个学生对应两个教师的情形,否则一个教师就要上两门以上的课程了。),4.2.7BC范式,缓解:1)ST关系中可以存储未选修课程的学生,TK关系可以存储未有学生选修的课程插入异常缓解2)选修过某门课程的学生全部毕业,只会删除ST中相应的元组不影响TK中教师开课的信息删除异常缓解3)每个教师开设课程信息只在TK中存储一次降低冗余4)选课或改名,只在TK中修改一个元组简化修改,4.2.7BC范式,3NF与BCNF关系1)如果关系模式R属于BCNF,则必属于3NF2)如果关系模式R属于3NF,且只有一个候选码,则R一定属于BCNF3)如果关系模式R属于3NF,R的候选码多于一个,但每个候选码只包含一个属性,则R一定属于BCNF3)如果关系模式R属于3NF,R的候选码多于一个,并且候选码包含多个属性时,则R可能不是BCNF如:STK关系,4.2.7BC范式,考察关系S(sno,sn,sex,age,dept)因为sn允许重名,故只有一个码sno,所以S属于BCNF。考察关系C(cno,cname,cpno,credit)因为cname不允许重名,故cno和cname都是码,但cno和cname都是单属性,不存在主属性的部分函数依赖和传递函数依赖所以C属于BCNF考察关系SC(sno,cno,score),(sno,cno)是码且是唯一的码,所以SC属于BCNF事实证明:只有两个属性的关系模式一定是BCNF,4.2.8多值依赖与4NF,属于BCNF的关系模式函数依赖:一个完美的关系模式多值依赖例如:假设学校中一门课程可由多名教师教授,教学中他们使用相同的一套参考书,这样可用表1非规范化的关系来表示课程C、教师T、参考书R间的关系。,4.2.8多值依赖与4NF,用二维表表示,4.2.8多值依赖与4NF,规范后的关系模式CTR,只有唯一的一个函数依赖(C,T,R)U,所以该关系模式的码是全码,因而该关系模式属于BCNFCTR存在的问题:1)数据冗余课程、教师、参考书都被多次存储2)插入异常当某一课程增加一名任课教师,有多少参考书就必须插入几条元组。例如:计算数学增加一个任课教师王刚,需要插入两个元组。(计算数学,王刚,数学分析)(计算数学,王刚,微分方程)3)删除异常,若要删除某一门课程的参考书,与该参考书有关的元组都要被删除。,4.2.8多值依赖与4NF,4)修改操作复杂-某一门课要修改一本参考书,有几个教师任教就要修改几个元组。产生原因:参考书的取值和教师的取值是彼此毫无关系的,都只取决于课程名。,4.2.8多值依赖与4NF,前面所介绍的规范化都是建立在函数依赖的基础上,函数依赖表示的是关系模式中属性间的一对一或一对多的联系,但它并不能表示属性间多对多的关系,因而某些关系模式虽然已经规范到BCNF,仍然存在一些弊端,本节主要讨论属性间的多对多的联系即多值依赖问题,以及在多值依赖范畴内定义的第四范式。1.多值依赖(1)多值依赖的定义,4.2.8多值依赖与4NF,定义4.10设有关系模式R(U),U是属性全集,X,Y,Z是属性集U的子集,且Z=U-X-Y,如果对于R的任一关系,对于X的一个确定值,存在Y的一组值与之对应,且Y的这组值仅仅决定于X的值而与Z值无关,此时称Y多值依赖于X,或X多值决定Y,记作:XY。在多值依赖中,若XY且Z=U-X-Y,则称XY是非平凡的多值依赖,否则称为平凡的多值依赖。(是非平凡的多值依赖涉及到所有属性),4.2.8多值依赖与4NF,如:在关系模式CTR中,对于某一C、R属性值组合(数据库系统概论,数据库系统)来说,有一组T值萨师煊,王珊,这组值仅仅决定与课程C上的值(数据库系统概论)。也就是说,对于另一个C、R属性值组合(数据库系统概论,SQLServer2000),它对应的一组T值仍是萨师煊,王珊,尽管这时参考书R的值已经改变了。因此T多值依赖于C,即:CT。,4.2.8多值依赖与4NF,下面是多值依赖的另一形式化定义:设有关系模式R(U),U是属性全集,X、Y、Z是属性集合U的子集,且Z=U-X-Y,r是关系模式R的任一关系,t,s是r的任意两个元组,如果tX=sX,r中必有的两个元组u、v存在,使得:sx=tX=uX=vXuY=tY且uZ=sZvY=sY且vZ=tZ则称X多值决定Y或Y多值依赖于X。(2)多值依赖与函数依赖的区别,4.2.8多值依赖与4NF,在关系模式R中,函数依赖XY的有效性仅仅决定与X、Y这两个属性集,不涉及第三个属性集,而在多值依赖中,XY在属性集U(U=X+Y+Z)上是否成立,不仅要检查属性集X、Y上的值,而且要检查属性集U的其余属性Z上的值。因此,如果XY在属性集W(WU)上成立,而在属性集U上不一定成立,所以,多值依赖的有效性与属性集的范围有关。如果在R(U)上有XY,在属性集W(W包含U)上也成立,则称XY为R(U)的嵌入型多值依赖。如果在关系模式R上存在函数依赖XY,则任何Y包含于Y均有XY成立,而多值依赖XY在R上成立,但不能断言对于任何Y包含于Y有XY成立。,4.2.8多值依赖与4NF,()多值依赖的性质多值依赖具有对称性。即若XY,则XZ,其中ZU-X-Y。多值依赖具有传递性。即若XY,YZ,则XZ-Y。函数依赖可看作是多值依赖的特殊情况。即若XY,则XY。函数依赖合并性。即若XY,XZ,则XYZ。多值依赖分解性。即若XY,XZ,则X(YZ),XY-Z,XZ-Y均成立。这说明,如果两个相交的属性子集均多值依赖于另一个属性子集,则这两个属性子集因相交而分割成的三部分也都多值依赖于该属性子集。,4.2.8多值依赖与4NF,2.第四范式(4NF)(1)第四范式(4NF)的定义定义4.11设有一关系模式R(U),U是其属性全集,X、Y是U的子集,D是R上的数据依赖集。如果对于任一多值依赖XY,此多值依赖是平凡的,或者X包含了R的一个候选码,则称关系模式R是第四范式的,记作:R4NF。经过上面分析可以得知:一个BCNF的关系模式不一定是4NF,而4NF的关系模式必定是BCNF的关系模式,即4NF是BCNF的推广,4NF范式的定义涵盖了BCNF范式的一定。,4.2.8多值依赖与4NF,(2)4NF的分解把一个关系模式分解为4NF的方法与分解为BCNF的方法类似,就是当把一个关系模式利用投影的方法消去非平凡且非函数依赖的多值依赖,并具有无损连接性。,4.2.8多值依赖与4NF,数据依赖和多值依赖是两种最重要的数据依赖。如果只考虑函数依赖,则属于BCNF的关系模式的规范化程度已经是最高了。如果考虑多值依赖,则属于4NF的关系模式化程度是最高的。事实上,数据依赖中除了函数依赖和多值依赖之外,还有其他的数据依赖如连接依赖。函数依赖是多值依赖的一种特殊情况,而多值依赖实际上又是连接依赖的一种特殊情况。但连接依赖不像函数依赖和多值依赖那样可由语义直接导出,而是在关系的连接运算时才反映出来。存在连接依赖的关系模式仍可能遇到数据冗余及插入、修改、删除异常问题。如果消除了属于4NF的关系中存在的连接依赖,则可以进一步达到5NF的关系模式。本书不再讨论连接依赖和5NF这方面的内容.,4.2.9规范化小结,规范化就是对原关系进行投影,消除决定属性不是候选码的任何函数依赖。一个关系只要其分量都是不可分的数据项,就可称作规范化的关系,也称作1NF。消除1NF关系中非主属性对码的部分函数依赖,得到2NF;消除2NF关系中非主属性对码的传递函数依赖,得到3NF;消除3NF关系中主属性对码的部分函数依赖和传递函数依赖,便可得到一组BCNF关系规范化目的是使结构更合理,消除异常,使数据冗余尽量小,便于插入、删除和修改。原则是遵从概念单一化“一事一地”原则,即一个关系模式描述一个实体或实体间的一种联系。,4.2.9规范化小结,规范的实质就是概念的单一化。方法是将关系模式投影分解成两个或两个以上的关系模式。要求:分解后的关系模式集合应当与原关系模式“等价”,即经过自然联接可以恢复原关系而不丢失信息,并保持属性间合理的联系。注意:一个关系模式的不同分解可以得到不同关系模式集合,也就是说分解方法不是唯一的。最小冗余的要求必须以分解后的数据库能够表达原来数据库所有信息为前提来实现。其根本目标是节省存储空间,避免数据不一致性,提高对关系的操作效率,同时满足应用需求。,4.3数据依赖的公理系统,数据依赖的公理系统是模式分解算法的理论基础,下面先讨论函数依赖的一个有效而完备的公理系统Armstrong公理系统。定义4.12对于满足一组函数依赖F的关系模式R(U,F),其任何一个关系r,若函数依赖XY都成立(即r中任意两元组t,s,若tX=sX,则tY=sY),则称F逻辑蕴涵XY。Armstrong公理系统设U为属性集总体,F是U上的一组函数依赖,于是有关系模式R(U,F)。对R(U,F)来说有以下的推理规则:,4.3数据依赖的公理系统,lA1自反律(Reflexivity):若YXU,则XY为F所蕴含。lA2增广律(Augmentation):若XY为F所蕴含,且ZU,则XZYZ为F所蕴含。lA3传递律(Transitivity):若XY及YZ为F所含,则XZ为F所蕴含。注意:由自反律所得到的函数依赖均是平凡的函数依赖,自反律的使用并不依赖于F。定理4.1Armstrong推理规则是正确的。下面从定义出发证明推理规则的正确性。,4.3数据依赖的公理系统,证:(1)YXU。对R(U,F)的任一关系r中的任意两个元组t,s:若tX=sX,由于YX,有tY=sY,所以XY成立,自反律得证。(2)XY为F所蕴含,且ZU。设R(U,F)的任一关系r中的任意两个元组t,s:若tXZ=sXZ,则有tX=sX和tZ=sZ;由XY,于是有tY=sY,所以tYZ=sYZ,所以XZYZ为F所蕴含,增广律得证。(3)设XY及YZ为F所蕴含。设R(U,F)的任一关系r中的任意两个元组t,s:若tX=sX,由XY,有tY=sY;再由YZ,有tZ=sZ,所以XZ为F所蕴含,传递律得证。,4.3数据依赖的公理系统,根据A1,A2,A3这三条推理规则可以得到下面很有用的推理规则:合并规则:由XY,XZ,XYZ。伪传递规则:由XY,WYZ,有XWZ。分解规则:由XY及ZY,有XZ。根据合并规则和分解规则,很容易得到这样一个重要事实:引理4.1X成立的充分必要条件是X成立(i=1,2,k)。定义4.13在关系模式R(U,F)中为F所蕴含的函数依赖的全体叫做F的闭包,记为:F+,4.3数据依赖的公理系统,人们把自反律,传递律和增广律称为Armstrong公理系统。Armstrong公理系统是有效的、完备的。Armstrong公理的有效性指的是:由F出发根据Armstrong公理推导出来的每一个函数依赖一定在F+中;完备性指的是F+中的每一个函数依赖,必定可以由F出发根据Armstrong公理推导出来。要证明完备性,就首先要解决如何判定一个函数依赖是否属于由F根据Armstrong公理推导出来的函数依赖集合。当然,如果能求出这个集合,问题就解决了。但不幸的是,这是个NP完全问题。比如从F=X,X出发,至少可以推倒出个不同的函数依赖,为此引出了下面的概念:,4.3数据依赖的公理系统,定义4.14设F为属性集U上的一组函数依赖,X包含于U,Xf+=A|XA能由F根据Armstrong公理导出,Xf+成为属性集X关于函数依赖集F的闭包。由引理4.1容易得出:引理4.2设F为属性集U上的一组函数依赖,X,Y包含于U,XY能由F根据Armstrong公理导出的充分必要条件是Y包含于Xf+。于是,判定XY是否能由F根据Armstrong公理推导出的问题,就转化为求出Xf+的子集的问题。这个问题由算法4.1解决了。,由于本节内容为选学内容因此其它内容略,具体内容见书,4.3数据依赖的公理系统,4.4小结,本章讨论如何设计关系模式问题。关系模式设计有好与坏之分的,其设计好坏与数据冗余度和各种数据异常问题直接相关。本章在函数依赖、多值依赖的范畴内讨论了关系模式的规范化,在整个讨论过程中,只采用了两种关系运算投影和自然连接。关系模式在分解时应保持“等价”,有数据等价和语义等价两种,分别用无损分解和保持依赖两个特征来衡量。前者能保持泛关系在投影联接以后仍能恢复回来,而后者能保证数据在投影或联接中其语义不会发生变化。,4.4小结,范式是衡量关系模式优劣的标准,范式表达了模式中数据依赖应满足的要求。要强调的是,规范化理论主要为数据库设计提供了理论的指南和参考工具,并不是关系模式规范化程度越高,实际应用该关系模式就越好,实际上必须结合应用环境和现实世界的具体情况合理地选择数据库模式的范式等级。本章最后还简介了模式分解相关的理论基础数据依赖的公理系统。,习题,一、选择题1、关系模式中数据依赖问题的存在,可能会导致库中数据插入异常,这是指()。A插入了不该插入的数据B数据插入后导致数据库处于不一致状态C该插入的数据不能实现插入D以上都不对2、若属性X函数依赖于属性Y时,则属性X与属性Y之间具有()的联系。A一对一B一对多C多对一D多对多3、关系模式中的候选键()。A有且仅有一个B必然有多个C可以有一或多个D以上都不对4、规范化的关系模式中,所有属性都必须是()。A相互关联的B互不相关的C不可分解的D长度可变的5、设关系模式RA,B,C,D,E,其上函数依赖集FABC,DCE,DB,则可导出的函数依赖是()。AADEBBCECDCABDDBA,6、设关系模式R属于第一范式,若在R中消除了部分函数依赖,则R至少属于()。A第一范式B第二范式C第三范式D第四范式7、若关系模式R中的属性都是主属性,则R至少属于()。A第三范式BBC范式C第四范式D第五范式8、下列关于函数依赖的叙述中,哪一个是不正确的。A由XY,XZ,有XYZB由XYZ,有XZ或XZC由XY,WYZ,有XWZD由XY及ZY,有XZ9、在关系模式R
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 控制技术综合试题及答案
- 技术开发试题及答案
- 首尔兼职面试经典题库:各类职位的求职策略
- 游戏开发面试实战:经典游戏架构面试题目及答案
- 学校水电安全知识培训课件
- 卓越职场面试技巧大全全系列题目及答案
- 国金证券面试题库精粹:精英之路的关键一步
- 红十字面试常见问题及答案解析
- 10000培训知识点课件
- 学校全员消防知识培训课件
- 应聘个人简历标准版范文
- 全面深化信息安全培训提高医护人员的保护意识与能力水平
- 2025年全球邮轮旅游的复苏与创新探讨
- 代买保险合同协议书范文
- 19《一只窝囊的大老虎》 公开课一等奖创新教学设计
- 宕渣施工专项方案
- 学校食堂保洁服务方案(技术标)
- 兼职音乐教师合同范例
- 《妊娠合并阑尾炎》课件
- 21、学生饮用奶食品安全应急预案
- 特立帕肽治疗骨质疏松性骨折中国专家共识(2024版)解读
评论
0/150
提交评论