數據庫系統概論課堂筆記-規範化理論4

一、關係模式分解-無損連接性的判斷

方法一:無損連接定理

關係模式R(U,F)的一個分解,ρ={R1<U1,F1>,R2<U2,F2>}具有無損連接的充分必要條件是:
U1∩U2→U1-U2 ∈F+ U1∩U2→U2 -U1∈F+

方法二:算法

ρ={R1<U1,F1>,R2<U2,F2>,...,Rk<Uk,Fk>}是關係模式R<U,F>的一個分解,U={A1,A2,...,An},F={FD1,FD2,...,FDp},並設F是一個最小依賴集,記FDi爲Xi→Alj,其步驟如下:

① 建立一張n列k行的表,每一列對應一個屬性,每一行對應分解中的一個關係模式。若屬性Aj ∈Ui,則在j列i行填上aj,否則填上bij;

② 對於每一個FDi做如下操作:找到Xi所對應的列中具有相同符號的那些行。考察這些行中li列的元素,若其中有aj,則全部改爲aj,否則全部改爲bmli,m是這些行的行號最小值。

方法二例子:

   例子1(不是無損連接):對於屬性集ABCDEF和函數依賴集{A→BC,CD→E,B→D,BE→F,EF→A},說明下列分解a.是否是無損連接分解;

(1){ABC,BD,BEF}
a.判斷無損連接分解
①構造一個初始的二維表,若“屬性”屬於“模式”中的屬性,則填aj,否則填bij。

②根據A→BC,拆分爲A→B,A→C。由於屬性列A上沒有相同的分量,所以表不改變。
③根據CD→E,由於屬性列CD上沒有相同的分量,所以表不改變。
④根據B→D,由於屬性列B上第1、2、3行均相同a2,且這些行所在的D屬性列存在a4,所以將屬性列D上的b14、b34改爲同一個符號a4。

⑤根據BE→F,由於屬性列BE上沒有相同的分量,所以表不改變。
⑥根據EF→A,由於屬性列EF上沒有相同的分量,所以表不改變。

經過比較掃描前後的表格有變化,所以進行第二次掃描,第二次掃描表無變化,沒有出現a1,a2,a3,a4,a5,a6,因此不是無損連接分解。

  例子2(是無損連接):已知R<U,F>,U={A,B,C,D,E},F={A→C,B→C,C→D,DE→C,CE→A},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。

   注意這裏爲什麼改成a4?因爲在四個相同的行中,存在a4,所以D的四行全部改成a4。

⑤ 根據DE→C,對上表進行處理,由於屬性列DE上第3、4、5行相同均爲a4a5,所以將屬性列C上的值均改爲同一個符號a3。

⑥ 根據CE→A,對上表進行處理,由於屬性列CE上第3、4、5行相同均爲a3a5,所以將屬性列A上的值均改爲同一個符號a1。

⑦ 通過上述的修改,使第三行成爲a1a2a3a4a5,則算法終止。且分解具有無損連接性。

二、關係模式分解-是否保持函數依賴性的判斷

定理:若F+=F1+∪F2+∪...∪Fk+,則R<U,F>的分解ρ={R1<U1,F1>,R2<U2,F2>,...,Rk<Uk,Fk>}保持函數依賴。

例題:對於屬性集ABCDEF和函數依賴集{A→BC,CD→E,B→D,BE→F,EF→A},說明下列分解b.是否保持函數依賴
b.判斷保持函數依賴
U1=ABCD,F1+={A→BC,B→D}
U2=EFA,F2+={EF→A}

注:這裏的F1+和F2+一定是相對於U1和U2的函數依賴集,並且依賴子句是來自於F依賴集
丟失了CD→E,BE→F,因此沒有保持函數依賴。

 

發佈了31 篇原創文章 · 獲贊 7 · 訪問量 3485
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章