判斷是否爲無損連接,保持函數依賴

判斷無損連接性:

 

方法一:無損連接定理

 

關係模式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是這些行的行號最小值。

 

如果在某次更改後,有一行成爲:a1,a2,...,an,則算法終止。且分解ρ具有無損連接性,否則不具有無損連接性。

 

對F中p個FD逐一進行一次這樣的處理,稱爲對F的一次掃描。

 

③ 比較掃描前後,表有無變化,如有變化,則返回第② 步,否則算法終止。如果發生循環,那麼前次掃描至少應使該表減少一個符號,表中符號有限,因此,循環必然終止。

 

判斷保持函數依賴:

 

若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},說明下列分解a.是否是無損連接分解;b.是否保持函數依賴。

(1){ABCD,EFA}

a.判斷無損連接分解

U1∩U2=A,

U1-U2=BCD,

U2-U1=EF

存在A→BCD∈F+,所以分解是無損連接分解。

 

b.判斷保持函數依賴

U1=ABCD,F1+={A→BC,B→D}

U2=EFA,F2+={EF→A}

丟失了CD→E,BE→F,因此沒有保持函數依賴。

 

用算法判斷是否無損連接

設有關係模式R(U,V,W,X,Y,Z),其函數依賴集:F={U→V,W→Z,Y→U,WY→X},現有下列分解:p={UVY,WXYZ}

判斷分解p是否爲無損連接

一、畫出這樣的二維圖

  U Y W X Y Z
UVY            
WXYZ            

二、在縱軸每個關係中擁有的元素添加ai(看下面)

  U Y W X Y Z
UVY A1 A2     A5  
WXYZ     A3 A4 A5 A6

三、根據函數依賴集(F={U→V,W→Z,Y→U,WY→X})中的每個依賴,填充二維表(看下面)

根據U→V有

就是看U列和V列在某個關係中是否存在,如果存在,則在其他關係裏的V列加上

這裏是U 和 V在UVY裏都存在,所以在WXYZ 里加上V關係

 

  U V W X Y Z
UVY A1 A2     A5  
WXYZ   A2 A3 A4 A5

A6

根據W→Z

                                         

  U V W X Y Z
UVY A1 A2     A5 A6
WXYZ   A2 A3 A4 A5

A6

根據Y→U

  U V W X Y Z
UVY A1 A2     A5 A6
WXYZ A1 A2 A3 A4 A5

A6

根據WY→X

  U V W X Y Z
UVY A1 A2   A4 A5 A6
WXYZ A1 A2 A3 A4 A5

A6

 

無損連接分解在二維圖裏的表示方式就是,有其中一行全部覆蓋了ai(這裏是WXYZ行)

所以是無損分解。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章