数据库 之 极小化的原理

极小函数依赖集求解方法

每一个函数依赖集F均等价于一个极小函数依赖集Fm。称Fm为F的最小依赖集。

  1. 逐一检查F中各函数依赖FDi:X->Y,若Y=A1A2 Ak,k>=2,则用{X->Aj|j = 1,2, ,k}来取代 X -> Y
  2. 逐一检查F中各函数依赖FDi:X->A,令G = F -{X -> A},若A ∈ XG+,则从F中去掉此函数依赖(因为F与G等价的充要条件A)
  3. 逐一检查F中各函数依赖FDi:X->A,设X = B1B2 Bm,逐一考查Bi(i =1,2, ,m),若A ∈ (X - Bi)F+,则以X - Bi 取代X(因为F与F-{X->A}∪{Z->A}等价的充要条件是A∈ZF+,其中Z = X - Bi)。
###以上是极小化的算法思想,下面举一个例子进行详细的解释 F = {B -> CD,C -> D,DE -> C,CE -> AB,E -> C},求其极小依赖集。 1、分解右部为多属性的函数依赖得:F={B -> C,B -> D,C -> D,DE -> C,CE -> A,CE -> B,E -> C} 2、去多余函数依赖 考查B -> C:G = F-{B->C},因为 C 不属于 (B)的G的闭包{BD},所以不能去掉B->C。 考查B->D:G=F-{B->D},因为D ∈(B)G+={BCD},所以应该去掉B->D。 F = {B->C,C->D,DE->C,CE->A,CE->B,E->C} 考查C->D:G=F-{C->D},因为D 不属于(C)G+ = {C},所以不能去掉C ->D。 考查DE ->C:G = F-{DE->C},因为C ∈ (DE)G+={DECAB},所以应该去掉 B->D。 F={B->C,C->D,CE->A,CE->B,E->C} 考查CE -> A:G = F -{ CE->A },因为 A 不属于 (CE)G+ ={CEBD},所以不能去掉 CE ->A. 考查CE->B:G = F-{CE->B},因为B 不属于(CE)G+ ={CEAD},所以不能去掉CE->B。 考察E -> C:G =F - {E->C},因为 C不属于(E)G+={E},所以不能去掉CE->C. 于是F = {B->C,C->D,CE->A,CE->B,E->C} 3、去左部多余属性 考查CE->A。(CE)F+={ABCDE} 假设E是多余的,C->A代替CE->A,(C)F+(C的F闭包)={ADC}。因为(C)F+的闭包≠(CE)F+的闭包,所以E不是多余的,不能去掉。 假设C是多余的,E->A代替CE->A,(E)F+(E的F闭包)={ACBDE},因为(E)F+的闭包=(CE)F+的闭包,所以C是多余的 之后的F ={B->C,C->D,E->A,CE->B,E->C} 考查CE->B,(CE)F+={ACBDE} 假设E是多于的,C->B代替CE->B,(C)F+={ADC}。因为(C)F+的闭包≠(CE)F+的闭包,所以E不是多余的,不能去掉。 假设C是多余的,E->A代替CE->A,(E)F+={ACBDE},因为(E)F+的闭包=(CE)F+的闭包,所以C是多余的 之后的F = {B->C,C->D,E->A,E->B,E->C} 所以根据定理,求得的F位与函数依赖集等价的极小函数依赖集。
原文地址:https://www.cnblogs.com/gxcstyle/p/6994767.html