数据库函数依赖诸问
2013-03-26 20:34 FireFoxPlus 阅读(292) 评论(0) 收藏 举报一.求正则覆盖
1).若有x->y,若y=A1A2A3......An,则用x->Aj(j遍取1到n)取代x->y
2).有X->A,令G=F-{X->A},若有A∈XG+,则X->A冗余
3).有x->y,x=A1A2A3......An,若去掉Aj仍成立,Aj多余
二.对于分解后的关系的判断
1).是否无损?
分解后,用自然链接可以恢复,且若分为R1,R2两个关系,则应有R1∩R2为R1或R2的超码
2).保持依赖
分解后如果为R1,R2两个关系,若原关系F上的每个函数依赖均在R1或R2上成立的话,则为保持依赖
三.向3nf转换
1).先转换为保持依赖的
1.对R<U,F>的函数依赖集F进行极小化(即以上的正则覆盖)
2.找出不在F中出现的属性,将这属性构成一个关系模式,并从U中去掉
3.若有x->A∈F且xA=U则结果ρ{R}算法终止
4.否则,对F按具有相同左部原则进行分组,每组函数依赖Fi所涉及全部属性形成属性集Ui,若Ui⊆Uj(i不等于j),去掉Ui,U=∪Ui(i从1取至k),构成保持依赖分解
2)向1)中结果添加一个主键,构成无损分解
参考笔者自己n年前学习数据库时写的一篇笔记,如有不对之处,请指正。
浙公网安备 33010602011771号