無損連接分解

怎麼看函數是否是無損連接分解?
很多書都有步驟求解,在這我按例子來說,就不把書上的寫上來了

 1. 第一步,畫表(R的屬性作爲列,ρ的屬性作爲行)
 2. 第二步,填充a(根據ρ中的元素,在表格跟ρ屬性相關的一格,填充爲a)
 3. 第三步,根據函數依賴,填充表格
 4. 第四步,循環第三步,直到表格的某一行被填充完整或者循環結果重複
 5. 第五步,如果有一行是滿的,即關係模式的分解具有無損連接性,反之是有損連接分解

例1、關係模式R(U,V,W,X,Y,Z),函數依賴F={U→V,W→Z,Y→U,WY→X},分解ρ={WZ,VY,WXY,UV}

第一步,畫表(R的屬性作爲列,ρ的屬性作爲行)

U V W X Y Z
WZ
VY
WXY
UV

. 第二步,填充a(根據ρ中的元素,在表格跟ρ屬性相關的一格,填充爲a)

U V W X Y Z
WZ a a
VY a a
WXY a a a
UV a a
  • 由U→V,有U的第四行,V存在,就不用填充了
U V W X Y Z
WZ a a
VY a a
WXY a a a
UV a a

第三步,根據函數依賴,填充表格

  • 由W→Z,W佔了表格第一、三行,所以填充一、三行表格Z的位置的a(如果位置上本來有a,就不用在填充一次)
U V W X Y Z
WZ a a
VY a a
WXY a a a a
UV a a
  • 由Y→U,因爲二、三行有Y,所以填充二、三行的U
U V W X Y Z
WZ a a
VY a a a
WXY a a a a a
UV a a
  • 由WY→X,WY同時存在的只有第三行,而X本身就有被填充,所以不用再填充
U V W X Y Z
WZ a a
VY a a a
WXY a a a a a
UV a a

第四步,循環第三步,直到表格的某一行被填充完整或者循環結果重複

  • 由U→V得,第二、三、四行U存在,即把二、三、四行的V填充上
U V W X Y Z
WZ a a
VY a a a
WXY a a a a a a
UV a a

第五步,如果有一行是滿的,即關係模式的分解具有無損連接性,反之是有損連接分解

U V W X Y Z
WZ a a
VY a a a
WXY a a a a a a
UV a a

由第三行(WXY那一行)可知,關係模式的分解是無損連接分解

注意:記得多循環幾遍第三步,爲啥呢?因爲有些題,直接從頭到尾循環一遍,就可以看出是否是無損連接分解,但有些題得循環好幾遍才能得出,所以爲了安全,多循環幾遍


歡迎大家關注下個人的「公衆號」:獨醉貪歡
後臺回覆「無腦死磕數據庫原理」即可獲得練習題

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