地特三等申論題
106年
[資訊處理] 資料庫應用
第 二 題
📖 題組:
如果 scheme R = (A, B, C, D, E),並滿足以下所有的 functional dependencies A→BC, CD→E, B→D, E→A (一) 假設我們分解(decomposition)R 成為(A, B, C), (A, D, E)。證明這是一個 lossless-join 分解。(10 分) (二) 寫出一個 lossless-join 分解使得 R 分解後滿足 BCNF。(10 分) (三) 寫出一個 lossless-join 分解使得 R 分解後滿足 3NF。(10 分)
如果 scheme R = (A, B, C, D, E),並滿足以下所有的 functional dependencies A→BC, CD→E, B→D, E→A (一) 假設我們分解(decomposition)R 成為(A, B, C), (A, D, E)。證明這是一個 lossless-join 分解。(10 分) (二) 寫出一個 lossless-join 分解使得 R 分解後滿足 BCNF。(10 分) (三) 寫出一個 lossless-join 分解使得 R 分解後滿足 3NF。(10 分)
📝 此題為申論題,共 3 小題
小題 (二)
寫出一個 lossless-join 分解使得 R 分解後滿足 BCNF。(10 分)
思路引導 VIP
解 BCNF 分解題的關鍵是先找出所有 Candidate Keys,然後逐一檢查 Functional Dependencies (FDs),找出決定子不是 Superkey 的 FD。利用該違反 BCNF 的 FD 將原關聯分解為兩個子關聯,並驗證分解後的關聯是否均滿足 BCNF 及無損結合(Lossless-join)特性。
小題 (一)
假設我們分解(decomposition)R 成為(A, B, C), (A, D, E)。證明這是一個 lossless-join 分解。(10 分)
思路引導 VIP
看到證明「無失真合併分解(lossless-join decomposition)」的題目,首先想到兩個子關聯的判定定理:若 R1 ∩ R2 → R1 或 R1 ∩ R2 → R2 成立(即交集為其中一個的 Superkey),則為無失真合併分解。接著利用給定的 FDs 計算交集屬性的 Closure(封閉集)來完成證明。
小題 (三)
寫出一個 lossless-join 分解使得 R 分解後滿足 3NF。(10 分)
思路引導 VIP
本題要求尋找滿足 3NF 且為無失真合併(Lossless-join)的分解。標準解題策略是採用「3NF 合成演算法(3NF Synthesis Algorithm)」,先找出功能相依的最小覆蓋(Minimal Cover),依據最小覆蓋建立關聯表,最後確認分解中是否包含原關聯表的候選鍵,以此保證相依性保留與無失真合併。
BCNF正規化分解
💡 透過拆解違反定義的相依性,並確保交集為超鍵以達成無損結合。
🔗 BCNF 無損分解流程
- 1 識別候選鍵 — 計算屬性閉包,找出所有 Candidate Keys。
- 2 篩選違規 FD — 找出決定子非 Superkey 的非平凡相依性。
- 3 執行二元分裂 — 以 X→Y 為界,拆成 (X, Y) 與 (R-Y) 兩部分。
- 4 無損結合驗證 — 確認 R1 ∩ R2 可決定 R1 或 R2。
↓
↓
↓
🔄 延伸學習:延伸學習:BCNF 分解必能保證 Lossless,但不一定保證相依性保持。