mysql函数依赖分解律怎么推导_数据库学习笔记_10_函数依赖详解——函数依赖公理及其推得规律和属性闭包...

首先引入armstrong‘s axioms,

反射律(reflexivity rule)对于任何为LA(a)子集的LA(b)来说,LA(a)->LA(b)恒成立

增加律(argumentation rule)若LA(a)->LA(b)成立,则LA(a)LA(y)->LA(b)LA(y)成立

转移律(transitivity rule)若有LA(a)->LA(b),LA(b)->LA(c),则有LA(a)->LA(c)

由以上规则我们可以推导出一下规则

合并律(union rule)若有LA(a)->LA(b),LA(a)->LA(c),则有LA(a)->LA(b)LA(c);

proof:根据公理,可化为LA(a)->LA(b)LA(a),LA(a)LA(b)->LA(c)LA(b),转移率可得结果。

拆分律(decomposition rule)若有LA(a)->LA(b)LA(c),则LA(a)->LA(b),LA(a)->LA(c)成立

proof:根据公理,LA(b)LA(c)->LA(b),LA(b)LA(c)->LA(c)…接下来你们懂的。

伪传递律,if LA(a)->LA(b),and LA(bc)->LA(d),则LA(a)LA(c)->LA(d);

求依赖闭包比较蠢得办法是列举一个函数依赖集中所有的二元组看是否能适用任何以上操作,若有则将结果加入该函数依赖集留待下一轮运算,直到该运算无法算出任何结果为止。

下面介绍一下属性闭包:

对于一个属性集LA(a),在R中存在F,是的LA(a)中的属性通过F可以得出能被LA(a)支配的属性集合LA(a)+ ,其计算方法为,

set result=LA(a);

while(result do not change)

for(all the functional dependency f LA(x)->LA(y))

if(x为result子集)  result+=y;

对于属性闭包的应用:

为了测定a是否为超键,可以求出a+若其为R,则说明a为超键,否则就不是。

可以检验函数依赖是否存在,例如我想检查LA(a)->LA(b),则求出LA(a)+ 如果LA(b)为LA(a)+子集,则说明其存在,否则则不存在。

我们也可以通过求得每一个存在于R里的属性集LA(a)的LA(a)+然后把所有为LA(a)+ 的子集的集合S组合成为LA(a)->S加入到F+里,这是一个求得函数依赖闭包的替换方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值