判斷函式依賴

2021-08-16 23:48:24 字數 917 閱讀 8598

① 用分解的法則,使f中的任何乙個函式依賴的右部僅含有乙個屬性;

② 去掉多餘的函式依賴:從第乙個函式依賴x→y開始將其從f中去掉,然後在剩下的函式依賴中求x的閉包x+,看x+是否包含y,若是,則去掉x→y;否則不能去掉,依次做下去。直到找不到冗餘的函式依賴;

③ 去掉各依賴左部多餘的屬性。乙個乙個地檢查經過第②步去掉了多餘依賴後的函式依賴左部非單個屬性的依賴。例如xy→a,若要判y為多餘的,則以x→a代替xy→a是否等價?若a屬於(x)+,則y是多餘屬性,可以去掉。

對於求最小函式依賴,首先必須將右屬性單一化,方便接下來的換算。接下來對於左屬性的冗餘判斷和多餘的函式依賴判斷沒有先後順序,不過作為個人來說更習慣先將多餘的函式依賴去掉,之後的判斷多餘的左屬性更快。

已知r(u,f)u=,f=

求r(u,f)的最小函式依賴集

1.左屬性單一化

f=;

2.去掉多餘的依賴

①假設abd->e冗餘,則在

f1= (abd)的閉包為abdgf,其中不包括e

所以abd->e不冗餘

假設ab->g冗餘,則在

f2= (ab)的閉包為abf,其中不包括g

所以ab->g不冗餘

同理如上,將每個依賴判斷一下就能得到

f=

3、判斷左屬性的冗餘

假如abd->e中的a冗餘,則(bd)的閉包為bdf ,不包含e。同理的abd中不冗餘。

cj->i中的c冗餘,則(j)的閉包為j,不包含i;如果j冗餘,則(c)的閉包為cji,包含i。所以j為冗餘,改為c->i。

綜上所得:f=

最小函式依賴集的判斷

1.將f右側全部分解為只有乙個屬性 2.去掉冗餘項 從第乙個函式依賴x y開始,假設將其從f中去掉,在剩下的函式依賴中求x的閉包,看y是屬於x的閉包中。如果屬於,則去掉x y 如果不屬於,則保留。依次掃瞄.3.去掉冗餘屬性 選取左邊屬性個數 1的所有依賴,假設xy a。先將xy a換成y a,判斷a...

函式依賴 多值依賴

一 函式依賴 functional dependency 的概念 函式依賴是資料依賴的一種,它反映屬性或屬性組之間相依存,互相制約的關係,即反映現實世界的約束關係。設r u 是屬性u上的乙個關係模式,x和y均為u 的子集,r為r的任一關係,如果對於r中的任意兩個元組u,v,只要有u x v x 就有...

函式依賴 FD

函式依賴 fd 1 函式依賴的定義 領會 設有關係模式r a1,a2,an 或簡記為r u x,y是u的子集,r是 r的任一具體關係,如果對r的任意兩個元組t1,t2,由t1 x t2 x 導致t1 y t2 y 則稱x函式決 定y,或y函式依賴於x,記為x y。x y為模式r的乙個函式依賴。其實函...