①先拆右邊,假如依賴集f中的右邊項包含不止乙個屬性,那麼將這些項都拆為單個項。例如a->bc,拆分為a->b和a->c
②去除冗餘依賴項,例如a->c和ab->c,那麼就要去除ab->c這個冗餘項
③拆左邊,假如依賴集f中的左邊項包含不止乙個屬性,那麼將這些項中的第乙個屬性先遮住,看剩下的屬性能否推出結果,不行的話就換第二屬性遮住,看剩餘的屬性能否推出結果,以此類推
例題
已知g=,求最小函式依賴集
答:1.先拆右邊
將g中依賴項右邊包含兩個屬性的拆為單個屬性
拆完g=
2.去除冗餘依賴項
訣竅:乙個個試
①先去掉a->b,發現剩餘的沒法推出b,所以a->b不是冗餘項
②以此類推,最後發現g中不存在冗餘項
3.再拆左邊
①第乙個左邊包含兩個屬性的為cd->e,先遮住c,看能否由d->e。首先由a->c可獲得c,那麼c與剩下的d就能推出e,因此c為冗餘屬性;然後再遮住d,看能否由c->e,因為a->b,a->c中都得不到d,因此沒法組成cd->e,所以d不是冗餘項。
經過第一步得出的g暫為
②以此類推,第二個左邊包含兩個屬性的為be->f,先遮住b,看能否由e->f。因為a->b可獲得b,那麼b與剩下的e就能推出f,因此b為冗餘屬性;然後在遮住e,看能否由b->f,因為d->e,那麼be->f,因此e也可以為冗餘屬性。可知最小函式依賴集不止乙個
暫定g為
③同上,最後g為
最小函式依賴集為
求最小函式依賴集
用分解的法則,使f中的任何乙個函式依賴的右部僅含有乙個屬性 去掉多餘的函式依賴 從第乙個函式依賴x y開始將其從f中去掉,然後在剩下的函式依賴中求x的閉包x y1 閉包就是由乙個屬性直接或間接推導出的所有屬性的集合,例如 f 由a可直接得到b和d,間接得到c,則a的閉包就是 看x 是否包含y,若是,...
最小函式依賴集的判斷
1.將f右側全部分解為只有乙個屬性 2.去掉冗餘項 從第乙個函式依賴x y開始,假設將其從f中去掉,在剩下的函式依賴中求x的閉包,看y是屬於x的閉包中。如果屬於,則去掉x y 如果不屬於,則保留。依次掃瞄.3.去掉冗餘屬性 選取左邊屬性個數 1的所有依賴,假設xy a。先將xy a換成y a,判斷a...
求最小函式依賴集的方法
求最小函式依賴集分三步 1.將f中的所有依賴右邊化為單一元素 此題fd 已經滿足 2.去掉f中的所有依賴左邊的冗餘屬性.作法是屬性中去掉其中的乙個,看看是否依然可以推導 此題 abd e,去掉a,則 bd 不含e,故不能去掉,同理b,d都不是冗餘屬性 ab g,也沒有 cj i,因為c 其中包含i所...