111年地方特考三等資料庫應用
四、假設某關聯式資料庫,五個屬性值均是 atomic、不可再分割。設計師發現有下列2條功能相依,設計出一個資料表 R(A1, A2, A3, A4, A5) FD1:{A1, A3}→A5 FD2:A1→A2 (一)請問此表格 R 之候選鍵 (Candidate Key) 有那些?為什麼?(3分) (二)上述設計違反了正規化 (Normalization) 理論,為什麼?(3分) (三)若資料表改為下列2個表格 R1(A1, A4, A5)、R2(A2, A3, A4, A5)(12 分) (a)請你先判定新表格 R1、R2 的候選鍵。 (b)這樣的切割,是否滿足 Lossless Join? (c)這樣的切割,是否會喪失任何功能相依? (d)這樣設計最高是滿足第幾正規化,為什麼? (四)若你不同意上述(三)設計,你建議應如何修改原設計師所提出資料表 R(A1, A2, A3, A4, A5)?你必須同樣地依上述(a)、(b)、(c)、(d)四方面來說明你建議的設計。(12分) |
答:
(一)
1.左有右無:找出最小性
從 F 中找出沒有在功能相依性的右手邊出現過的關聯表屬性,有最小性。它為候選鍵不可或缺的部分。左手邊出現 {A1, A3},右手邊出現 {A2, A5},刪除後得到 {A1, A3},此為候選鍵不可或缺部分。
註:如果「左有右無」是空集合,則直接找可以推導出所有屬性的候選鍵。
2.使用泛封閉集合推導出所有屬性:找出唯一性推導
(1)將候選鍵不可或缺的部分使用泛封閉集合 (Closure set) 推導出所有屬性,若所得的泛封閉集合包括所有屬性,則此候選鍵不可或缺部分為唯一候選鍵,有唯一性。
(2)若所得的泛封閉集合無法包括所有屬性,則有多個候選鍵。
(3)使用泛封閉集合演算法可以計算出 F 的 closure 集合,如下:
{A1, A3}+
≡ {A1, A3, A2}+ (依據 A1→A2)
≡ {A1, A3, A2, A5}+ (依據 {A1, A3}→A5)
≠ R
因為泛封閉集合無法包括所有屬性,所以有多個候選鍵。
3.使用泛封閉集合推導出其他候選鍵:
(1)在候選鍵不可或缺部分增加屬性再求 Closure,若所得到的 Closure 涵括所有屬性,而且再刪除任何屬性都無法得到此一 Closure,則候選鍵為不可或缺部分與增加屬性。
(2)利用此一方法可以繼續推導出其他屬性。說明如下:
R = (A1, A2, A3, A4, A5)
FD1:{A1, A3}→A5
FD2:A1→A2
採用左有右無求候選鍵不可或缺部分,左手邊出現 {A1, A3},右手邊出現 {A2, A5},刪除後得到 {A1, A3},此為候選鍵不可或缺部分。
候選鍵:
{A1, A3} 增加屬性 A4,推導如下:
{A1, A3, A4}
≡ {A1, A3, A4, A2}+ (依據 A1→A2)
≡ {A1, A3, A4, A2, A5}+ (依據 {A1, A3}→A5)
= R
所以 {A1, A3, A4} 為候選鍵。
(二)
因為 A2 部分功能相依於主鍵 {A1, A3, A4} 中的 A1;A5 部分功能相依於主鍵 {A1, A3, A4} 中的 {A1, A3},所以違反了第二正規化。
(三)
(a)R1、R2 無任何功能相依,必為全鍵值關聯 (all-key relation),也就是它們的鍵 值是由所有的屬性所組成。
(b)因為 R1∩R2 = {A4, A5} ≠ R1 或 R1∩R2 = {A4, A5} ≠ R2,所以是不滿足 Lossless Join。
(c)這樣的切割會喪失任何功能相依,例如 {A1, A3}→A5,以及 A1→A2。
(d)全鍵值關聯最高是滿足 BCNF 正規化,因為決定因素皆為此關聯的候選鍵。
(四)
Heath’s theorem:海斯定理
屬性集合 U 上的關係 R 滿足函數依賴 X→Y,則可以無損分解為兩個關係:
(R) ⋈(R) = R,其中 Z = U-XY是剩餘的屬性。
(a)依照 Heath’s theorem 將 R(A1, A2, A3, A4, A5) 分解如下:
1.R1(A1, A2):候選鍵是 A1。
2.R2(A1, A3, A4, A5):候選鍵是 {A1, A3, A4}。
(b)R1∩R2 = A1,因為 A1→A2,所以 R1∩R2 = R1。所以是 lossless-join。
(c)R1 保留 A1→A2 的功能相依,R2 保留 {A1, A3}→A5 的功能相依,所以沒 有遺失任何功能相依。
(d)R2 的 A5 部分功能相依於主鍵 {A1, A3, A4} 中的 {A1, A3},所以不是第二正規化。最高是滿足第一正規化。
留言列表