模式分解是否爲無損連接的判斷方法

方法一:無損連接定理

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

U1∩U2→U1-U€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的一次掃描。

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

舉例1:已知R<U,F>,U={A,B,C},F={A→B},如下的兩個分解:

① ρ1={AB,BC}

② ρ2={AB,AC}

判斷這兩個分解是否具有無損連接性。

①因爲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>,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

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

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

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

聲名:該博文的部分內容轉載自百度文庫http://wenku.baidu.com/linkurl=KtuuXFU3TLD13PKSFSDoLgOdCFi9j7R0CBjpfTIY1zYxikvftzQwvLiyLg8WNX58g6t6i0YnUMgL7FFWo4RzoIl23UylHvcMsngwI0rVTgK

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