资源描述:
《数据库,模式的分解,无损连接性,教案.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、3.9(关系)模式的分解分解的定义:关系模式R的一个分解是指ρ={R1,R2,…,Rn}其中U=U1∪U2∪…∪Un,并且不存在UiUj,1≤i,j≤n,Fi是F在Ui上的投影。函数依赖集合{X→Y
2、X→Y∈F+∧XYUi}的一个覆盖(等价)Fi叫做F在属性Ui上的投影。3.9模式的分解3.9.1关系模式分解的标准把低一级的关系模式分解为若干个高一级的关系模式的方法并不是唯一的只有能够保证分解后的关系模式与原关系模式等价,分解方法才有意义“等价”概念的三种定义:(1)分解具有无损连接性。(2)分解要保持函数依赖性。(3)
3、分解既要保持函数依赖,又要具有无损连接性。3.9.2无损分解无损分解定义:关系模式R的一个分解ρ={R1,R2,…,Rn},对于R的任一关系r,都有r为其在各Ui(1=1,…,n)上的投影的(自然)连接,即r=πU1(r)⋈πU2(r)⋈…⋈πUn(r),则称关系模式R的这个分解ρ具有无损连接性(Losslessjoin)。具有无损连接性的分解保证不丢失信息。无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题。3.9.2无损分解(续)例:S-L(Sno,Sdept,Sloc)F={Sno→Sdept,Sdep
4、t→Sloc,Sno→Sloc}S-L∈2NF,分解方法可以有多种:1.S-L分解为三个关系模式:SN(Sno),SD(Sdept),SL(Sloc)2.SL分解为下面二个关系模式:NL(Sno,Sloc),DL(Sdept,Sloc)3.将SL分解为下面二个关系模式:ND(Sno,Sdept),NL(Sno,Sloc)3.9.2无损分解(续)第3种分解方法具有无损连接性。问题:(1)没有保持原关系中的函数依赖,即S-L中的函数依赖Sdept→Sloc没有投影到关系模式ND、NL上。(2)存在冗余和操作异常。3.9.2无损分解(续)4.将SL分解为下面二个关系模式:ND(Sn
5、o,Sdept),DL(Sdept,Sloc)该分解保持了函数依赖(且具有无损连接性)。3.9.3保持函数依赖的模式分解定义:设关系模式R被分解为若干个关系模式R1,R2,…,Rn其中U=U1∪U2∪…∪Un,且不存在UiUj,Fi为F在Ui上的投影),若F所逻辑蕴含的函数依赖一定也由分解得到的某个关系模式中的函数依赖Fi所逻辑蕴含,则称关系模式R的这个分解是保持函数依赖的(Preservedependency)。3.9.3保持函数依赖的模式分解(续)例如,将S-L(Sno,Sdept,Sloc)F={Sno→Sdept,
6、Sdept→Sloc,Sno→Sloc}分解为下面二个关系模式(第四种分解):ND(Sno,Sdept),DL(Sdept,Sloc)该分解保持了函数依赖(具有无损连接性)。3.9.3保持函数依赖的模式分解(续)如果一个分解具有无损连接性,则它能够保证不丢失信息。如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况。分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函数依赖;同样,保持函数依赖的分解也不一定具有无损连接性。3.9.3保持函数依赖的模式分解(续)对于关系模式S-L:第1种分解方法既不具有无损连接性,也未保持函数依赖
7、。第2种分解方法未保持函数依赖,也不具有无损连接性。第3种分解方法具有无损连接性,但未保持函数依赖。第4种分解方法既具有无损连接性,又保持了函数依赖。3.9.4模式分解算法算法1判别一个二元分解的无损连接性算法2判别一个分解的无损连接性算法3(合成法)转换为3NF的保持函数依赖的分解。算法4转换为3NF既有无损连接性又保持函数依赖的分解。算法5(分解法)转换为BCNF的无损连接分解算法6达到4NF的具有无损连接性的分解。算法1判别一个二元分解的无损连接性。若F+中至少存在如下函数依赖中的一个:(1)(U1∩U2)→U1-U2(2)(U1∩U2)→U2-U1则ρ={R1
8、,R2}是R的无损分解。反之也成立。如:模式S-L(Sno,Sdept,Sloc)分解为2个模式:ND(Sno,Sdept),NL(Sno,Sloc)则是无损分解。3.9.4模式分解算法算法2判别一个分解的无损连接性设ρ={R1,R2,…,Rk}是R的一个分解,U={A1,…,An}①构造一张k行n列的表格。每列对应一个属性Aj,每行对应一个模式Ri。如果Aj属于Ui,那么在表格的第i行第j列处填上符号aj,否则填上bij。算法2判别一个分解的