第四章 关系数据理论

第一节 第二节 第三节 第四节

第四节 模式的分解
    把低一级的关系模式分解为若干个高一级的关系模式的方法并不是唯一的。只有能够保证分解后的关系
模式与原关系模式等价,分解方法才有意义。关系模式分解的标准, 三种模式分解的等价定义:分解具有无
损连接性;分解要保持函数依赖;分解既要保持函数依赖,又要具有无损连接性。
    定义 关系模式R<U,F>的一个分解:
        ρ={ R1<U1,F1>, R2<U2,F2>,…, Rn<Un,Fn> }
        U=U1∪U2∪…∪Un, 且不存在Ui Uj, Fi 为 F在 Ui 上的投影。
    定义 函数依赖集合{X→Y | X→Y ? F+∧XY ?Ui} 的一个覆盖 Fi 叫作 F 在属性 Ui 上的投影,具有
无损连接性的模式分解关系模式R<U,F>的一个分解 ρ={ R1<U1,F1>,R2<U2,F2>, …,Rn<Un,Fn>},若R与R1、
R2、…、Rn自然连接的结果相等,则称关系模式R的这个分解ρ具有无损连接性(Lossless join)。具有无
损连接性的分解保证不丢失信息。无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问
题。第3种分解方法具有无损连接性,此分解方法没有保持原关系中的函数依赖。
    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的这个分解是保持函数依赖的(Preserve dependency)。
    将SL分解为下面二个关系模式:
        ND(Sno, Sdept)、DL(Sdept, Sloc),这种分解方法就保持了函数依赖。
    若分解具有无损连接性,则能够保证不丢失信息。若分解保持函数依赖,则可减轻或解决各种异常情况,
分解具有无损连接性和分解保持函数依赖是两个互相独立的标准。具有无损连接性的分解不一定能够保持函
数依赖。保持函数依赖的分解也不一定具有无损连接性。
    第1种分解方法,既不具有无损连接性,也未保持函数依赖,它不是原关系模式的一个等价分解
    第2种分解方法,保持了函数依赖,但不具有无损连接性
    第3种分解方法,具有无损连接性,但未持函数依赖
    第4种分解方法,既具有无损连接性,又保持了函数依赖
    分解算法:
    算法2 判别一个分解的无损连接性;
    算法3 (合成法)转换为3NF的保持函数依赖的分解;
    算法4 转换为3NF既有无损连接性又保持函数依赖的分解;
    算法5 转换为BCNF的无损连接分解(分解法);
    算法6 达到4NF的具有无损连接性的分。
    解P196 图5 .11。若要求分解具有无损连接性,模式分解一定能够达到4NF。若要求分解保持函数依赖,
模式分解一定能够达到3NF,但不一定能够达到BCNF。若要求分解既具有无损连接性,又保持函数依赖,则模
式分解一定能够达到3NF,但不一定能够达到BCNF。规范化理论为数据库设计提供了理论的指南和工具,也仅
仅是指南和工具。并不是规范化程度越高,模式就越好,必须结合应用环境和现实世界的具体情况合理地选
择数据库模式。

吉林大学网络教育学院 版权所有