【文档说明】课件-数据库原理第4章.ppt,共(135)页,1.982 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-92387.html
以下为本文档部分文字说明:
第4章关系数据库的规范化设计第六章关系数据理论4.1问题的提出4.2规范化4.3数据依赖的公理系统*4.4模式的分解4.5小结一、概念回顾关系关系模式关系数据库关系数据库的模式关系模式的形式化定义关系模式由五部分组成,即它是一个五元组:R(U,D,DOM
,F)R:关系名U:组成该关系的属性名集合D:属性组U中属性所来自的域DOM:属性向域的映象集合F:属性间数据的依赖关系集合四、关系模式的简化表示关系模式R(U,D,DOM,F)简化为一个三元组:R(U,F)当且仅
当U上的一个关系r满足F时,r称为关系模式R(U,F)的一个关系4.1问题的提出关系数据库逻辑设计针对具体问题,如何构造一个适合于它的数据模式数据库逻辑设计的工具──关系数据库的规范化理论[例1]建立一个描述学校教务的数据库:学生的学号(Sno)、所在系(Sdept)
系主任姓名(Mname)、课程名(Cname)成绩(Grade)单一的关系模式:Student<U、F>U={Sno,Sdept,Mname,Cname,Grade}U={Sno,Sdept,Mname,Cname,Grade}U={Sno,Sdept,M
name,Cname,Grade}属性组U上的一组函数依赖F:F={Sno→Sdept,Sdept→Mname,(Sno,Cname)→Grade}SnoCnameSdeptMnameGrade关系模式中存在的
问题⒈数据冗余太大浪费大量的存储空间例:每一个系主任信息重复出现⒉更新异常数据冗余,更新数据时,维护数据完整性代价大。例:系主任信息修改关系模式中存在的问题⒊插入异常该插的数据插不进去例,插入一个新系信息。⒋删除异常不
该删除的数据不得不删例,某系学生全部毕业关系模式Student<U,F>中存在的问题1.数据冗余太大2.更新异常(UpdateAnomalies)3.插入异常(InsertionAnomalies)4.删除异常(DeletionAnomalies)
数据依赖对关系模式的影响(续)结论:Student关系模式不是一个好的模式。“好”的模式:不会发生插入异常、删除异常、更新异常,数据冗余应尽可能少原因:由存在于模式中的某些数据依赖引起的解决方法:通过分解关系模式来消除其中不合适的数据依赖什么是数据依赖(续)数据依赖一个关系内部属性与
属性之间的约束关系现实世界属性间相互联系的抽象数据内在的性质语义的体现什么是数据依赖(续)数据依赖的类型函数依赖(FunctionalDependency,简记为FD)多值依赖(MultivaluedDependency,简记为MVD)其他第六章关系数据理论4.1问题的提出4.2规
范化4.3数据依赖的公理系统*4.4模式的分解4.5小结4.2规范化规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。4.2规范化4.2.1函数依赖4.2.2码4.2.3范式
4.2.42NF4.2.53NF4.2.6BCNF4.2.7多值依赖4.2.84NF4.2.9规范化小结4.2.1函数依赖函数依赖平凡函数依赖与非平凡函数依赖完全函数依赖与部分函数依赖传递函数依赖一、函数依赖定义4.1设R(U)是
一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。说明1.所有关系实例均要满足2.语义范畴的概念3.数据库设计者可以对现实世界作强制的规定二、
平凡函数依赖与非平凡函数依赖在关系模式R(U)中,对于U的子集X和Y,如果X→Y,但YX,则称X→Y是非平凡的函数依赖若X→Y,但YX,则称X→Y是平凡的函数依赖例:在关系SC(Sno,Cno,Grade)中
,非平凡函数依赖:(Sno,Cno)→Grade平凡函数依赖:(Sno,Cno)→Sno(Sno,Cno)→Cno平凡函数依赖与非平凡函数依赖(续)若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。若X→Y,Y→X,则记作X←→Y。若Y不函数依赖于X,则
记作X→Y。三、完全函数依赖与部分函数依赖定义4.2在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’Y,则称Y对X完全函数依赖,记作XFY。若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作XPY。完全函数依赖与部分函数依赖(续)[例1]
中(Sno,Cno)→Grade是完全函数依赖,(Sno,Cno)→Sdept是部分函数依赖因为Sno→Sdept成立,且Sno是(Sno,Cno)的真子集FP复习什么是函数依赖、非平凡函数依赖、完全函数依赖什么是码?不好的关系模式会存在哪些问题?四、传递函数依赖定义4.3在
R(U)中,如果X→Y,(YX),Y→XY→Z,则称Z对X传递函数依赖。记为:X→Z注:如果Y→X,即X←→Y,则Z直接依赖于X。例:在关系Std(Sno,Sdept,Mname)中,有:Sno→Sdept,Sdept→MnameMname传递函数依赖于S
no传递4.2规范化4.2.1函数依赖4.2.2码4.2.3范式4.2.42NF4.2.53NF4.2.6BCNF4.2.7多值依赖4.2.84NF4.2.9规范化小结4.2.2码定义4.4设K为R<U,F>中的属性或属性组合。若KU,则K
称为R的侯选码(CandidateKey)。若候选码多于一个,则选定其中的一个做为主码(PrimaryKey)。F码(续)主属性与非主属性包含在任何一个候选码中的属性,称为主属性(Primeattribute)不包含在任何码中的属性称为非主属性(Nonprimeattribu
te)或非码属性(Non-keyattribute)全码整个属性组是码,称为全码(All-key)码(续)[例3]关系模式R(P,W,A)P:演奏者W:作品A:听众一个演奏者可以演奏多个作品某一作品可被多个演奏者演奏听众可以欣赏不同演奏者的不同作品码为(
P,W,A),即All-Key外部码定义4.5关系模式R中属性或属性组X并非R的码,但X是另一个关系模式的码,则称X是R的外部码(Foreignkey)也称外码如在SC(Sno,Cno,Grade)中,Sno不是码,但Sno是关系模式S(Sno,Sdept,Sage)的码,则Sno是关
系模式SC的外部码主码与外部码一起提供了表示关系间联系的手段4.2规范化4.2.1函数依赖4.2.2码4.2.3范式4.2.42NF4.2.53NF4.2.6BCNF4.2.7多值依赖4.2.84NF4.2.9规范化小结4.2.3范式范式是符合某一种级别的关系模式的集合范式的种类:第
一范式(1NF)第二范式(2NF)第三范式(3NF)BC范式(BCNF)第四范式(4NF)第五范式(5NF)4.2.3范式各种范式之间存在联系:某一关系模式R为第n范式,可简记为R∈nNF。一个低一级范
式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化NF5NF4BCNFNF3NF2NF14.2规范化4.2.1函数依赖4.2.2码4.2.3范式4.2.42NF4.2.53NF4.2.6BCNF4.2.7多值依赖4.2.84
NF4.2.9规范化小结4.2.42NF1NF的定义如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据库但是满足第一范式的关系模式并不一定是一个好的关系模式2NF(续
)2NF的定义定义4.6若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。2NF(续)[例4]关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade)Sloc为学生住处,假设每个系的学生住在同一
个地方函数依赖包括:(Sno,Cno)FGradeSno→Sdept(Sno,Cno)PSdeptSno→Sloc(Sno,Cno)PSlocSdept→Sloc2NF(续)S-L-C的码为(Sno,Cno)S-L-C满足第一范式。非主属性Sdept和Sloc部分函数依赖于
码(Sno,Cno)SnoCnoGradeSdeptSlocS-L-CS-L-C不是一个好的关系模式(续)(1)插入异常(2)删除异常(3)数据冗余度大(4)修改复杂S-L-C不是一个好的关系模式(续)原因Sdept、Sloc部分函数依赖于码。解决方法S-L-C分解为
两个关系模式,以消除这些部分函数依赖SC(Sno,Cno,Grade)∈2NFS-L(Sno,Sdept,Sloc)∈2NF2NF(续)函数依赖图:SnoCnoGradeSCS-LSnoSdeptSloc关系模式SC的码为(Sno,Cno)关系模式S-
L的码为Sno这样非主属性对码都是完全函数依赖4.2规范化4.2.1函数依赖4.2.2码4.2.3范式4.2.42NF4.2.53NF4.2.6BCNF4.2.7多值依赖4.2.84NF4.2.9规范化小结4.2.53NF3NF的定义定义4.7关系模式R<U,F>中若不存
在这样的码X,属性组Y及非主属性Z(ZY),使得X→Y,Y→Z成立,Y→X,则称R∈3NF。若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。3NF(续)例:2NF关系模式S-L(Sn
o,Sdept,Sloc)中函数依赖:Sno→SdeptSdept→SnoSdept→Sloc可得:Sno→Sloc,传递所以S-L∈3NF3NF(续)函数依赖图:S-LSnoSdeptSloc3NF(续)解决方法采用投影分解法,把S-L分解为两个关系模式,以消
除传递函数依赖:S-D(Sno,Sdept)D-L(Sdept,Sloc)S-D的码为Sno,D-L的码为Sdept。分解后的关系模式S-D与D-L中不再存在传递依赖4.2规范化4.2.1函数依赖4.2.2码4.2.3范式4.2.4
2NF4.2.53NF4.2.6BCNF4.2.7多值依赖4.2.84NF4.2.9规范化小结4.2.6BC范式(BCNF)定义4.8关系模式R<U,F>∈1NF,若X→Y且YX时X必含有码,则R∈BCNF。等价于:每一个决定属性因素都包含码BCNF(续)若R∈B
CNF所有非主属性对每一个码都是完全函数依赖所有的主属性对每一个不包含它的码,也是完全函数依赖没有任何属性完全函数依赖于非码的任何一组属性R∈BCNFR∈3NF充分不必要BCNF(续)[例5]关系模式C(Cno,Cname,Pc
no)C∈3NFC∈BCNF[例6]关系模式S(Sno,Sname,Sdept,Sage)假定S有两个码Sno,SnameS∈3NF。S∈BCNFBCNF(续)[例7]关系模式SJP(S,J,P)学生课程名次函数依赖:(S,J)→
P;(J,P)→S(S,J)与(J,P)都可以作为候选码SJP∈3NFSJP∈BCNFBCNF(续)[例8]在关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。函数依赖:(S,J)→T,(S,T)→J,T→J(S,J)和(S,T)都是候选码BCN
F(续)JSJTSTSTJ中的函数依赖BCNF(续)解决方法:将STJ分解为二个关系模式:ST(S,T)∈BCNF,TJ(T,J)∈BCNF没有任何属性对码的部分函数依赖和传递函数依赖SJSTTJTJ3NF与
BCNF的关系R∈BCNFR∈3NF如果R∈3NF,且R只有一个候选码R∈BCNFR∈3NF充分不必要充分必要判断下列关系模式是否满足BC范式1、R(X,Y,Z)F={Y->Z,Y->X,X->YZ}2、管理(仓库号,设备号,职工号)(语义:每个仓库
有多个职工,一名职工只能在一个仓库工作,每个仓库一种设备仅有一名职工保管,每名职工可保管多种设备)职工号仓库号(仓库号,设备号)职工号4.2规范化4.2.1函数依赖4.2.2码4.2.3范式4.2.42NF4.2.53NF4.2.6BCNF4.2.7多值依赖4.2.84NF4.2.9规
范化小结4.2.7多值依赖[例9]学校中某一门课程由多个教师讲授,他们使用相同的一套参考书。每个教员可以讲授多门课程,每种参考书可以供多门课程使用。………课程C教员T参考书B物理数学计算数学李勇王军李勇张平张平周峰普通物理学光学原理物理习题集数学
分析微分方程高等代数数学分析...…多值依赖(续)非规范化关系普通物理学光学原理物理习题集普通物理学光学原理物理习题集数学分析微分方程高等代数数学分析微分方程高等代数…李勇李勇李勇王军王军王军李勇李勇李勇张平张平张平…
物理物理物理物理物理物理数学数学数学数学数学数学…参考书B教员T课程C多值依赖(续)用二维表表示Teaching多值依赖(续)Teaching∈BCNFTeaching具有唯一候选码(C,T,B),即全码多值依赖(续)Teaching模式中存在的问题(1)数
据冗余度大(2)插入操作复杂(3)删除操作复杂(4)修改操作复杂存在多值依赖多值依赖(续)定义4.9设R(U)是一个属性集U上的一个关系模式,X、Y和Z是U的子集,并且Z=U-X-Y,当且仅当对R的任一关系r,r在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值而与Z值无关则多
值依赖X→→Y成立例Teaching(C,T,B)多值依赖(续)平凡多值依赖和非平凡的多值依赖若X→→Y,而Z=φ,则称X→→Y为平凡的多值依赖否则称X→→Y为非平凡的多值依赖多值依赖(续)[例10]关系模式WSC(W,S,C)W表示仓库,S表示保管员,C表示商品
假设每个仓库有若干个保管员,有若干种商品每个保管员保管所在的仓库的所有商品每种商品被所有保管员保管多值依赖(续)WSCW1S1C1W1S1C2W1S1C3W1S2C1W1S2C2W1S2C3W2S3C4W2S3C5W2
S4C4W2S4C5W→→S且W→→C4.2规范化4.2.1函数依赖4.2.2码4.2.3范式4.2.42NF4.2.53NF4.2.6BCNF4.2.7多值依赖4.2.84NF4.2.9规范化小结4.2.84NF定义4.10关系模式
R<U,F>∈1NF,如果对于R的每个非平凡多值依赖X→→Y(YX),X都含有码,则R∈4NF。如果R∈4NF,则R∈BCNF4NF(续)例:Teaching(C,T,B)∈4NF存在非平凡的多值依赖C→→T,且C不是码用投影分解法把Teaching分解为如下两个关系模式:CT(C,T)∈4N
FCB(C,B)∈4NFC→→T,C→→B是平凡多值依赖4.2规范化4.2.1函数依赖4.2.2码4.2.3范式4.2.42NF4.2.53NF4.2.6BCNF4.2.7多值依赖4.2.84NF4.2.9规范化小结4.2.9规范化小结关系数据
库的规范化理论是数据库逻辑设计的工具目的:尽量消除插入、删除异常,修改复杂,数据冗余基本思想:逐步消除数据依赖中不合适的部分实质:概念的单一化规范化小结(续)关系模式规范化的基本步骤1NF↓消除非主属性对码的部分函数依赖消除决
定属性2NF集非码的非平↓消除非主属性对码的传递函数依赖凡函数依赖3NF↓消除主属性对码的部分和传递函数依赖-------------BCNF↓消除非平凡且非函数依赖的多值依赖4NF第六章关系数据理论4.
1问题的提出4.2规范化4.3数据依赖的公理系统*4.4模式的分解4.5小结4.3数据依赖的公理系统逻辑蕴含定义4.11对于满足一组函数依赖F的关系模式R<U,F>,其任何一个关系r,若函数依赖X→Y都成立,则称F逻辑蕴含
X→Y例如,关系模式Student(Sno,Sname,Sage,SD,SDname)其属性组上的函数依赖集为F={Sno→Sname,Sno→Sage,Sno→SD,SD→SDname},Sno→SDname就是F所逻辑蕴含的一个函数依赖。函数依赖的逻辑蕴涵1.Arms
trong公理系统关系模式R<U,F>来说有以下的推理规则:A1.自反律(Reflexivity):若YXU,则X→Y为F所蕴含。A2.增广律(Augmentation):若X→Y为F所蕴含,且ZU,则XZ→YZ为F所蕴含。A3.传递律(Transitivity):若X→Y及Y→Z为
F所蕴含,则X→Z为F所蕴含。2.导出规则1.根据A1,A2,A3这三条推理规则可以得到下面三条推理规则:合并规则:由X→Y,X→Z,有X→YZ。(A2,A3)伪传递规则:由X→Y,WY→Z,有XW→Z。(A2,A3)分解规则:由X→Y及ZY,有X→Z。(A1,A3)例:设有关系模式R(A
,B,C,D,E)及其上的函数依赖集F={AB→CD,A→B,D→E},求证F必蕴涵A→E。证明:∵A→B(给定条件)∴A→AB(A2增广律)∵AB→CD(给定条件)∴A→CD(A3传递律)∴A→C,A→D(分解规则)
∵D→E(给定条件)∴A→E(A3传递律)证毕。举例【例】对于关系模式CSZ(CITY,ST,ZIP),其属性组上的函数依赖集为F={(CITY,ST)→ZIP,ZIP→CITY},利用Armstrong公理系统的推理规则,证明(ST,ZIP)→(CITY,ST,ZIP)。
举例证明:根据题意不难看出只要证明(ST,ZIP)是一个候选码即可,证明步骤如下:因为ZIP→CITY(F中已给出)所以(ST,ZIP)→(CITY,ST)(利用增广率,即在函数依赖的两端加ST)(ST,ZIP)→(CITY,ST,
ZIP)(用增广率,加ZIP)Armstrong公理系统Armstrong公理系统是有效的、完备的有效性:由F出发根据Armstrong公理推导出来的每一个函数依赖一定在F+中;完备性:F+中的每一个函数依赖,必定可
以由F出发根据Armstrong公理推导出来3.函数依赖闭包定义4.l2在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作F的闭包(closure),记为F+。定义4.13设F为属性集U上的一组函数依赖
,XU,XF+={A|X→A能由F根据Armstrong公理导出},XF+称为属性集X关于函数依赖集F的闭包例:设关系模式R(A,B,C)的函数依赖集为F={A→B,B→C},分别求A、B、C的闭包。解:若X=A,∵A→B,B→C(给定条件)∴A
→C(A2传递律)∵A→A(A1自反律)∴={A,B,C}(据定义)FA若X=B∵B→B(A1自反律)B→C(给定条件)∴={B,C}(据定义)FB若X=CC→C(自反律)∴={C}(据定义)FC例:设关系模式R(A,B,C)的函数依赖集为F={A→B,B→C},分别
求A、B、C的闭包。举例【例】已知关系模式R(U,F),U={A,B,C,D,E},F={A→B,D→C,BC→E,AC→B},求、。FAE)(FAD)(FAE)(FAD)(解:=ABCDE=ABE5.函数依赖集等价定义4.14如果G+=F+,就说函数依赖
集F覆盖G(F是G的覆盖,或G是F的覆盖),或F与G等价。引理4.3F+=G+的充分必要条件是FG+,和GF+判断两个函数依赖集等价的可行算法定理4.3每个函数依赖集F均等价于一个极小函数依赖集Fm。4.最小依赖集定义4.15如果函数依赖
集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集或最小覆盖。(1)F中任一函数依赖的右部仅含有一个属性。(2)F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。(3)F中不存在这样的函数依赖X→A,X有真子集Z使得F-{X→A}∪{Z→A}与F等价。算
法:求函数依赖F的最小依赖集F’多余,否则不多余,若包含则表示是否包含察是否多余,即考看是非单属性的依赖,如中左边的属性:逐个检查去掉各依赖左边的多余否则不去掉若是则去掉包含是否看,在剩下的依赖中求如掉它个依赖开始,去中多余的依赖:从第一去
掉右边均改为单属性依赖用分解规则将所有依赖YAXYAXYFYXYXXYXF+++,)3(,,,)()2()1(最小依赖集[例2]关系模式S<U,F>,其中:U={Sno,Sdept,Mname,Cno,Grade},F={Sno→Sdept,Sdept→Mn
ame,(Sno,Cno)→Grade}设F’={Sno→Sdept,Sno→Mname,Sdept→Mname,(Sno,Cno)→Grade,(Sno,Sdept)→Sdept}F是最小覆盖,而F’不是。因为:F’-{Sno→Mname}与F’等价F’-{(Sno
,Sdept)→Sdept}也与F’等价极小化处理=Fmin=求最小的函数依赖集例:设F是关系模式R(ABC)的FD集,F={A→BC,B→C,A→B,AB→C},试求Fmin。F={A→BC,B→C,A→B,AB→
C}①先把F中的FD写成右边是单属性形式:F={A→B,A→C,B→C,A→B,AB→C}删去重复的FDA→B,得F={A→B,A→C,B→C,AB→C}②F中A→C可从A→B和B→C推出,因此A→C是冗余的,可
删去。得F={A→B,B→C,AB→C}③F中AB→C可从A→B和B→C推出,因此AB→C也可删去。最后得F={A→B,B→C},即所求的Fmin。极小化过程(续)[例3]F={A→B,B→A,B→C,A→C,C→A}Fm1={A→B,B
→C,C→A}Fm2={A→B,B→A,A→C,C→A}Fm1、Fm2都是F的最小依赖集:F的最小依赖集Fm不唯一极小化过程也是检验F是否为极小依赖集的一个算法求候选码的方法将属性分为四类L:仅出现在函数依赖的左边R:仅出现在函数依赖的右边N:两边均未出现LR:左右均
出现求候选码的方法1、令X代表L、N类,Y代表LR类2、求X的闭包,若X的闭包含R的全部属性,则X为R的唯一候选码,转5,否则转33、在Y中取属性A,求(XA)的闭包,若它包含R的全部属性,则转4,否则换一个属性反复进行这一过程
,直到测完Y中的属性4、如已找到所有候选码,则转5,否则在Y中依次取2,3…个属性,直到试完Y中所有组合5、结束输出结果【例】设关系模式R(U,F),其中U={A,B,C,D},F={A→C,C→B,AD→B}。求R的候
选码。求候选码的方法解:(1)检查F发现,A,D只出现在函数依赖的左部,所以为L类属性,X=AD,Y=C(2)根据求属性闭包的算法,F中A→C,AD→B可以求得=ABCD=U,故AD为R唯一的候选码。FAD)(F={A→C,C→B,AD→B}
例题设有关系模式R(A,B,C,D,E),其上的函数依赖集:F={A→BC,CD→E,B→D,E→A}⑴计算B+。⑵求出R的所有候选关键字。⑴B+=BD。⑵R的候选关键字只可能由F中各个函数依赖的LR属性组成,即A,B,C,D,E计算可知:A+=ABCDE,即A→U,∴A是一个候
选关键字。B+=BD,C+=C,D+=D,∴B、C、D不是候选码E+=ABCDE,即E→U,∴E是一个候选码。F={A→BC,CD→E,B→D,E→A}计算可知:(BC)+=ABCDE,即CD→U(CD)+=ABCDE,即CD→U,(BD)+=BD∴CD,BC都是候选关键字。R的所有候选关
键字是A,BC,CD,E。F={A→BC,CD→E,B→D,E→A}【例】设关系模式R(U,F),其中U={H,I,J,K,L,M},F={H→I,K→I,LM→K,I→K,KH→M}。求R的候选码。求候选码的
方法第六章关系数据理论4.1问题的提出4.2规范化4.3数据依赖的公理系统*4.4模式的分解4.5小结4.4模式的分解把低一级的关系模式分解为若干个高一级的关系模式的方法不是唯一的只有能够保证分解后的关系模式与原关系模式等价,分解方法才有
意义关系模式分解的标准三种模式分解等价的定义:⒈分解具有无损连接性⒉分解要保持函数依赖⒊分解既要保持函数依赖,又要具有无损连接性模式的分解(续)如果一个分解具有无损连接性,则它能够保证不丢失信息如果一个分解保持了函数依赖,则它可以减
轻或解决各种异常情况分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖;同样,保持函数依赖的分解也不一定具有无损连接性。定理4.5:关系模式R(U,F)的一个分解,ρ={R1(U1,F1),R2(U2,F2)}具有无
损连接的充分必要的条件是:U1∩U2→U1-U2F+或U1∩U2→U2-U1F+保持无损连接的分解【例】对给定的关系模式R(U,F),U={A,B,C},F={A→B},如下的两个分解:(1)ρ1={AB,BC}(2)ρ2={A
B,AC}判断这两个分解是否无损。举例FABFCB解:(1)可根据无损连接定理判断本题∵AB∩BC=BAB-BC=ABC-AB=C∴U={A,B,C},F={A→B}故ρ1为有损连接。举例(2)根据无损连接定理判断本题∵AB∩AC=AAB-AC=BAC-AB=C∴FBAρ2为
无损连接。(1)构造一个n列k行表,每一行对应于一个模式Ri(1≤i≤k),每一列对应于一个属性Aj(1≤j≤n),如下表所示。定理4.4判断分解是无损连接的测试方法A1A2…AnR1R2…Rk(2)初始表(填表):若Aj∈Ri,则第i行第j列上填入aj,否则空
着。(3)修改表:取F中的某个函数依赖XY,在表中寻找与X对应的列中含有相同属性值的行,然后,将这些行中对应Y的属性的元素进行修改;若这些元素中有aj,则全部改为aj;(4)这样反复进行,如发现
某一行变成a1,a2,…,ak,则此分解ρ具有连接不失真性。例题已知R(ABCD),ρ={AB,BC,CD},F={B→A,C→D}判断ρ相对于F是否无损分解。ρ={AB,BC,CD},F={B→A,C→D}(a)初始表格ABCDABa1a2BCa
2a3CDa3a4(b)修改后的表格ABCDABa1a2BCa1a2a3a4CDa3a4∴ρ是无损分解例:设有R(U,F),其中:U=(A,B,C,D,E),F=(A→C,B→C,C→D,DE→C,CE→A),R的一个分解为:ρ={R1(
AD),R2(AB),R3(BE),R4(CDE),R5(AE)}是否无损分解?表(a)初始表格ABCDER1:ADa1a4R2:ABa1a2R3:BEa2a5R4:CDEa3a4a5R5:AEa1a5表(b)修改后的
表格ABCDER1:ADa1a3a4R2:ABa1a2a3R3:BEa2a5R4:CDEa3a4a5R5:AEa1a3a5表(b)修改后的表格ABCDER1:ADa1a3a4R2:ABa1a2a3R3:BEa2a3a5R4:CDEa3a
4a5R5:AEa1a3a5表(b)修改后的表格ABCDER1:ADa1a3a4R2:ABa1a2a3a4R3:BEa2a3a4a5R4:CDEa3a4a5R5:AEa1a3a4a5表(b)修改后的表格AB
CDER1:ADa1a3a4R2:ABa1a2a3a4R3:BEa1a2a3a4a5R4:CDEa1a3a4a5R5:AEa1a3a4a5∴ρ是无损分解判断分解保持函数依赖的测试方法设关系模式R的一个分解ρ={R1,R2…,Rk},F是R的依赖集,如果F等价
于R1(F)UR2(F)U…URk(F),则称分解具有依赖保持性例题给定关系模式R<U,F>,其中U={A,B,C,D},F={A→B,B→C,C→D,D→A},判断关系模式R的分解ρ={AB,BC,CD}是否具有依赖保持性F={A→B
,B→C,C→D,D→A}ρ={AB,BC,CD}解:∵AB(F)={A→B,B→A}BC(F)={B→C,C→B}CD(F)={C→D,D→C}AB(F)UBC(F)UCD(F)={A→B,B→A,B→C,C→
B,C→D,D→C}从中可以看到A→B,B→C,C→D均得以保持,又D+=ABCD,∴D→A也得到保持∴该分解具有依赖保持性算法4.3:转换为3NF的保持函数依赖的分解⑴对R<U,F>中的函数依赖集F进行“极小化处理”,仍记为F。⑵找出不在F中出现的属性,把这样的
属性构成一个关系模式。把这些属性从U中去掉,剩余的属性仍记为U。⑶若有XAF,且XA=U,则ρ={R},算法终止⑷否则,每一组函数依赖Fi所涉及的全部属性形成一个属性集Ui。若UiUj(i≠j)就去掉Ui。设有关系模式R(A,B,C,D,E),R的函数依赖集:
F={A→D,E→D,D→B,BC→D,CD→A}⑴求R的候选关键字。⑵将R分解为3NF。例:解:⑴设U=(A,B,C,D,E),由于(CE)+=ABCDE∴R的唯一候选关键字是CE。⑵求出最小依赖集Fm={A→D,
E→D,D→B,BC→D,CD→A}将R分解为3NF:ρ={AD,DE,BD,BCD,ACD},化简得ρ={DE,BCD,ACD}例:F={A→D,E→D,D→B,BC→D,CD→A}设关系模式R〈U,F〉,U={C,T,H,R,S,G,X,Y,Z},F={C→T,CS→G,HR→C,H
S→R,TH→R,C→X},将R分解为3NF,且保持函数依赖。解:该函数依赖集已经是最小化的,则分解为:={YZ,CT,CX,CSG,HRC,HSR,THR}.算法:转换为3NF的保持函数依赖的分解算法4.4:
转换为3NF既有无损连接性又保持函数依赖的分解⑴设X是R<U,F>的码。R<U,F>已由算法分解为ρ={R1<U1,F1>,R2<U2,F2>,…,Rk<Uk,Fk>},令=ρ∪{Rx<U,Fx>}。⑵若有某个Ui,XUi,将Rx<
U,Fx>从中去掉。把这些属性从U中去掉,剩余的属性仍记为U。⑶就是所求的分解。【例】有关系模式R〈U,F〉,U={C,T,H,R,S,G},F={C→T,CS→G,HR→C,HS→R,TH→R}
,将R分解为3NF,且既具有无损连接性又能保持函数依赖。解:可以求得关系模式R的码为HS,它的一个保持函数依赖的3NF为:={CT,CSG,HRC,HSR,THR}.∵HS是关键字,=∪{HS},HS是HSR的一个子集∴τ=={CT,CSG,HRC,HSR,THR}为满足
要求的分解。算法4.5转换为BCNF的无损连接的分解⑴令ρ={R<U,F>}⑵检查ρ中各关系模式是否均属于BCNF。若是,则算法终止。⑶设ρ中Ri<Ui,Fi>不属于BCNF,那么必有XAFi+(AX),且X非Ri的码。因此,XA是Ui的真子集。对Ri进行分解:={S1,S2}
,Us1=XA,Us2=Ui-{A},以代替Ri<Ui,Fi>返回第⑵步。【例】设有关系模式R〈U,F〉,U=CTHRSG,F={C→T,HR→C,HT→R,CS→G,HS→R},试把R分解成具有无损连接的BCNF。解:令=CTHRSG1)由于R的码为HS,选择CS→G分解。得出:
={S1,S2}.其中:S1=CSG,F1={CS→G};S2=CTHRS,F2={C→T,HR→C,HT→R,HS→R}.显然,S2不服从BCNF,需要继续分解。2)对S2分解。S2的码为HS,选择C→T分解。得出:={
S1,S3,S4}.其中:S3=CT,F3={C→T};S4=CHRS,F4={HR→C,HS→R}.显然,S4不服从BCNF,还需要继续分解。3)对S4分解。S4的码为HS,选择HR→C分解。得出:={S1,S3,S5,S6}.其中:S5=HRC,F5={HR→C
};S6=HRS,F6={HS→R}.4)最后的分解为:={CSG,CT,HRC,HRS}.4.5小结关系模式的规范化,其基本思想:小结(续)若要求分解具有无损连接性,那么模式分解一定能够达到4NF
若要求分解保持函数依赖,那么模式分解一定能够达到3NF,但不一定能够达到BCNF若要求分解既具有无损连接性,又保持函数依赖,则模式分解一定能够达到3NF,但不一定能够达到BCNF小结(续)规范化理论为数据库设计提供了理论的指南和工具也仅仅是指南和工具并不是规范化程度越高,模式就
越好必须结合应用环境和现实世界的具体情况合理地选择数据库模式课后作业1.设有关系模式R(A,B,C,D)及R上的函数依赖集F,F={AB->C,C->D,D->A}a)推导出所有的非平凡函数依赖b)求出R的所有候选码课后作业2、设有关系模式R(A,B,C,D,E,H)及R上
的函数依赖集F,F={A->D,E->D,D->B,BC->D,DC->H}a)求出R的候选码b)将R分解成3NFc)将R分解成BCNF3、设有关系模式R(A,B,C,D,E)及R上的函数依赖集F,F={A
->D,E->D,D->B,BC->D,DC->A}若分解={R1(A,B),R2(A,E),R3(E,C),R4(D,B,C),R5(A,C)}试问是否是R的无损连接性分解?是否是R的保持函数依赖的分解?课后作业下课了。。。休息一会
儿。。。