題組內容
第一題:
在資料表規劃過程中,常須施以“正規化”(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 分】
(一)請依上列 FD 執行正規化,使分解後各表可滿足“第二正規化格式”(2NF)。【8 分】
詳解 (共 1 筆)
詳解
要將資料表分解到第三正規化形式(3NF),我們首先需要了解資料表的所有功能相依性,然後逐步分解資料表,直到所有表格都滿足3NF的條件。3NF的主要條件包括:
- 所有非主鍵屬性都完全依賴於主鍵。
- 不存在非主鍵屬性對於另一個非主鍵屬性的傳遞依賴。
我們從給定的功能相依性出發,執行以下步驟:
-
找出候選鍵: 根據給定的功能相依性,我們可以推斷出候選鍵:
- 從 A+B 可以導出所有屬性,因此 A+B 是候選鍵。
-
找出分解: 根據功能相依性,我們可以將資料表分解如下:
- 分解1:依據 C → B
- ?1(?,?)R1(C,B)
- ?1R1 的主鍵是 C
- 分解2:依據 G → H, J
- ?2(?,?,?)R2(G,H,J)
- ?2R2 的主鍵是 G
- 分解3:依據 A → E, F, I
- ?3(?,?,?,?)R3(A,E,F,I)
- ?3R3 的主鍵是 A
- 分解4:依據 A + B → C, D, E, F, G, H, I, J
- ?4(?,?,?,?,?,?,?,?,?,?)R4(A,B,C,D,E,F,G,H,I,J)
- 由於 A+B 是候選鍵,因此 R4 是包含所有屬性的主表,且 R4 的主鍵是 A+B
- 分解1:依據 C → B
-
檢查和分解以滿足3NF:
-
檢查各個表格是否滿足3NF。
-
?1(?,?)R1(C,B):
- 主鍵是 C,B 完全依賴於 C,滿足3NF。
-
?2(?,?,?)R2(G,H,J):
- 主鍵是 G,H 和 J 完全依賴於 G,滿足3NF。
-
?3(?,?,?,?)R3(A,E,F,I):
- 主鍵是 A,E,F,I 完全依賴於 A,滿足3NF。
-
?4(?,?,?,?,?,?,?,?,?,?)R4(A,B,C,D,E,F,G,H,I,J):
- ?4R4 目前不滿足3NF,因為非主鍵屬性有部分依賴和傳遞依賴。
-
將 ?4R4 進一步分解:
- ?4?(?,?,?,?,?)R4a(A,B,C,D,G)
- ?4?(?,?,?,?)R4b(A,E,F,I)(與 R3 重複,忽略)
- ?4?(?,?,?)R4c(G,H,J)(與 R2 重複,忽略)
最終分解後的表格如下:
- ?1(?,?)R1(C,B)
- ?2(?,?,?)R2(G,H,J)
- ?3(?,?,?,?)R3(A,E,F,I)
- ?4?(?,?,?,?,?)R4a(A,B,C,D,G)
-
這樣,我們得到了滿足3NF的分解方案。