如果函数依赖集F满足下列条件,则称F为最小函数依赖集或最小覆盖。
函数解法
求解最小函数依赖集分三步:
1.将F中的所有依赖右边化为单一元素
2.去掉F中的所有依赖左边的冗余属性.
3.去掉F中所有冗余依赖关系.
函数例题
F={abd->e,ab->g,b->f,c->j,cj->i,g->h}
1.将F中的所有依赖右边化为单一元素
此题F={abd->e,ab->g,b->f,c->j,cj->i,g->h};已经满足
2.去掉F中的所有依赖左边的冗余属性.
做法是属性中去掉其中的一个,看看是否依然可以推导
此题:abd->e,去掉a,则(bd)+不含e,故不能去掉,同理b,d都不是冗余属性
ab->g,也没有
cj->i,因为c+={c,j,i}其中包含i所以j是冗余的.cj->i将成为c->i
F={abd->e,ab->g,b->f,c->j,c->i,g->h};
3.去掉F中所有冗余依赖关系.
做法为从F中去掉某关系,如去掉(X->Y),然后在F中求X+,如果Y在X+中,则表明x->是多余的.需要去掉.
此题如果F去掉abd->e,F将等于{ab->g,b->f,c->j,c->i,g->h},而(abd)+={a,d,b,f,g,h},其中不包含e.所以不是多余的.
同理(ab)+={a,b,f}也不包含g,故不是多余的.
b+={b}不多余,c+={c,i}不多余.
c->i,g->h不多余.
故都不能去掉.
所以所求最小函数依赖集为 F={abd->e,ab->g,b->f,c->j,c->i,g->h}.