模式分解
例1:U=(A,B,C,D,E,G) F={BG->C,BD->E,DG->C,ADG->BC,AG->B,B->D} 若R不是3NF,将R分解为无损且保持函数依赖的3NF。
解:
先要求出最小依赖集,由前面,候选键为AG,Fm={B->E,DG->C,AG->B,B->D}
第一步:左部相同原则分组:对Fm按具有相同左部的原则分组,然后左部∪右部。
U1=B∪DE=BDE U2=DGC U3=AGB
第二步:看有没有包含关系,有的话,合并吸收。
将R分解为ρ={ R1({B,D,E},{B->E,B->D}),
R2({C,D,G},{DG->C}),
R3({A,B,G},{AG->B}) }
第三步:看分的属性组里有没有包含码,包含了,就是无损且保持函数依赖的3NF,没有包含,就不是无损且保持函数依赖的3NF,就加一个分组,把码加进去。
因为候选键AG在U3中,所以所求分解ρ具有无损连接性,并保持函数依赖,且每个子模式为3NF。
例2:U=(A,B,C,D,E) F={AB->C,C->B,D->E,D->C} 若R不是3NF,将R分解为无损且保持函数依赖的3NF。
解:
求得,码是AD 属于1NF
第一步:U1=ABC U2=BC U3=DCE
第二步:
将R分解为ρ={ R1({A,B,C},{AB->C}),
R2({B,C},{C->B}),
R3({D,E},{D->E,D->C}) }
合并吸收:
ρ={ R1({A,B,C},{AB->C,C->B}),
R2({D,E},{D->E,D->C}) }
第三步:不是无损连接,添加码。
R3({A,D},{∅})
所以ρ={ R1({A,B,C},{AB->C,C->B}),
R2({D,E},{D->E,D->C}),
R3({A,D},{∅}) }
版权声明:本文为博主原创文章,未经博主允许不得转载