題組內容
第一題:
在資料表規劃過程中,常須施以“正規化”(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 分】
(二)承第(一)小題,執行正規化程序,使分解後各表可滿足“第三正規化格式”(3NF)。 【8 分】
詳解 (共 1 筆)
詳解
功能相依性
- ?→?C→B
- ?→?,?G→H,J
- ?→?,?,?A→E,F,I
- ?+?→?,?,?,?,?,?,?,?A+B→C,D,E,F,G,H,I,J
步驟 1: 找出候選鍵
根據第四條功能相依性,候選鍵是 ?+?A+B(因為 ?+?A+B 可以唯一標識所有屬性)。
步驟 2: 分解以滿足 3NF
-
依據 ?→?C→B:
- 創建表 ?1(?,?)R1(C,B),其中 ?C 是主鍵。
-
依據 ?→?,?G→H,J:
- 創建表 ?2(?,?,?)R2(G,H,J),其中 ?G 是主鍵。
-
依據 ?→?,?,?A→E,F,I:
- 創建表 ?3(?,?,?,?)R3(A,E,F,I),其中 ?A 是主鍵。
-
依據 ?+?→?,?,?,?,?,?,?,?A+B→C,D,E,F,G,H,I,J:
- 創建表 ?4(?,?,?,?,?,?,?,?,?,?)R4(A,B,C,D,E,F,G,H,I,J),其中 ?+?A+B 是主鍵。
步驟 3: 確認並進一步分解以滿足 3NF
我們檢查 ?4R4 表,看其是否需要進一步分解。根據 3NF 的定義,我們需要確保所有非主鍵屬性不僅完全依賴於主鍵,且不依賴於其他非主鍵屬性。
進一步分解 ?4R4:
-
將 ?+?→?,?,?A+B→C,D,G 分離出來:
- 創建表 ?4?(?,?,?,?,?)R4a(A,B,C,D,G),其中 ?+?A+B 是主鍵。
-
將 ?4R4 的其他依賴分解到已有的表格中,避免重複:
- ?→?,?,?A→E,F,I 已經在 ?3R3 中。
- ?→?,?G→H,J 已經在 ?2R2 中。
結果
最終分解為以下表格,並且滿足 3NF:
-
?1(?,?)R1(C,B)
- 主鍵: ?C
-
?2(?,?,?)R2(G,H,J)
- 主鍵: ?G
-
?3(?,?,?,?)R3(A,E,F,I)
- 主鍵: ?A
-
?4?(?,?,?,?,?)R4a(A,B,C,D,G)
- 主鍵: ?+?A+B
這樣,我們就完成了資料表的分解,使其滿足第三正規化形式 (3NF)。