数据库模式分解和检验

模式分解

概念

将关系R分解为R1,R2…RN
无损链接分解:将R1,R2…RN进行自然连接,数据内容与R相同。
保持函数依赖分解:分解后的关系模式的函数依赖与R的函数依赖等价。
若要保持函数依赖,则不一定能分解成BCNF。
所有关系模式一定能够分解成保持函数依赖和无损分解3NF

分解为3NF

无损链接分解

计算给出的函数依赖的最小依赖集Fmin,将所有左边相同的元素的函数依赖进行和并如:A->B,A->C作为一个关系模式R1={ABC},此时的分解为无损分解。
如:关系模式R,有U={A,B,C,D,E},F={BE->C,DE->C,DAE->BC,AE->B,B->D}
计算最小依赖集
若依赖右边有超过一个属性,将依赖分解为右边只有一个属性
DAE->BC-------DAE->B,DAE->C。F={BE->C,DE->C,DAE->B,DAE->C,AE->B,B->D}
对左边有多个属性的依赖,查看其左边属性的子集是否有依赖决定右边,若有:删去该依赖。
DAE->B,AE->B, DAE->C,DE->C可以将DAE->B,DAE->C从依赖集中删去。F={BE->C,DE->C,DAE->B ,DAE->C ,AE->B,B->D}
然后遍历每个依赖,求左边属性的闭包不计算本依赖若闭包含有右边属性将此依赖划掉,否则保留此依赖。
对BE->C,{BE}+={B,E,D,C},划掉BE->C,F={BE->C ,DE->C,DAE->B ,DAE->C ,AE->B,B->D}
对DE->C,{DE}+={DE},保留DE->C
对AE->B,{AE}+={A,E},保留AE->B
对B->D,{B}+={B}, 保留B->D
最终Fmin={DE->C,AE->B,B->D}
将每个函数依赖分解为一个关系模式,左边属性相同的合并。
R = R1(DEC) , R2(AEB) , R3(BD)
其主键为{AE}

保持依赖分解

判断无损链接分解的关系模式是否含有主键AE,若不含有,则将主键作为关系模式添加进去。若含有则不需要添加,本身就是无损链接分解和保持依赖分解。
对于上例,R2(AEB)含有主键AE,所以无需添加。若不含有,添加R4(AE)

分解为BCNF

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值