数据库原理第3章

上传人:pu****.1 文档编号:568476498 上传时间:2024-07-24 格式:PPT 页数:91 大小:758.02KB
返回 下载 相关 举报
数据库原理第3章_第1页
第1页 / 共91页
数据库原理第3章_第2页
第2页 / 共91页
数据库原理第3章_第3页
第3页 / 共91页
数据库原理第3章_第4页
第4页 / 共91页
数据库原理第3章_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《数据库原理第3章》由会员分享,可在线阅读,更多相关《数据库原理第3章(91页珍藏版)》请在金锄头文库上搜索。

1、第第3 3章章 关系数据模型关系数据模型关系模型的基础关系模型的基础关系模型的核心概念-关系,使用关系表示实体集及实体集之间的联系。属性属性模式模式关系名和其属性集合的组合称为这个关系的模式。Movies(title,year,length,filmType)数据库模式(关系数据库模式)数据库模式(关系数据库模式)-一个数据库所有关系的模式集合元组元组(StarWars,1977,124,color)域域-每个属性的取值范围-必须满足原子性关系的等价描述关系的等价描述-行序无关、列序无关关系实例关系实例 -元组的集合(是动态变化的,但是模式是相对稳定的)通常的数据库系统只维护关系的一个版本,即

2、关系的“当前”元组集合。这个关系实例叫做当前实例当前实例。从从E/RE/R图到关系设计图到关系设计先用E/R图设计,然后转换成关系模式。对于一般对于一般E/RE/R图的转换步骤:图的转换步骤:(1)把每个实体集转化成具有同一属性集合的关系;(2)用关系替换联系,关系的属性就是联系所连接的实体集的键集合-多角色情况也是一样多角色情况也是一样。还有些特殊情况要特殊处理还有些特殊情况要特殊处理Stars(name,address)Studios(name,address)Movies(title,year,length,filmType)Stars-in(title,year,StarsName)O

3、wns(title,year,StudiosName)Contracts(starName,title,year,StudioofStar,producingStudio)多多路路联联系系的的例例子子组合关系组合关系Movies(title,year,length,filmType)Owns(title,year,StudiosName)上述两个关系最好组合成如下的一个关系(因为它们之间存在多对一的关系):R(title,year,length,filmType,StudioName)StudioName 允许空值允许空值这样做可以带来好处这样做可以带来好处如果不是多对一联系,则合成关系会出现

4、问题如果不是多对一联系,则合成关系会出现问题(造造成数据冗余成数据冗余) - p41例3.6多对多的联系合并会造成冗余多对一的联系可以合并处理弱实体集处理弱实体集1.从弱实体集W得到的关系不仅要包含W的属性,还包含有助于形成W键的其他实体集的键属性。-通过支持联系访问其他实体集。2.与弱实体集W相连的联系,经转化后所得的关系必须把那些和W相连的,以及对W的键有用的,实体集的键属性作为W的键普通联系3.从弱实体集W指向其他有有助于形成W的键的实体集的支持联系R不必转化为关系。-支持联系处理弱实体集处理弱实体集Studios(name,addr)Crews(number,StudioName)Un

5、it-of(number,StudioName,Name)可以去掉可以去掉P42例3.8Contracts(starName,studioName,title,year,salary)Stars(name,addr)Studio(name,addr)Movies(title,year,filmType,length)支持联系不需要转化为关系支持联系不需要转化为关系p44弱实体集转化为关系的规则弱实体集转化为关系的规则如果W是一个弱实体集,则W转化为关系后的模式由以下项目组成:(1)W的所有属性;(2)与W相连的支持联系的所有属性(3)对每一个连接W的支持联系,要包含E的所有键属性(E就是与W保

6、持支持联系的其他实体集)(4)不要为与W相连的支持联系构造关系子类结构到关系的转化子类结构到关系的转化直接直接E/RE/R为任一个在层次中的实体集创建一个关系,它包含根的键属性和实体集自身的属性。isa联系不需要建立关系。Movies(title,year,length,filmType)Cartoons(title,year)MurderMysteries(title,year,weapon)Voices(title,year,starName)-假设Stars的键为starName面向对象的方法面向对象的方法为每个包含根的子树创建一个关系,这个关系模式包含子树中所有实体集的所有属性。子树子

7、树1 1:Movies子树子树2 2:Movies,Cartoons子树子树3 3:Movies,Murder-Mysteries子树子树4 4:Movies,Cartoons,Murder-MysteriesMovies(title,year,length,filmType)MoviesC(title,year,length,filmType)MoviesMM(title,year,length,filmType,weapon)MoviesCMM(title,year,length,filmType,weapon)Voices(title,year,starName)含有相同属性的关系可以合

8、并含有相同属性的关系可以合并 - 但是会丢失一些信息但是会丢失一些信息使用空值使用空值创建一个包含层次中所有实体集属性的关系。每个实体由一个元组表示,对于实体不具有的属性,则设该元组的相应分量为空。Movies(title,year,filmType,weapon)各种方法的比较各种方法的比较查询效率方面关系数量方面:2n(面向对象)信息冗余方面:面向对象、空值、直接E/R(重复键值)函数依赖函数依赖 - - 研究属性之间的依赖关系研究属性之间的依赖关系设计不好的关系例设计不好的关系例-1-1冗余、更新、插入、删除等异常情况冗余、更新、插入、删除等异常情况设计不好的关系例设计不好的关系例-2-

9、2函数依赖的定义函数依赖的定义一个关系R上的函数依赖(functionaldependency,FD),是指“如果R的两个元组在属性A1,A2,An上一致,那么它们在其他分量B上的值必定也相同。写为:A1A2AnB”A1A2AnB1A1A2AnB2.A1A2AnBm记成:A1A2AnB1B2BmMovies(title,year,length,filmType,studioName,starName)titleyearlengthtitleyearfilmTypetitleyearstudioNametitleyearstarName 可以写成:titleyearlengthfilmTypes

10、tudioName说明:1.函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。2.函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。例如“姓名年龄”这个函数依赖只有在不允许有同名人的条件下成立3.数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在,则拒绝装入该元组。关系的键关系的键如果下列条件满足,就认为一个或多个属性的集合A1,A2,An是关系R的键:(1)这些属性决定关系的所有其他属性;(2)没有一个A1,A2,An的真子集能函数决定

11、R的其他属性。例:例:Movies(title,year,length,filmType,studioName,starName)键为:title,year,starName可能一个关系模式有多个键,需要指定一个为主键。可能一个关系模式有多个键,需要指定一个为主键。当显示关系模式的时候,在主键属性下划线。当显示关系模式的时候,在主键属性下划线。超键超键一个包含键的属性集就叫做超键(键本身是特殊的超键)。Movies(title,year,length,filmType,studioName,starName)title,year,starName为超键。.找出关系中的键找出关系中的键(1)来自

12、E/R图实体集的关系,实体集的键就是关系的键;(2)对于来自E/R图联系的关系,则多对多联系:联系的实体集的键的集合多对一的联系(E1到E2):E1的键一对一的联系(E1到E2):E1或者E2的键Movies(title,year,length,filmType)Stars(name,address)上面为实体集得到的关系Owns(title,year,studioName)电影与公司之间的多对一的联系Stars-in(title,year,starName)影星与电影之间的多对多的联系键为:学号、课程号函数依赖的规则函数依赖的规则如何从已知的函数依赖导出其他必定成立的函数依赖?如何从已知的函

13、数依赖导出其他必定成立的函数依赖?例例3.173.17如果一个含有属性A、B、C的关系R满足FD:AB和BC,显然可以导出FD:AC。定义定义1 1一个关系模式的两个函数依赖集等价定义定义2 2一个关系模式的两个函数依赖集之间的导出(推断)关系存在下列等价规则:存在下列等价规则:(1)分解分解/ /结合规则结合规则分解:分解:A1A2AnB1B2Bm可以分解为:A1A2AnB1A1A2AnB2A1A2AnBm结合:结合:A1A2AnB1A1A2AnB2A1A2AnBm可以结合成:A1A2AnB1B2BmtitleyearlengthtitleyearfilmTypetitleyearstudi

14、oName可以结合成:可以结合成:titleyearlengthfilmTypestudioName(2 2)平凡函数依赖)平凡函数依赖平凡函数依赖平凡函数依赖 非平凡函数依赖非平凡函数依赖 完全非平凡函数依赖完全非平凡函数依赖titleyearlength(完全非平凡函数依赖)titleyeartitlelength(非平凡函数依赖)titleyearyearlength(非平凡函数依赖)titleyeartitleyearlength(非平凡函数依赖)titleyeartitle(平凡函数依赖)titleyearyear(平凡函数依赖)titleyeartitleyear(平凡函数依赖)计

15、算属性的闭包计算属性的闭包1.属性集合的闭包A1,A2,An+2.计算属性集合A1,A2,An闭包的步骤:(1)X初始化为A1,A2,An;(2)在FD集合中查找B1B2.BnC这样的式子,其中B1,B2,.,Bn在X中,而C不在X中,如果找到,则将C加入到X中;(3)重复第(2)步,直到X不再增大为止。例例3.193.19考虑含有属性A,B,C,D,E和F的关系。假设此关系有FD:ABC,BCAD,DE和CFB。求A,B+。例例3.203.20考虑含有属性A,B,C,D,E和F的关系。假设此关系有FD:ABC,BCAD,DE和CFB。ABD是否能导出来?DA是否能推导出来?例例F=ABC,D

16、EG,CA,BEC,BCD,CGBD,ACDB,CEAG,求(BD)+。为什么能用闭包算法?能正确判断一个FD是否能从给定的FD集合S推断出来。证明过程(略,一般了解)(3 3)传递规则)传递规则若关系R中FDA1A2AnB1B2Bm和B1B2BmC1C2Ck都成立,那么A1A2AnC1C2Ck在R中也成立。例3.21R(title,year,length,filmType,studioName,studioAddr)titleyearstudioName(根据多对一联系得到的)studioNamestudioAddr所以titleyearstudioAddr函数依赖的闭包集合函数依赖的闭包集

17、合使用哪个FD集合来描述一个关系的完全FD集合?使用一个FD集合就可以把其他FD集合推出来-基本集最小化的基本集例例3.223.22p57ABC,BAC,CAB能导出的所有函数依赖关系最小的函数依赖集:AB,BA,BC,CBAB,BC,CA最小依赖集如果函数依赖集F满足下列条件,则称F为一个极小函数依赖集。亦称为最小依赖集或最小覆盖。(1)F中任一函数依赖的右部仅含有一个属性。(2)F中不存在这样的函数依赖XA,使得F与F-XA等价。(3)F中不存在这样的函数依赖XA,X有真子集Z使得F-XAZA与F等价。关系模式S,其中:U=SNO,SDEPT,MN,CNAME,G,F=SNOSDEPT,S

18、DEPTMN,(SNO,CNAME)G设F=SNOSDEPT,SNOMN,SDEPTMN,(SNO,CNAME)G,(SNO,SDEPT)SDEPTF是最小覆盖,而F 不是。因为:F -SNOMN与F 等价 F -(SNO,SDEPT)SDEPT也与F 等价 F -(SNO,SDEPT)SDEPTSNOSDEPT也与F 等价每一个函数依赖集F均等价于一个极小函数依赖集Fm。此Fm称为F的最小依赖集证:构造性证明,依据定义分三步对F进行“极小化处理”,找出F的一个最小依赖集。(1)逐一检查F中各函数依赖FDi:XY,若Y=A1A2Ak,k 2,则用XAj|j=1,2,k来取代XY。(2)逐一检查

19、F中各函数依赖FDi:XA,令G=F-XA,若AXG+,则从F中去掉此函数依赖。(3)逐一取出F中各函数依赖FDi:XA,设X=B1B2Bm,逐一考查Bi(i=l,2,m),若A (X-Bi)F+,则以X-Bi取代X。F=AB,BA,BC,AC,CA Fm1、Fm2都是F的最小依赖集:Fm1=AB,BC,CAFm2=AB,BA,AC,CAF的最小依赖集Fm不一定是唯一的它与对各函数依赖FDi及XA中X各属性的处置顺序有关投影函数依赖投影函数依赖关系的分解关系的分解 - - 消除异常消除异常 - - 投影运算投影运算投影成:Movies1(title,year,length,filmType,s

20、tudioName)和Movies(title,year,starName)例例3.233.23p58关系分解后的函数依赖关系分解后的函数依赖关系R上的函数依赖集合F,分解(投影成R1和R2),找R1和R2上成立的函数依赖集合。(1)从F推导出来;(2)函数依赖的左右两侧只是R1(或者R2)的属性。考虑所有R1(或者R2)属性集的所有子集的闭包。可以采用优化计算方法(见下面的例子)R(A,B,C,D),FD:AB,BC,CD分解成S(A,C,D),S上成立的FD的计算A+包含所有属性,不用再算其超集的闭包C+D+C,D+模式的分解把低一级的关系模式分解为若干个高一级的关系模式的方法并不是唯一的

21、只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义关系模式分解的标准三种模式分解的等价定义分解具有无损连接性分解要保持函数依赖分解既要保持函数依赖,又要具有无损连接性例:SL(Sno,Sdept,Sloc)F=SnoSdept,SdeptSloc,SnoSloc存在插入异常、删除异常、冗余度大和修改复杂等问题分解方法可以有多种SLSno SdeptSloc95001CSA95002ISB95003MAC95004ISB95005PHB1.SL分解为下面三个关系模式:SN(Sno)SD(Sdept)SO(Sloc)SNSDSOSnoSdeptSloc95001CSA95002ISB9

22、5003MAC95004PH95005分解后的数据库丢失了许多信息例如无法查询95001学生所在系或所在宿舍。如果分解后的关系可以通过自然连接恢复为原来的关系,那么这种分解就没有丢失信息2.SL分解为下面二个关系模式:NL(Sno,Sloc)DL(Sdept,Sloc)分解后的关系为:NLDLSnoSlocSdeptSloc95001ACSA95002BISB95003CMAC95004BPHB95005BNLDLSnoSlocSdept95001ACS95002BIS95002BPH95003CMA95004BIS95004BPH95005BIS95005BPHNLDL比原来的SL关系多了3

23、个元组无法知道95002、95004、95005究竟是哪个系的学生 元组增加了,信息丢失了3.将SL分解为下面二个关系模式:ND(Sno,Sdept)NL(Sno,Sloc)分解后的关系为:NDNLSnoSdeptSnoSloc95001CS95001A95002IS95002B95003MA95003C95004IS95004B95005PH95005BNDNLSnoSdeptSloc95001CSA95002ISB95003MAC95004CSA95005PHB与SL关系一样,因此没有丢失信息关系模式R的一个分解=R1,R2,Rn若R与R1、R2、Rn自然连接的结果相等,则称关系模式R的这

24、个分解具有无损连接性(Losslessjoin)具有无损连接性的分解保证不丢失信息无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题第三种分解方法具有无损连接性问题:这种分解方法没有保持原关系中的函数依赖SL中的函数依赖SdeptSloc没有投影到关系模式ND、NL上设关系模式R被分解为若干个关系模式R1,R2,Rn(其中U=U1U2Un,且不存在UiUj,Fi为F在Ui上的投影),若F所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖Fi所逻辑蕴含,则称关系模式R的这个分解是保持函数依赖的(Preservedependency)。将SL分解为下面二个关系模式:ND

25、(Sno,Sdept)DL(Sdept,Sloc)这种分解方法就保持了函数依赖。如果一个分解具有无损连接性,则它能够保证不丢失信息。如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况。分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖。同样,保持函数依赖的分解也不一定具有无损连接性。第一种分解方法既不具有无损连接性,也未保持函数依赖,它不是原关系模式的一个等价分解第二种分解方法保持了函数依赖,但不具有无损连接性第三种分解方法具有无损连接性,但未持函数依赖第四种分解方法既具有无损连接性,又保持了函数依赖关系数据库模式设计关系数据库模式设计

26、分解关系分解关系BCNF范式范式 -按照什么原则来分解关系,消除异常?(1)BCNF范式的定义关系R满足BCNF当且仅当:如果R中非平凡FDA1A2AnB成立,则A1A2An是关系的超键。(2)判断是否为BCNF范式的例子(3.25、3.26、3.27)例3.25R(title,year,length,filmType,studioName,starName)FD=titleyearlength,titleyearfilmType,titleyearstudioName,Key=titleyearstarName例3.26Movies1(title,year,length,filmType,s

27、tudioName)和Movies(title,year,starName)这两个关系模式都是满足BCNF范式的,因为:对于Movies1:titleyearlength,titleyearfilmType,titleyearstudioNameKey=titleyear对于Movies2:Key=titleyearstarName例3.27任意的二元关系都满足BCNF范式(3)如何将一个不满BCNF范式的关系模式分解成若干个满足BCNF范式的关系模式?方法:方法:首先寻找违反BCNF条件的非平凡A1A2AnB1B2Bm,也就是要找A1,A2,An不是超键的FD。然后尽可能地往FD的右边增加足

28、够多的由A1,A2,An决定的属性,分解成两个关系:其中一个包含了上述FD的所有属性,另一个包含了位于这个FD左边的属性和不属于这个FD的所有属性。例3.28R(title,year,length,filmType,studioName,starName)FD=titleyearlength,titleyearfilmType,titleyearstudioName,Key=titleyearstarNametitleyearlength是违反BCNF的非平凡函数依赖titleyearlengthfilmTypestudioNameR1(title,year,length,filmType,s

29、tudioName)R2(title,year,starName)每个都满足BCNF范式例3.29R(title,year,filmType,studioName,studioAddr)FD=titleyearlength,titleyearfilmType,titleyearstudioName,studioNamestudioAddr键为title,year因此,上述关系模式不满足BCNF范式。违反BCNF范式的函数依赖为studioNamestudioAddr,因此分解为如下两个关系模式:R1(studioName,studioAddr)R2(title,year,length,film

30、Type,studioName)例3.30R(title,year,studioName,president,presAddr)FD=titleyearstudioName,studioNamepresident,presidentpresAddrKey=title,yearstudioNamepresident违反BCNF范式studioNamepresidentpresAddr,所以分解为R1(studioName,president,presAddr)FD=studioNamepresident,presidentpresAddrR2(title,year,studioName)R1仍然

31、违反BCNF,进一步分解为R11(studioName,president),R12(president,presAddr)从分解中恢复信息遵循前面的分解规则,则可以经过连接运算恢复原来的关系。-书上有简单的说明(略,简单了解)单纯从满足BCNF范式的角度,应该分解成二元关系,但是分解成二元关系后可能无法恢复信息。例3.31说明不遵循前面的分解规则,分解出的关系可能不能恢复原始的关系。R(A,B,C)分解成R1(A,B)和R2(B,C),如下:(不存在FD:BC)恢复后的关系为:第三范式第三范式(3NF)例3.32(p67-68)说明了分解成BCNF范式,恢复时可能无法恢复原来的函数依赖放宽B

32、CNF范式的条件,形成3NF范式。3NF范式的定义:若在关系R中存在非平凡函数依赖A1A2AnB且要么A1,A2,An是超键,要么B属于某个键(是主属性),则认为R属于3NF范式。一个关系模式总是可以无信息丢失地分解成3NF,并且原关系中的FD仍然存在于分解后的多个关系中。但只分解到3NF会产生冗余。多值依赖及多值依赖及4NF4NF范式范式例3.33(p70)说明满足BCNF范式,但是仍然存在冗余多值依赖的定义(p70)例3.34namestreetcity多值依赖的推论:平凡依赖规则传递规则结合(合并)规则(但不满足分解规则,见p71例3.35)函数依赖也是多值依赖(特例)互补规则(见例3.36)什么是非平凡的多值依赖(p72)4NF范式的定义(p72)例3.37(p73)判断是否满足4NF分解成4NF范式例3.38(p73)范式之间的关系范式之间的关系1NF2NF(不存在非平凡函数依赖的左边是键的真子集这样的情况)3NFBCNF4NF

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号