第一題:
在資料表規劃過程中,常須施以“正規化”(normalization)以降低資料重複性以及避免資料
更新異常現象。假設某資料表屬性欄位(A ~ J)間,存在的功能相依性(functional dependency,
FD)如下列四項,請回答下列問題:
1. C → {B}
2. G → {H, J}
3. A → {E, F, I}
4. A+B → {C, D, E, F, G, H, I, J}
(二)承第(一)小題,執行正規化程序,使分解後各表可滿足“第三正規化格式”(3NF)。
【8 分】
要將資料表分解到 BCNF,我們需要確保每個表中的每個非平凡功能相依性 ?→?X→Y 中,?X 都是超鍵(superkey)。BCNF 比 3NF 更嚴格,要求表中沒有部分依賴或傳遞依賴。
根據第四條功能相依性,候選鍵是 ?+?A+B。
依據 ?→?C→B:
依據 ?→?,?G→H,J:
依據 ?→?,?,?A→E,F,I:
依據 ?+?→?,?,?,?,?,?,?,?A+B→C,D,E,F,G,H,I,J:
檢查 ?4R4 表,確認是否需要進一步分解。根據 BCNF 的定義,我們需要確保所有非平凡功能相依性 ?→?X→Y 中,?X 都是超鍵。
然而,因為我們需要所有表都滿足 BCNF,我們需要考慮分解 ?4R4:
這樣,我們將 ?4R4 分解為兩個新的表格,每個表格中的功能相依性滿足 BCNF。
最終分解為以下表格,並且滿足 BCNF:
?1(?,?)R1(C,B)
?2(?,?,?)R2(G,H,J)
?3(?,?,?,?)R3(A,E,F,I)
?4?(?,?,?,?,?)R4a(A,B,C,D,G)
?4?(?,?,?,?,?,?,?)R4b(A,B,E,F,H,I,J)
這樣,我們完成了資料表的分解,使其滿足 BCNF。