6.4 模式的分解

模式的分解

6.4.1 模式分解的三个定义
6.4.2 分解的无损连接性和保持函数依赖行
6.4.3 模式分解的算法

➢ 关系模式的规范化过程是通过对关系模式的分解来实现的
➢ 什么是模式分解
定义6.16 R<U, F>的一个分解是指:ρ = { R 1 R_1 R1< U 1 U_1 U1, F 1 F_1 F1>,…, R n R_n Rn< U n U_n Un, F n F_n Fn},其中U= U 1 U_1 U1 U 2 U_2 U2∪…∪ U n U_n Un,并且没有 U i U_i Ui U j U_j Uj,1≤i, j≤n, F i F_i Fi是F在 U i U_i Ui上的投影
相应地将R存储在二维表r中的数据分散到二维表 r 1 r_1 r1, r 2 r_2 r2,…, r n r_n rn中去,其中 r i r_i ri是r在属性集 U i U_i Ui上的投影
➢ 把低一级的关系模式分解为若干个高一级的关系模式并不是唯一的
➢ 在这些分解方法中,只有能够保证分解后的关系模式与原关系模式等价的方法才有意义
➢ 从不同的角度去观察问题,对“等价”的概念行成了3中不同的定义:
        ● 分解具有无损连接性(lossless join)
        ● 分解要保持函数依赖(preserve functional dependency)
        ● 分解既要保持函数依赖,又要具有无损连接性
➢ 这三个定义是实行模式分解的三条准则
[例] 对于关系模式S-L(Sno, Sdept, Sloc),S-L中有下列函数依赖
Sno→Sdept,Sdept→Sloc,Sno ⟶ 传 递 \stackrel{传递}{\longrightarrow} Sloc
➢ 已知S-L∈2NF,该关系模式存在非主属性对码的传递函数依赖
➢ 存在插入异常、删除异常、数据冗余度大和修改复杂的问题。需要分解该关系模式,使成为更高范式的关系模式
➢ 下面给出集中不同的分解情况,进行分析,引出模式分解的3个定义
➢ 第一种分解情况
将S-L分解为下面三个关系模式:SN(Sno)、SD(Sdept)、SO(Sloc)
➢ SN、SD、SO都是规范化程度很高的关系模式
➢ 但分解后的关系模式会丢失许多信息——这种分解是不可取的。丢失了许多信息,丢失了数据之间的联系的信息
➢ 第二种分解情况
将S-L分解为下面两个关系模式:NL(Sno, Sloc)、DL(Sdept, Sloc)
NL⋈DL比原来的S-L关系多了若干个元组
因此我们也无法知道原来的S-L关系究竟有哪些元组,从这个意义上说此分解仍然丢失了信息
➢ 第三种分解情况
将S-L分解为下面两个关系模式:ND(Sno, Sdept)、DL(Sno, Sloc)
第三种分解情况没有丢失信息,称为分解“具有无损连接性”
➢ 但是它存在以下问题:
    ◾ 例如某学生由CS系转到IS系,ND关系的(95001,CS)元组和NL关系(95001,A)元组必须同时进行修改,否则会破坏数据库的一致性
原因:
➢ S-L中的函数依赖Sdept→Sloc既没有投影到关系模式ND上,也没有投影到关系模式NL上
➢ 这种分解没有保持原关系模式中的函数依赖
➢ 第四种分解情况
将S-L分解为下面两个关系模式:ND(Sno, Sdept), Sno→Sdept     DL(Sdept, Sloc), Sdept→Sloc
这种分解保持了函数依赖,称为“具有保持函数依赖性”
这种分解不仅“具有保持函数依赖性”,还“具有无损连接性”

6.4.1 模式分解的三个定义
6.4.2 分解的无损连接性和保持函数依赖行
6.4.3 模式分解的算法

定义6.18
ρ = { R 1 R_1 R1<{ U 1 U_1 U1, { F 1 F_1 F1>,…, R n R_n Rn<{ U n U_n Un, { F n F_n Fn>}是R<U, F>的一个分解,若对R<U, F>的任何一个关系r均有r = r在ρ中各关系模式上投影的自然连接成立,则称分解ρ 具有无损连接性。简称ρ 为无损分解
➢ 只有具有无损连接性的分解才能够保证不丢失信息
➢ 无损连接性不一定能解决插入异常、删除异常、修改复杂、数据冗余等问题。
*算法6.2 判别一个分解的无损连接行
定义6.19
ρ = { R 1 R_1 R1<{ U 1 U_1 U1, { F 1 F_1 F1>,…, R n R_n Rn<{ U n U_n Un, { F n F_n Fn>}是R<U, F>的一个分解,若F所逻辑蕴含的函数依赖一定也为分解后所有的关系模式中的函数依赖 F i F_i Fi所逻辑蕴含,即 F + F^+ F+ = ( F 1 F_1 F1 F 2 F_2 F2∪…∪ F n F_n Fn) +,则称关系模式R的这个分解是保持函数依赖的(Preserve dependency)
➢ 如果一个分解具有无损连接性,则它能够保证不丢失信息。
➢ 如果一个分解保持了函数依赖,则它可以减轻或解决各种异常情况
➢ 分解具有无损连接性和分解保持函数依赖是两个相互独立的标准
    ◾ 具有无损连接性的分解不一定能够保持函数依赖
    ◾ 具有函数依赖的分解也不一定具有无损连接性

6.4.1 模式分解的三个定义
6.4.2 分解的无损连接性和保持函数依赖行
6.4.3 模式分解的算法

➢ 算法6.3 (合成法)转换为3NF的保持函数依赖的分解
➢ 算法6.4 转换为3NF既有无损连接性又保持函数依赖的分解
➢ 算法6.5 (分解法)转换为BCNF的无损连接分解
➢ 算法6.6 达到4NF的具有无损连接性的分解

➢ 按照不同的分解算法,关系模式所能达到的范式是不相同
    ◾ 若要求分解保持函数依赖,那么模式分解一定能够达到3NF,但不一定能够达到BCNF
    ◾ 若要求分解既具有无损连接性,又保持函数依赖,则模式分解一定能够达到3NF,但不一定能够打包BCNF
    ◾ 若要求分解具有无损连接性,那么模式分解一定能够达到4NF

无损连接保持依赖达到的范式
Y3NF,不一定BCNF
YY3NF,不一定BCNF
Y4NF
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值