方法一:無損連線定理
關係模式r(u,f)的乙個分解,ρ=具有無損連線的充分必要條件是:
u1∩u2→u1-u2 €f+ 或u1∩u2→u2 -u1€f+
方法二:演算法
ρ=是關係模式r的乙個分解,u=,f=,並設f是乙個最小依賴集,記fdi為xi→alj,其步驟如下:
① 建立一張n列k行的表,每一列對應乙個屬性,每一行對應分解中的乙個關係模式。若屬性aj ui,則在j列i行上真上aj,否則填上bij;
② 對於每乙個fdi做如下操作:找到xi所對應的列中具有相同符號的那些行。考察這些行中li列的元素,若其中有aj,則全部改為aj,否則全部改為bmli,m是這些行的行號最小值。
如果在某次更改後,有一行成為:a1,a2,...,an,則演算法終止。且分解ρ具有無損連線性,否則不具有無損連線性。
對f中p個fd逐一進行一次這樣的處理,稱為對f的一次掃瞄。
③ 比較掃瞄前後,表有無變化,如有變化,則返回第② 步,否則演算法終止。如果發生迴圈,那麼前次掃瞄至少應使該錶減少乙個符號,表中符號有限,因此,迴圈必然終止。
舉例1:已知r,u=,f=,如下的兩個分解:
① ρ1=
② ρ2=
判斷這兩個分解是否具有無損連線性。
①因為ab∩bc=b,ab-bc=a,bc-ab=c
所以b→a ¢f+,b→c ¢ f+
故ρ1是有損連線。
② 因為ab∩ac=a,ab-ac=b,ac-ab=c
所以a→b €f+,a→c ¢f+
故ρ2是無損連線。
舉例2:已知r,u=,f=,r的乙個分解為r1(ad),r2(ab),r3(be),r4(cde),r5(ae),判斷這個分解是否具有無損連線性。
① 構造乙個初始的二維表,若「屬性」屬於「模式」中的屬性,則填aj,否則填bij
② 根據a→c,對上表進行處理,由於屬性列a上第1、2、5行相同均為a1,所以將屬性列c上的b13、b23、b53改為同乙個符號b13(取行號最小值)。
③ 根據b→c,對上表進行處理,由於屬性列b上第2、3行相同均為a2,所以將屬性列c上的b13、b33改為同乙個符號b13(取行號最小值)。
④ 根據c→d,對上表進行處理,由於屬性列c上第1、2、3、5行相同均為b13,所以將屬性列d上的值均改為同乙個符號a4。
⑤ 根據de→c,對上表進行處理,由於屬性列de上第3、4、5行相同均為a4a5,所以將屬性列c上的值均改為同乙個符號a3。
⑥ 根據ce→a,對上表進行處理,由於屬性列ce上第3、4、5行相同均為a3a5,所以將屬性列a上的值均改為同乙個符號a1。
⑦ 通過上述的修改,使第三行成為a1a2a3a4a5,則演算法終止。且分解具有無損連線性。
模式分解是否為無損連線的判斷方法
方法一 無損連線定理 關係模式r u,f 的乙個分解,具有無損連線的充分必要條件是 u1 u2 u1 u2 f 或u1 u2 u2 u1 f 方法二 演算法 是關係模式r的乙個分解,u f 並設f是乙個最小依賴集,記fdi為xi alj,其步驟如下 建立一張n列k行的表,每一列對應乙個屬性,每一行對...
判斷模式分解是否具有無損鏈結性
資料庫這一塊,除了那三個正規化不易記憶,還有更加燒腦的模式分解。模式分解在99 的搞計算機的人來看,只是在軟考題目見到應用,除此之外,真的不知道這塊知識到底是做什麼的,對它的充斥滿腦的質疑。這種知識寫成的題目只能把它看成乙個遊戲,真的看不出到底有什麼用,而專業課和軟考中卻大量充斥著這類看起來深奧無比...
資料庫中的無損連線分解和是否保持函式依賴的判定
首先了解一下幾個概念 1 把乙個關係模式分解成若干個關係模式的過程,稱為關係模式的分解。2 把低一級的關係模式分解為若干個高一級的關係模式的方法不是唯一的。3 只有能夠保證分解後的關係模式與原關係模式等價,分解方法才有意義。對於第一句話,為什麼需要分解關係模式?因為原來的關係模式可能造成資料冗餘或 ...