版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库系统原理AnIntroductiontoDatabaseSystem第六章关系数据理论第六章关系数据理论6.1数据依赖6.2规范化6.3数据依赖的公理系统6.4模式的分解6.4模式的分解把低一级的关系模式分解为若干个高一级的关系模式的方法并不是唯一的只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义模式的分解(续)定义6.16关系模式R<U,F>的一个分解:ρ={R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>}U=U1∪U2∪…∪Un,且不存在Ui
Uj,Fi为F在Ui上的投影定义6.17函数依赖集合{X→Y|X→Y
F+∧XY
Ui}的一个覆盖Fi
叫作F在属性Ui上的投影m模式的分解(续)例:SL(Sno,Sdept,Sloc)F={Sno→Sdept,Sdept→Sloc,Sno→Sloc}SL∈2NF存在插入异常、删除异常、冗余度大和修改复杂等问题分解方法可以有多种模式的分解(续)SL──────────────────Sno Sdept Sloc──────────────────95001CSA95002ISB95003MAC95004ISB95005 PH B──────────────────模式的分解(续)1.SL分解为下面三个关系模式:SN(Sno)SD(Sdept)SO(Sloc)分解后的关系为:
SN──────SD──────SO──────SnoSdeptSloc
──────────────────95001CSA95002ISB95003MAC95004PH─────95005────────────模式的分解(续) 分解后的数据库丢失了许多信息例如无法查询95001学生所在系或所在宿舍。如果分解后的关系可以通过自然连接恢复为原来的关系,那么这种分解就没有丢失信息模式的分解(续)2.SL分解为下面二个关系模式:NL(Sno,Sloc)DL(Sdept,Sloc)分解后的关系为:
NL────────────DL────────────SnoSlocSdeptSloc
────────────────────────95001A CSA95002B ISB95003C MAC95004B PHB95005B──────────────────────模式的分解(续)NLDL─────────────SnoSlocSdept─────────────95001ACS95002BIS95002BPH95003CMA95004BIS95004BPH95005BIS95005BPH模式的分解(续) NLDL比原来的SL关系多了3个元组
无法知道95002、95004、95005究竟是哪个系的学生
元组增加了,信息丢失了第三种分解方法3.将SL分解为下面二个关系模式:
ND(Sno,Sdept)NL(Sno,Sloc)分解后的关系为:
模式的分解(续)ND────────────NL──────────SnoSdeptSnoSloc
──────────────────────95001CS95001A95002IS95002B95003MA95003C95004IS95004B95005PH95005B
───────────────────────模式的分解(续)NDNL──────────────SnoSdeptSloc──────────────
95001CSA95002ISB95003MAC95004CSA95005PHB──────────────与SL关系一样,因此没有丢失信息关系模式分解的标准三种模式分解的等价定义⒈分解具有无损连接性⒉分解要保持函数依赖⒊分解既要保持函数依赖,又要具有无损连接性具有无损连接性的模式分解关系模式R<U,F>的一个分解ρ={R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>}若R与R1、R2、…、Rn自然连接的结果相等,则称关系模式R的这个分解ρ具有无损连接性(Losslessjoin)具有无损连接性的分解保证不丢失信息无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题模式的分解(续)
第三种分解方法具有无损连接性
问题:这种分解方法没有保持原关系中的函数依赖SL中的函数依赖Sdept→Sloc没有投影到关系模式ND、NL上保持函数依赖的模式分解设关系模式R<U,F>被分解为若干个关系模式R1<U1,F1>,R2<U2,F2>,…,Rn<Un,Fn>(其中U=U1∪U2∪…∪Un,且不存在UiUj,Fi为F在Ui上的投影),若F所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖Fi所逻辑蕴含,则称关系模式R的这个分解是保持函数依赖的(Preservedependency)。第四种分解方法将SL分解为下面二个关系模式:ND(Sno,Sdept)DL(Sdept,Sloc)这种分解方法就保持了函数依赖。模式的分解(续)如果一个分解具有无损连接性,则它能够保证不丢失信息。如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况。分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖。同样,保持函数依赖的分解也不一定具有无损连接性。模式的分解(续)1.SL分解为下面三个关系模式:SN(Sno)SD(Sdept)SO(Sloc)2.SL分解为下面二个关系模式:NL(Sno,Sloc)DL(Sdept,Sloc)3.将SL分解为下面二个关系模式:ND(Sno,Sdept)NL(Sno,Sloc)4.将SL分解为下面二个关系模式:ND(Sno,Sdept)DL(Sdept,Sloc)模式的分解(续)第一种分解方法既不具有无损连接性,也未保持函数依赖,它不是原关系模式的一个等价分解第二种分解方法未保持了函数依赖,不具有无损连接性第三种分解方法具有无损连接性,但未持函数依赖第四种分解方法既具有无损连接性,又保持了函数依赖模式分解的定义设p={R1<U1,F1>,…,RK<UK,FK>}是R<U,F>的一个分解,r是R<U,F>的一个关系。定义mp(r)=πRi(r)Mp(r)是r在p中各关系模式上投影的连接ri=πRi(r)={t.Ui|tr}i=1k模式的分解(续)引理6.4设R<U,F>是一个关系模式,p={R1<U1,F1>,R2<U2,F2>,…,Rk<Uk,Fk>}是R的一个分解,r是R的一个关系,则(1)r
mp(r)(2)若s=mp(r),则πRi(s)=ri(3)mp(
mp(r))=mp(r)第一条说明r在p上的投影连接映射后的元组只会膨胀,不会变少。第二条说明直接投影的结果与先拆开来再连接再投影的结果一致。第三条说明无论进行多少次分解后,再连接的结果都是一致的。结论告诉我们,一个实例经过投影,连接之后,其结果可能产生元组膨胀,即元组增多,本节开头部分的引例恰好也说明了这个事实。我们并不希望类似的情况发生,因为它在多个表进行连接操作时出现了本身不存在的元组,产生了数据异常,这对保持数据的正确性是有害的。因此,我们需要对表间连接的情况进行分析,以便降低产生数据异常的可能性。为此,我们先引入以下的概念。无损分解的定义定义6.18p={R1<U1,F1>,R2<U2,F2>,…,Rk<Uk,Fk>}是R<U,F>的一个分解若对R中的任何一个关系r均有r=mp(r)成立,则称分解p具有无损连接性。无损分解的判定算法算法6.2判断一个分解的无损连接性
设p={R1<U1,F1>,R2<U2,F2>,…,Rk<Uk,Fk>}是R<U,F>的一个分解,U={A1,A2,…,An},F={FD1,FD1,…,FDp}1.建立一个n列k行的表,每列对应一个属性,每行对应分解中的一个关系模式。若属性Aj属于Ui,则在j列i行的交叉处天上aj,否则填上bij;无损分解的判定算法2.对应每个FDi(FDi为Xi→Ali)做下列操作:找到Xi所对应的列中具有相同符号的那些行。考察这些行的li列,若其中有ali则全部改为ali;否则全部改为bmli;m是这些行的行号最小值如在某次更改之后,有一行成为a1,a2,…,an,则算法终止,P具有无损连接性,否则P不具有无损连接性3.比较扫描前后,表有无变化,如有变化,则返回第2步,否则算法终止分解示例SL(Sno,Sdept,Sloc)F={Sno→Sdept,Sdept→Sloc,Sno→Sloc}2.SL分解为下面二个关系模式:NL(Sno,Sloc)DL(Sdept,Sloc)
4.将SL分解为下面二个关系模式:
ND(Sno,Sdept)DL(Sdept,Sloc)
F1={Sno→Sloc}F2={Sdept→Sloc}F1={Sno→Sloc}F2={Sno→Sloc}分解示例例:已知关系模式R<U,F>,其中
U={A,B,C,D,E};
F={AB→C,C→D,D→E}。R的一个分解为R1(A,B,C),R2(C,D),R3(D,E).判断分解是否是无损连接。保持函数依赖分解的定义定义6.19p={R1<U1,F1>,R2<U2,F2>,…,Rk<Uk,Fk>}是R<U,F>的一个分解若F+=(UFi)+则分解p保持函数依赖i=1i=k引理6.3F+=G+的充分必要条件是F
G+,和G
F+第六章关系数据理论6.4.1模式分解的定义6.4.2分解的无损连接性和函数依赖性6.4.3模式分解的算法
模式分解的事实若要求分解保持函数依赖,则分解可以达到3NF,但不一定达到BCNF;若要求分解既要保持函数依赖,又要保持无损连接则分解可以达到3NF,但不一定达到BCNF;若要求分解保持无损连接,那一定能达到4NF;第六章关系数据理论模式分解算法[算法6.3](合成法)转换为3NF的保持函数依赖的分解。(1)对R〈U,F〉中的函数依赖集F进行“极小化处理”(处理后得到的依赖集仍记为F)(2)找出不在F中出现的属性,把这样的的属性构成一个关系模式。把这些属性从U中去掉,剩余的属性仍记为U。(3)若有X→A∈F,且XA=U,则ρ={R},算法终止。(4)否则,对F按具有相同左部的原则分组(假定分为k组),每一组函数依赖,所涉及的全部属性集Ui。若Ui≤
Uj(i≠j)就去掉Ui。那么Ri一定不是最小覆盖,与第一步整个F是最小覆盖相矛盾举例U={Sno,Sdept,Mname,Cname,Grade}属性组U上的一组函数依赖F:
F={Sno→Sdept,Sdept→Mname,Sno→Mname,(Sno,Cname)→G
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论