资源描述
Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,Click to edit Master title style,Click to edit Master text styles,Second level,Third level,Fourth level,Fifth level,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,数据库系统概论,第四章 关系数据理论,1,数据库系统概论之关系数据理论,第1页,第四章 关系数据理论,数据依赖,范式,关系模式规范化,*数据依赖公理系统,*模式分解,2,数据库系统概论之关系数据理论,第2页,对普通数据库逻辑设计,一样含有理论上意义,引 言,数据库设计三个主要步骤:,概念设计,逻辑设计 物理设计,现,实,世,界,层次,网状,关系,概念模型,数据模型,物理,模型,文件、,索引等,关系数据库规范化理论是关系数据库逻辑设计理论基础,处理中心问题:怎样结构一个好数据模式,3,数据库系统概论之关系数据理论,第3页,引 言,关系数据库逻辑设计,针对详细问题,怎样结构一个适合于它数据模式,数据库逻辑设计工具关系数据库规范化理论,4,数据库系统概论之关系数据理论,第4页,4.1 数据依赖,一、关系模式,关系模式,用于定义关系结构框架,表示为,一个五元组,:R(U,D,DOM,F),其中:(1)关系名R,(2)一组属性名U,(3)属性组U中属性所来自域D,(4)属性到域映象集合DOM,(5),属性间数据依赖关系集合F,简化为三元组:,R(U,F),描述关系元,组语义,限定,组成关系各,元组必须满足,完整性约束,条件,5,数据库系统概论之关系数据理论,第5页,二、数据依赖对关系模式影响,数据依赖 经过一个关系中数据间值相等是否表达出来数据间相互关系。它是现实世界属性间相互联络抽象,是数据内在性质,是语义表达。,在各种类型数据依赖中,最主要是:,函数依赖(Functional Dependency 简记为FD),多值依赖(Multivalued Dependency 简记为MVD),函数依赖普遍存在于现实生活中,例:描述一个学生关系,S(Sno,SN,SD,SA),学生号确定后,姓名及所在系、年纪被唯一确定。,记作:Sno SN,Sno SD,Sno SA,6,数据库系统概论之关系数据理论,第6页,为何要讨论数据依赖?(1),例:建立一个描述学校数据库,包括对象:学生(Sno),系(Sdept)系主任(Mname),课程名(Cname)成绩(Grade),建立单一关系模式:,Student(U,F),U=Sno,Sdept,Mname,Cname,Grade,语义,:,一个系有若干学生,一个学生只属一个系,一个系只有一个系主任,一个学生可选修多门课,每门课有若干学生选修,学生选修一门课就有一个成绩,F=SnoSdept,SdeptMname,(Sno,Cname)Grade,在此关系模式中填入一部分详细数据,则可得到SCD关系模式实例,即一个教学管理数据库,如图4.1所表示,Sno,Mname,Sdept,Cname,Grade,7,数据库系统概论之关系数据理论,第7页,图4.1 关系SCD,SNO,SDEPT,MName,Cname,Grade,S1,计算机,刘伟,CS,90,S1,计算机,刘伟,IS,85,S2,信息,王平,MA,57,S2,信息,王平,DB,80,S2,信息,王平,DS,70,S2,信息,王平,MA,70,S3,信息,王平,CS,0,S3,信息,王平,IS,70,S3,信息,王平,OS,85,S4,自动化,刘伟,CS,93,8,数据库系统概论之关系数据理论,第8页,为何要讨论数据依赖?(2),Student(U,F),U=,Sno,,Sdept,Mname,,Cname,,Grade,F=Sno,Sdept,Sdept,Mname,(Sno,Cname),Grade,依据上述语义要求,并分析以上关系中数据,我们能够看出:(SNO,Cname,)属性组合能唯一标识一个元组,所以(SNO,Cname,)是该关系模式,主关系键,。但在进行数据库操作时,会出现以下几方面问题。,不是好模式,9,数据库系统概论之关系数据理论,第9页,1.数据冗余。,每个系名和系主任名字存放次数等于该系学生人数乘以每个学生选修课程门数,同时学生姓名、年纪也都要重复存放屡次,数据冗余度很大,浪费了存放空间。,2.插入异常。,假如某个新系没有招生,尚无学生时,则系名和系主任信息无法插入到数据库中。,因为在这个关系模式中,,(SNO,Cname)是主关系键。依据关系,实体完整性约束,主关系键值不能为空,而这时没有学生,SNO和,Cname均无值,所以不能进行插入操作。,另外,当某个学生还未选课,即Cname未知,实体完整性约束还要求,主关系键值不能部分为空,一样不能进行插入操作。,10,数据库系统概论之关系数据理论,第10页,3.删除异常。,某系学生全部毕业而没有招生时,删除全部学生统计则系名、系主任也随之删除,而这个系依然存在,在数据库中却无法找到该系信息。,另外,假如某个学生不再选修CS课程,本应该只删去CS,但CS是主关系键一部分,为确保实体完整性,必须将整个元组一起删掉,这么,相关该学生其它信息也随之丢失。,4.更新异常。,如某系更换系主任,则属于该系学生统计都要修改MN内容,稍有不慎,就有可能漏改一些统计,这就会造成数据不一致性,破坏了数据完整性。,11,数据库系统概论之关系数据理论,第11页,因为存在以上问题,我们说,SCD是一个不好关系模式。产生上述问题原因,直观地说,是因为关系中“包罗万象”,内容太杂了。,那么,怎样才能得到一个好关系模式呢?,12,数据库系统概论之关系数据理论,第12页,为何要讨论数据依赖?(3),引发异常原因,模式中存在一些“不良”数据依赖,处理方法(关系规范化),进行模式分解,将Student关系分解为三个关系,学生关系S(SNO,SDEPT,Sno Sdep),选课关系SC(SNO,CNO,Grade,(Sno,CNO)Grade),系关系D(Sdept,Mname,Sdept Mname),我们把关系模式SCD分解为下面三个结构简单关系模式,如图4.2所表示。,13,数据库系统概论之关系数据理论,第13页,SNO,SDEPT,S1,计算机,S2,信息,S3,信息,S4,自动化,S SC,SNO,Cname,Grade,S1,CS,90,S1,IS,85,S2,MA,57,S2,DB,80,S2,DS,70,S2,MA,70,S3,CS,S3,IS,70,S3,OS,85,S4,CS,93,D,SDEPT,MName,计算机,刘伟,信息,王平,自动化,刘伟,图4.2 分解后关系模式,14,数据库系统概论之关系数据理论,第14页,在以上三个关系模式中,实现了信息某种程度分离,,S中存放学生基本信息,与所选课程及系主任无关;,D中存放系相关信息,与学生无关;,SC中存放学生选课信息,而与所学生及系相关信息无关。,与SCD相比,分解为三个关系模式后,数据冗余度显著降低。,当新插入一个系时,只要在关系D中添加一条统计。,当某个学生还未选课,只要在关系S中添加一条学生统计,而与选课关系无关,这就防止了,插入异常,。,当一个系学生全部毕业时,只需在S中删除该系全部学生统计,而关系D中相关该系信息依然保留,从而不会引发,删除异常,。,同时,因为数据冗余度降低,数据没有重复存放,也不会引发,更新异常,。,15,数据库系统概论之关系数据理论,第15页,关系模式应满足基本要求,数据库中数据冗余应该尽可能少,关系数据库不能因为数据更新操作而引发数据不一致问题,插入数据时,不能产生插入异常现象,删除数据时,不能产生删除异常现象,数据库设计应考虑查询要求,数据组织应合理,16,数据库系统概论之关系数据理论,第16页,但要注意,一个好关系模式并不是在任何情况下都是最优,,比如查询某个学生选修课程名及所在系系主任时,要经过连接,而连接所需要系统开销非常大,所以要以实际设计目标出发进行设计,规范化理论 致力于处理关系模式中不适当数据依赖问题,即经过分解关系模式,消除不良数据依赖,结构好模式。,规范化又能够依据不一样要求而分成若干级别。,我们要设计关系模式中各属性是相互依赖、相互制约,这么才组成了一个结构严谨整体。,所以在设计关模式时,必须从语义上分析这些,依赖关系,。,数据库模式好坏和关系中各属性间依赖关系相关,所以,我们先讨论属性间依赖关系,然后再讨论关系规范化理论。,17,数据库系统概论之关系数据理论,第17页,三、相关概念,关系模式中各属性之间相互依赖、相互制约联络称为,数据依赖,。,数据依赖普通分为,函数依赖,、,多值依赖,和,连接依赖,。,其中,函数依赖,是最主要数据依赖。,函数依赖(Functional Dependency)是关系模式中属性之间一个,逻辑依赖关系,。,比如在上一节介绍关系模式SCD中,SNO与SN、AGE、DEPT之间都有一个依赖关系。,因为一个SNO只对应一个学生,而一个学生只能属于一个系,所以当SNO值确定之后,SN,AGE,DEPT值也随之被唯一确实定了。,这类似于变量之间,单值函数关系,。设单值函数Y=F(X),自变量X值能够决定一个唯一函数值Y。,在这里,我们说SNO决定函数(SN,AGE,DEPT),或者说(SN,AGE,DEPT)函数依赖于SNO。,18,数据库系统概论之关系数据理论,第18页,定义:,设R(U)是一个关系模式,U是 R上属性集合,X和 Y是U 子集。对于R(U)任意一个可能关系 r,假如 r 中不存在两个元组,它们在 X上属性值相同,而在 Y上属性值不一样,则称“X函数决定Y”或“Y 函数依赖于 X”,记作:,X Y,。,如:姓名,年纪 (必须在没有重名条件下成立),记号:,若XY,则X 称作决定原因;,若XY,且YX,则记作,XY,;,若Y不函数依赖于X,则记作,XY,。,1、函数依赖,19,数据库系统概论之关系数据理论,第19页,说明,1.全部关系实例均要满足,2.语义范畴概念,只能根据语义确定。,我们只能根据语义来确定一个函数依赖,而不能按照其形式化定义来证明一个函数依赖是否成立(不能用数学方法证明)。,例如,对于关系模式S,当学生不存在重名情况下,可以得到:,SNAGE,SNDEPT,这种函数依赖关系,必须是在没有重名学生条件下才成立,否则就不存在函数依赖了。,所以函数依赖反映了一种语义完整性约束。,3.数据库设计者可以对现实世界作强制规定,20,数据库系统概论之关系数据理论,第20页,2,.,平凡函数依赖和非平凡函数依赖,定义,:在关系模式 R(U)中,对U 子集 X 和 Y,,假如XY,但Y,X,则称XY是非平凡函数依赖;,假如XY,且Y,X,则称 XY 是平凡函数依赖。,注意;若不尤其申明,总是讨论非平凡函数依赖。,例:在关系SC(Sno,Cno,Grade)中,,非平凡函数依赖:(Sno,Cno)Grade,平凡函数依赖:(Sno,Cno)Sno,(Sno,Cno)Cno,21,数据库系统概论之关系数据理论,第21页,3,.,完全函数依赖和部分函数依赖,定义,:在关系模式 R(U)中,对U 子集X 和 Y,,假如 XY,且对于X 任何一个真子集 X,都有XY,则称,Y 完全函数依赖于 X,,记作,XY,。,假如 XY,但 Y 不完全函数依赖于 X,则称 Y 部分函数依赖于 X,记作 XY。,f,P,22,数据库系统概论之关系数据理论,第22页,例:在关系S(Sno,SN,SD,SA)中:,Sno SN(若不重名),Sno SD,Sno SA,其中Sno,为决定原因,都是非平凡函数依赖,在关系SC(Sno,Cno,G)中:,Sno G Cno G,(Sno,Cno)G (完全函数依赖),其中(Sno,Cno),为决定原因,而SNOAGE,所以(SNO,CNO)AGE。,f,p,23,数据库系统概论之关系数据理论,第23页,说明:,只有当决定原因是组合属性时,讨论部分函数依赖才有意义,,当决定原因是单属性时,只能是完全函数依赖。,比如,在关系模式S(SNO,SN,AGE,DEPT),决定原因为单属性SNO,有SNO(SN,AGE,DEPT),不存在部分函数依赖。,24,数据库系统概论之关系数据理论,第24页,4,.,传递函数依赖,定义,:在关系模式R(U)中,对U 子集 X、Y 和 Z,,假如XY,YZ,且Y,X,YX,则称Z传递函数依赖于X。,注意;此处必须加条件Y,X,不然 Z直接函数依赖于X。,例:在关系Std(Sno,Sdept,Mname)中:,由 Sno Sdept,Sdept Mname,且 Sdept Sno,推出 Sno Mname,传递,25,数据库系统概论之关系数据理论,第25页,总而言之,函数依赖分为,完全函数依赖,、,部分函数依赖,和,传递函数依赖,三类,它们是规范化理论依据和规范化程度准则,下面我们将以介绍这些概念为基础,进行数据库,规范设计,。,26,数据库系统概论之关系数据理论,第26页,5,.,码(形式化定义),定义,:设K为关系R(U,F)中属性或属性组,,若 K U,则K称为R一个,候选码,。,若关系模式R有多个候选码,则选其中一个作为,主码,。,全码,:整个属性组 U 组成码称为全码(All-Key)。,外码,:R属性或属性组不是 R 码,却是另一关系模式码,称为R外码(外部码)。,主属性,:U 中包含在任一候选码中属性;,非主属性,:U 中除主属性以外其它属性。,f,27,数据库系统概论之关系数据理论,第27页,例1,关系模式S(,Sno,Sdept,Sage),单个属性Sno是码,,SC(,Sno,Cno,,Grade)中,(Sno,Cno)是码,例2,关系模式R(P,W,A),P:演奏者 W:作品 A:听众,一个演奏者能够演奏多个作品,某一作品可被多个演奏者演奏,听众能够观赏不一样演奏者不一样作品,码为(P,W,A),即All-Key,28,数据库系统概论之关系数据理论,第28页,例3,如在SC(,Sno,Cno,,Grade)中,Sno不是码,但Sno是关系模式S(,Sno,,Sdept,Sage)码,则Sno是关系模式SC外部码,主码与外部码一起提供了表示关系间联络伎俩,29,数据库系统概论之关系数据理论,第29页,4、2 范式,规范化,基本思想,是消除关系模式中数据冗余,消除数据依赖中不适当部分,处理数据插入、删除时发生异常现象。,这就要求关系数据库设计出来关系模式要满足一定条件。,我们把关系数据库规范化过程中为不一样程度规范化要求设置不一样标准称为,范式,(Normal Form)。,因为规范化程度不一样,就产生了,不一样范式,。,满足最基本规范化要求关系模式叫,第一范式,,,在第一范式中深入满足一些要求为,第二范式,,,以这类推就产生了,第三范式,等概念。,每种范式都要求了一些限制约束条件。,30,数据库系统概论之关系数据理论,第30页,第一范式(1NF),定义,:,假如一个关系模式R中全部属性都是不可分最小数据项,则 R,1NF。,注意:,1NF是对关系模式一个最起码要求,不满足1NF数据库模式不能称为关系数据库,但满足1NF关系模式不一定是好关系模式,例:,SLC(,Sno,,Sdept,Sloc,,Cno,,Grade),1NF,学生住处,学生成绩,31,数据库系统概论之关系数据理论,第31页,例:关系模式SLC,SLC(,Sno,,Sdept,Sloc,,Cno,,Grade),1NF,SnoSdept,SnoSloc,SdeptSloc(,每个系只住在一处),(Sno,Cno)Grade,(Sno,Cno)Sdept,(Sno,Cno)Sloc,其中:(Sno,Cno)为主码,非主属性 Sdept,Sloc 部分依赖于码,Sno,Sloc,Sdept,Cno,Grade,f,p,p,存在问题,插入异常;删除异常;修改复杂;数据冗余。,32,数据库系统概论之关系数据理论,第32页,第二范式(2NF),定义,:,假如关系模式R,1NF,且R中每个非主属性完全函数依赖于码,则R 2NF。,对SLC关系模式:,SLC(,Sno,,Sdept,Sloc,,Cno,,Grade),消除部分函数依赖,把SLC分解为两个关系模式:,SC,(,Sno,Cno,,Grade),2NF,SL,(,Sno,,Sdept,Sloc),2NF,Sno,Sloc,Sdept,Cno,Grade,Sno,33,数据库系统概论之关系数据理论,第33页,又如下例:,一个教师可以讲授多门课程,一门课程可认为多个教师讲授,,一样一个学生可以选听多门课程,一门课程可认为多个学生选听,,(T,C,S)三个属性组合是关系键,T,C,S都是主属性,而无非主属性,所以也就不可能存在非主属性对关系键部分函数依赖,TCS2NF。,经以上分析,可以得到两个结论:,1从1NF关系中消除非主属性对关系键部分函数依赖,则可得到2NF关系。,2如果R关系键为单属性,或R全体属性均为主属性,则R2NF。,34,数据库系统概论之关系数据理论,第34页,2NF规范化,2NF规范化是指把1NF关系模式经过投影分解转换成2NF关系模式集合。,分解时遵照基本标准就是,“一事一地”,,让一个关系只描述一个实体或者实体间联络。假如多于一个实体或联络,则进行投影分解。,35,数据库系统概论之关系数据理论,第35页,2NF缺点,2NF关系模式处理了1NF中存在一些问题,2NF规范化程度比1NF前进了一步,但2NF关系模式在进行数据操作时,依然存在着一些问题:,1数据冗余。,每个系名和系主任名字存放次数等于该系学生人数。,2插入异常。,当一个新系没有招生时,相关该系信息无法插入。,3删除异常。,某系学生全部毕业而没有招生时,删除全部学生统计也随之删除了该系相关信息。,4更新异常。,更换系主任时,仍需改动较多学生统计。,之所以存在这些问题,是因为存在着非主属性对主码传递依赖。,分析SCD中函数依赖关系,SNOSDEPT,SDEPTSLOC,非主属性SLOC对主码SNO传递依赖。,为此,对关系模式SCD还需深入简化,消除这种传递依赖,得到3NF。,36,数据库系统概论之关系数据理论,第36页,第三范式(3NF),定义,:,假如关系模式R,2NF,且R中每个非主属性都不传递依赖于码,则R 3NF。,对SL关系模式:,SL(,Sno,,Sdept,Sloc),2NF,存在问题:插入异常、删除异常、修改复杂、数据冗余,分析:SnoSdept,SdeptSloc,且 SdeptSno 则 Sno Sloc,消除传递函数依赖,把SL分解为两个关系模式:,SD,(,Sno,,Sdept,),3NF,DL,(,Sdept,,Sloc),3NF,传递,37,数据库系统概论之关系数据理论,第37页,第三范式含有以下性质:,1假如,R,3NF,则R也是2NF。,证实:3NF另一个等价描述是:对于关系模式R,不存在以下条件函数依赖,XY(Y X),YZ,其中X是键属性,Y是任意属性组,Z是非主属性,Z Y。在此定义下,令Y X,Y是X真子集,则以上条件XY,YZ就变成了非主属性对键X部分函数依赖,X Z。但因为3NF中不存在这么函数依赖,所以R中不可能存在非主属性对键X部分函数依赖,R必定是2NF,。,38,数据库系统概论之关系数据理论,第38页,2假如R,2NF,则R不一定是3NF。,比如,我们前面由关系模式SCD分解而得到SD和SC都为2NF,其中,SC,3NF,但在SD中存在着非主属性MN对主键SNO传递依赖,SD3NF。对于SD,应该深入进行分解,使其转换成3NF。,3NF规范化,3NF规范化,是指把2NF关系模式经过投影分解转换成3NF关系模式集合。,和2NF规范化时遵照标准相同,即,“一事一地”,,让一个关系只描述一个实体或者实体间联络。,39,数据库系统概论之关系数据理论,第39页,综合题例,对SLC关系模式:,SLC(,Sno,,Sdept,Sloc,,Cno,,Grade),1NF,为消除异常分解为三个模式:,SC,(,Sno,Cno,,Grade),2NF 3NF,(Sno,Cno)Grade,SD,(,Sno,,Sdept,),3NF,SnoSdept,DL,(,Sdept,,Sloc),3NF,SdeptSloc,不存在非主属性对码部分依赖和传递依赖,处理了四个异常问题。即:,f,40,数据库系统概论之关系数据理论,第40页,1数据冗余降低。系主任名字存放次数与该系学生人数无关,只在关系D中存放一次。,2不存在插入异常。当一个新系没有学生时,该系信息能够直接插入到关系D中,而与学生关系S无关。,3不存在删除异常。要删除某系全部学生而依然保留该系相关信息时,能够只删除学生关系S中相关学生统计,而不影响系关系D中数据。,4不存在更新异常。更换系主任时,只需修改关系D中一个对应元组MN属性值,从而不会出现数据不一致现象。,41,数据库系统概论之关系数据理论,第41页,不过,3NF只限制了非主属性对键依赖关系,而没有限制主属性对键依赖关系。,假如发生了这种依赖,仍有可能存在数据冗余、插入异常、删除异常和修改异常。,这时,则需对3NF深入规范化,消除主属性对键依赖关系,为了处理这种问题,Boyce与Codd共同提出了一个新范式定义,这就是Boyce-Codd范式,通常简称BCNF或BC范式。它填补了3NF不足。,42,数据库系统概论之关系数据理论,第42页,BC范式(BCNF),定义,:,关系模式R(U,F),1NF,若对R每个函数依赖XY(Y X),有X 必含候选码,则R BCNF。,换句话说,在关系模式R中,若每个决定原因都包含候选码,则 R,BCNF。,推论:全部非主属性都直接、完全函数依赖于候选码,任一主属性对不包含其候选码必须直接、完全函数依赖,没有任何属性完全函数依赖于非码任何一组属性,43,数据库系统概论之关系数据理论,第43页,例1:,建立一个描述仓库管理关系模式,管理(,仓库号,设备号,,职员号),3NF,语义:一个仓库有若干职员,一个职员仅在一个仓库工作,一个仓库可存放各种设备,一个设备可放在多个仓库,一个仓库一个设备仅由一名职员保管,一个职员能够保管各种设备,函数依赖:职员号仓库号,(仓库号,设备号)职员号,仓库号,设备号,职员号,分析:,存在异常现象,起因于主属性对非主属性函数依赖,44,数据库系统概论之关系数据理论,第44页,例2:关于学生(S)-教师(T)-课程(C),关系模式,STC(S,T,C),3NF,语义:每个教师只教一门课程,每门课程有若干教师教,某一学生选定某门课程就对应于一个确定教师,函数依赖:T C (S,C)T (S,T)C,候选码:(S,C),和(S,T),C,分析:存在异常现象,起因于主属性对码部分和传递函数依赖,S,T,T,S,C,45,数据库系统概论之关系数据理论,第45页,BC范式(BCNF),两个实例:,管理(,仓库号,设备号,,职员号),3NF BCNF,存在主属性对非主属性函数依赖(职员号仓库号),STC(S,T,C),3NF BCNF,存在,主属性对码部分和传递函数依赖(T C),总之,都存在决定原因不包含候选码情况。,处理方法:模式分解,46,数据库系统概论之关系数据理论,第46页,实例模式分解,管理(,仓库号,设备号,,职员号),3NF BCNF,可分解为:,职员(,职员号,,仓库号,,职员号仓库号),BCNF,存放(,仓库号,设备号,),BCNF,管理(,职员号,,设备号,),BCNF,STC(S,T,C),3NF BCNF,可分解为:,ST(,S,T,),BCNF,TC(,T,,C,T C),BCNF,总结:,BCNF在函数依赖范围内,已实现了彻底分解。,47,数据库系统概论之关系数据理论,第47页,分析:,关系模式TCS由规范到BCNF后,使原来存在四个异常问题得到处理。,1数据冗余降低。,每个教师开设课程信息只在TC关系中存放一次。,2不存在插入异常。,对于所开课程还未有学生选修教师信息能够直接存放在关系TC中,而对于还未选修课程学生能够存放在关系ST中。,3不存在删除异常。,假如选修某门课程学生全部毕业,能够只删除关系ST中相关学生统计,而不影响系关系TC中对应教师开设该门课程信息。,4不存在更新异常。,当某个教师开设某门课程更名后,只需修改关系TC中一个对应元组即可,不会破坏数据完整性,48,数据库系统概论之关系数据理论,第48页,BCNF含有以下性质:,1若,R,BCNF,则R,2NF,2若,R,BCNF,则R,3NF,3假如R,3NF,则R不一定是BCNF,4假如R,3NF,且候选码唯一,则R是BCNF,49,数据库系统概论之关系数据理论,第49页,3NF与BCNF关系,R BCNF R 3NF,假如R3NF,且R只有一个候选码,R BCNF R 3NF,充分,无须要,充分,必要,50,数据库系统概论之关系数据理论,第50页,小结,到BCNF为止,在(单值)函数依赖范围内,已彻底消除了不好模式,去除异常。,思索:分解越高越好?,51,数据库系统概论之关系数据理论,第51页,经验:,分解过程中,应满足:,无损连接,性,:,分解后关系经过自然连接能够恢复成原来关系;,保持函数依赖:,分解不能破坏原来语义,即函数依赖不能丢失。,经验以下:,52,数据库系统概论之关系数据理论,第52页,、为将关系转化为,2NF,关系,采取下列图所表示方法。在该图中,主属性用星号标出,函数依赖用箭头指示。组成码属性组用大括号标识。,说明:组成码属性组与被其完全函数决定相关非主属性组成一个子关系;可决定其它非主属性码中主属性和相关非主属性组成按决定原因组成若干子关系,53,数据库系统概论之关系数据理论,第53页,、,将关系转化为3NF也就是从中去除全部传递函数依赖。采取下列图所表示方法来将关系转化为3NF。该图中,假设未指定或未隐含指出全部函数依赖都不成立。星号表示码,箭头表示函数依赖。虚线表示FD:AC能够不明确指出,但总是正确,因为能够用公理派生出来。,说明:组成码属性组与被其直接函数决定相关非主属性组成一个子关系;可决定其它非主属性非主属性和被其决定相关非主属性组成对应子关系,54,数据库系统概论之关系数据理论,第54页,非规范表格,多值依赖引例,例:课程(C)教师(T)参考书(B)问题,语义:一门课由多个教师讲授,他们使用相同参考书,关系模式:Teach(C,T,B),55,数据库系统概论之关系数据理论,第55页,多值依赖引例(续),关系模式:Teach(,C,T,B,),分析:,全码,Teach,BCNF,存在问题:,数据冗余太大;,修改操作复杂;,插入操作复杂;,删除操作复杂。,原因:,参考书和教师取值彼此,独立,它们都取决于课程名。,归纳:关系模式Teach,中存在一个多值依赖。,56,数据库系统概论之关系数据理论,第56页,多值依赖,定义:设相关系模式 R(U),X、Y和 Z 是 U 子集,且有 Z=U-X-Y。当且仅当对 R任一关系 r,r 在(X,Z)上每个值对应一组 Y 值,这组值仅仅依赖于 X 值,而与 Z 值无关,则称 Y 多值依赖于 X,记为XY。,前例:Teach(C,T,B)存在多值依赖,其中,U=C,T,B,(1)每个(C,B)上值对应一组T值,与B无关;,CT,(2)每个(C,T)上值对应一组B值,与T无关;,CB,57,数据库系统概论之关系数据理论,第57页,类别,平凡多值依赖:,若 XY,而 Z 为空,称XY为,平凡多值依赖,。,非平凡多值依赖:,若 XY,而 Z 不为空,称XY为,非平凡多值依赖,。,eg:TP(C,T),则:u=(c,t),f=c-t,所以:平凡多值依赖是一个语义表达。(存在于现实,合理),T(C,T,B),非平凡函数依赖(异常),58,数据库系统概论之关系数据理论,第58页,多值依赖性质,()多值依赖含有对称性,若 X,Y,则 X,Z,其中 Z=U,-,X,-,Y。,如:Teach(C,T,B)中,已知C T,必有C,B。,MA,T1 T5,B1 B2 B3,PH,T2 T3 T4,B5 B6,Ci,Ti1 Ti2.Tin,Bi1 Bi2.Bim,59,数据库系统概论之关系数据理论,第59页,(2)多值依赖含有传递性,若XY,YZ,则XZ Y,(3)函数依赖是多值依赖特殊情况。,若XY,则XY。,(4)若XY,XZ,则XY,Z。,(5)若XY,XZ,则XYZ。,(6)若XY,XZ,则XY-Z,XZ-Y。,60,数据库系统概论之关系数据理论,第60页,多值依赖与单值函数依赖关系,区分:,多值依赖有效性与属性集范围相关。,若 X,Y在U上成立,则在 W(XY W U)上一定成立。,但X,Y在W(W U)上成立,在U上并不一定成立。,比较:,函数依赖 XY有效性仅决定于X、Y两个属性集值。,若XY在XY上成立,则在任何W(XY W U)上都成立。,联络:函数依赖是多值依赖特例。,若 X,Y,则 X,Y。,61,数据库系统概论之关系数据理论,第61页,实例,多值依赖有效性与属性集范围相关。,MA,T1 T5,B1 B2 B3,此例 U=C,T,B,,,W=C,B,C,B 在 W上成立,但在U上C,B。,62,数据库系统概论之关系数据理论,第62页,多值依赖与单值函数依赖关系,多值依赖,X Y在R(U)上成立,但对于Y,Y,并不一定有X Y,成立。,比较:,函数依赖 XY在R(U)上成立,,则对任何Y Y,都有X Y 成立。,63,数据库系统概论之关系数据理论,第63页,分解,以处理冗余及异常,64,数据库系统概论之关系数据理论,第64页,第四范式(4NF),定义,:,关系模式R(U,D),1NF,U是属性全集,X,Y是U子集,D是R上数据依赖集,假如对R每个非平凡多值依赖 X Y(Y X),X都含有候选码,则R 4NF。,即:每个多值依赖决定原因必包含候选码,。,说明,:,关系模式R(U),1NF,U是属性全集,X,Y是U子集,D是R上数据依赖集,假如对于任一多值依赖 X Y,或者此多值依赖 是平凡,或者X都含有候选码(退化为),则R 4NF。,能够证实假如关系模式R 4NF,则必有 R BCNF。,65,数据库系统概论之关系数据理论,第65页,第四范式(4NF),例:关系模式 Teach(,C,T,B,)BCNF 4NF,因为存在非平凡多值依赖CT,CB,而主码为全码,分解模式,消除非平凡且非函数依赖多值依赖:,CT(,C,T,),4NF,CT是平凡多值依赖,CB(,C,B,),4NF,CB是平凡多值依赖,注意:CT,CB都是全码。,66,数据库系统概论之关系数据理论,第66页,思索:,课后,第题?,67,数据库系统概论之关系数据理论,第67页,到当前为止,规范化理论已经提出了六类范式,分别是:,1NF、,2NF、3NF、BCNF、4NF、5NF,各范式之间联络:,1NF,2NF 3NF BCNF 4NF 5NF,各范式级别是在分析函数依赖条件下对关系模式分离程度一个测度,范式级别能够逐层升高。,4.3 关系模式规范化,各级范式彼此之间为包含关系,68,数据库系统概论之关系数据理论,第68页,图4.3 各种范式之间关系,4NF,5NF,BCNF,3NF,2NF,1NF,规范与非规范关系,69,数据库系统概论之关系数据理论,第69页,规范化,一个,低一级范式关系模式,经过模式分解,转换,为若干个高一级范式关系模式集合,过程。,规范化目标,消除关系上数据冗余、操作异常现象。,规范化基本思想,采取“一事一地”模式设计标准(让一个关系只描述一个实体或者一个联络),逐步消除数据依赖中不适当部分,使模式中各关系模式到达某种程度分解。,规范化实质,概念单一化,70,数据库系统概论之关系数据理论,第70页,范式化基本步骤,1NF关系,消除非主属性对码部分函数依赖,2NF关系,消除非主属性对码传递函数依赖,3NF关系,消除主属性对非主属性函数依赖,和对码部分、传递函数依赖,BCNF关系,消除,非平凡且非函数依赖多值依赖,4NF关系,消除非候选码所蕴涵连接依赖,5NF关系,消除决定原因,非码非平凡,函数依赖,并非规范,化程度越高,关系模式,就越好,71,数据库系统概论之关系数据理论,第71页,规范化小结,普通情况下,我们说没有异常弊病数据库设计是好数据库设计,一个不好关系模式也总是能够经过分解转换成好关系模式集合。,不过在分解时要全方面衡量,综合考虑,视实际情况而定。,对于那些只要求查询而不要求插入、删除等操作系统,几个异常现象存在并不影响数据库操作。这时便不宜过分分解,不然当要对整体查询时,需要更多多表连接操作,这有可能得不偿失。,在实际应用中,最有价值是3NF和BCNF,在进行关系模式设计时,通常分解到3NF就足够了。,72,数据库系统概论之关系数据理论,第72页,4.4*数据依赖公理系统,为从已知数据依赖关系中推导出更多数据依赖,人们总结出许多数据依赖推理规则,这些规则1974年由,W.W.Armstrong 归纳为,一个有效、完备数据依赖公理系统,Armstrong公理系统,。,数据依赖公理系统是模式分解算法理论基础,Armstrong公理系统推广到多值依赖后包含:,FD公理(函数依赖公理 A1A3),MVD公理(多值依赖公理 A4A7),FD MVD公理(混合公理 A8A9),以及由各公理可推导出推理规则(共9条),73,数据库系统概论之关系数据理论,第73页,Armstrong公理内容,Armstrong公理系统,设相关系模式R(U,F),X、Y、Z为U子集,推理规则以下:,A1,.,自反律:若 Y X,则 X Y;,A2,.,增广律:若 X Y,则 XZ YZ(或ZX ZY);,A3,.,传递律:若 X Y、Y Z,则 X Z。,Armstrong公理推论,1)合并规则:若 X Y、,X,Z,则 X YZ。,2)分解规则:若 X YZ,则 X Y、X Z。,3)伪传递规则:若 X Y、YW Z,则 XW Z。,74,数据库系统概论之关系数据理论,第74页,Armstrong公理正确性,证实:,自反律:若Y X U,则X Y为F所蕴含,证:设Y X U,对R 任一关系r中任意两个元组t,s:,若tX=sX,因为Y X,有ty=sy,,所以XY成立,自反律得证,增广律:若XY为F所蕴含,且Z U,则XZYZ 为F所蕴含。,证:设XY为F所蕴含,且Z U。,设R 任一关系r中任意两个元组t,s:,若tXZ=sXZ,则有tX=sX和tZ=sZ;,由XY,于是有tY=sY,所以tYZ=sYZ,所以,XZYZ为F所蕴含,增广律得证。,定理:Armstrong公理是正确。,75,数据库系统概论之关系数据理论,第75页,Armstrong公理正确性,证实:,传递律:若XY及YZ为F所蕴含,则 XZ为 F所蕴含。,证:设XY及YZ为F所蕴含。,对R 任一关系 r中任意两个元组 t,s:,若tX=sX,因为XY,有 tY=sY;,再由YZ,有tZ=sZ,所以XZ为F所蕴含,传递,律得
展开阅读全文