怎麼看函數是否是無損連接分解?
很多書都有步驟求解,在這我按例子來說,就不把書上的寫上來了
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那一行)可知,關係模式的分解是無損連接分解
注意:記得多循環幾遍第三步,爲啥呢?因爲有些題,直接從頭到尾循環一遍,就可以看出是否是無損連接分解,但有些題得循環好幾遍才能得出,所以爲了安全,多循環幾遍
歡迎大家關注下個人的「公衆號」:獨醉貪歡
後臺回覆「無腦死磕數據庫原理」即可獲得練習題