最小函数依赖集Fm的定义,求法以及举例

最小函数依赖集Fm的定义,求法以及举例

定义

如果函数依赖集F满足以下三个条件,则称F为最小函数依赖集,记作Fm

①F中每个函数依赖的右部都是单属性,即右部最简化。
②对于F中任一函数依赖X -> A 和X的真子集X',(F - (X - A)) ∪ (X' -> A)
与F都不等价,即左部无多余属性。
③对于F中任一函数依赖X -> A,F - {X -> A}与F都不等价,即无多余函数依赖。

求法

输入:一个函数依赖集F。
输出:F的一个等价的最小函数依赖集Fm
步骤:
(1)用分解规则,使F中的每个函数依赖的右部仅含单属性。此步为等价分解。
(2)去掉各依赖左部多余的属性。一个一个地检查左部非单个属性地函数依赖。即XY -> A ,判断Y是否多余,则在分解后地F求X的属性闭包X+,若A包含于X+ ,则Y是多余的。此步为等价消属性。
(3)去掉多余的函数依赖。逐一检查上步结果F的各函数依赖X -> A,并将X -> A从F中去掉,然后在剩下的F中去求X+,若A包含于X+,则X -> A多余。依次做下去,直到找不到冗余的函数依赖。此步为等价消依赖。

举例

设有函数依赖集 F = {AB -> CE, A -> C, GP -> B, EP -> A, CDE -> P, HB -> P, D -> HG, ABC -> PG}, 求与 F 等价的最小函数依赖集。

解:
①分解D->HG为D->H、D->G,分解AB->CE为AB->C、AB->E,分解ABC->PG为ABC->P、ABC->G,得到F={AB->C, AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

②判断AB -> C中B是否冗余:由于存在A -> C,故B冗余,F={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

经判断其余左部均无多余属性,进行到下一步。(此处 ABC -> P 和 ABC -> G 可简化)

③判断AB->E是否冗余, F’ ={A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}
AB+ = ABCPG, AB->E不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

判断A->C是否冗余, F’ ={AB->E, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}
A+ = A,A->C不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

判断GP->B是否冗余, F’ ={AB->E, A->C, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}
GP+ = GP, GP->B不冗余, **F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G} **

判断EP->A是否冗余, F’ = {AB->E, A->C, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}
EP+ = EP , EP->A不冗余, **F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G} **

判断CDE->P是否冗余, F’ = {AB->E, A->C, GP->B, EP->A, HB->P, D->H, D->G, ABC->P, ABC->G}
CDE+ = CDEHG, CDE->P不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

判断HB->P是否冗余, F’ ={AB->E, A->C, GP->B, EP->A, CDE->P, D->H, D->G, ABC->P, ABC->G}
HB+ = HB, HB->P不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

判断D->H是否冗余, F’ ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->G, ABC->P, ABC->G}
D+ = DG, D->H不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

判断D->G是否冗余, F’ ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, ABC->P, ABC->G}
D+ = DH, D->G不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

判断ABC->G是否冗余, F’ ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P}
ABC+ = ABCEP, ABC->G不冗余, F ={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

Fm={AB->E, A->C, GP->B, EP->A, CDE->P, HB->P, D->H, D->G, ABC->P, ABC->G}

分解具有无损连接性和依赖保持性的3NF的方法和例子

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值