無損分解:若干張表進行自然連線能得到初始的表,但不一定保證保持函式依賴
儲存函式依賴分解:若分解前後的兩個閉包相互覆蓋,則說明保持函式依賴
無損連線的判斷:
方法一:定理
關係模式r(u,f)的乙個分解,ρ=具有無損連線的充分必要條件是:
u1∩u2→u1-u2 €f+ 或u1∩u2→u2 -u1€f
例:已知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是無損連線。
方法二:
ρ=是關係模式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的一次掃瞄。
③ 比較掃瞄前後,表有無變化,如有變化,則返回第② 步,否則演算法終止。如果發生迴圈,那麼前次掃瞄至少應使該錶減少乙個符號,表中符號有限,因此,迴圈必然終止。
例:已知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,則演算法終止。且分解具有無損連線性。
上述例子搬運於:
保持函式依賴的判斷:
根據定義,求出其中乙個的閉包,看另乙個函式依賴是不是都在前乙個閉包裡面
簡述:1.先將分解後的關係集取並,再求其的閉包(g+)
2.列舉f裡的函式依賴是否再g+裡,只要乙個f裡的函式依賴g+中沒有,則說明不保持函式依賴,反之則保持函式依賴
簡單技巧:直接根據關係集來判斷是不是包含所有的函式依賴
例:給定關係模式r,u={a, b, c, d, e},f={b→a,d→a,a→e,ac→b}
則分解ρ={r1(abce),r2(cd)}是否保持函式依賴
先看r1,我們可以得到b→a,ac→b,a→e,無法得到d→a,再看r2,依舊無法得到d→a,所以該分解不保持函式依賴
資料庫系統概論 模式分解
參考課件 模式分解 例1 u a,b,c,d,e,g f 若r不是3nf,將r分解為無損且保持函式依賴的3nf。解 先要求出最小依賴集,由前面,候選鍵為ag,fm 第一步 左部相同原則分組 對fm按具有相同左部的原則分組,然後左部 右部。u1 b de bde u2 dgc u3 agb 第二步 看...
資料庫規範化理論 模式分解
先上傳乙個導圖作為整體概況 背景和保持函式依賴分解,有導圖就不再贅述,下面主要說說有損無損的判斷方法 通過題目說明 法展示 1.畫出 2.通過函式依賴把a和b調換位置 比如在分解後的成績表中 學號 姓名 可將b12改為a2,以次判斷分解三種模式,得出下列結果 當成績一行包含了所有的屬性後,即全部變為...
資料庫關係理論之 碼 正規化 模式分解
設k kk是r f rrf 中的屬性或者屬性組合 k是超碼 k p uk xrightarrowu kp u 候選碼 k f uk xrightarrowu kf u 候選碼是最新小的超碼,任意乙個候選碼的子集都不是候選碼,候選碼可以有多個。主碼 候選碼其中之一 主屬性 候選碼的並集 非主屬性 u ...