Normalization
從 3NF 到 BCNF 的下一步
我正在處理
H
下面詳述的關係:H = {A,B,C,D}
它顯示了以下功能依賴關係(FD
$$ s $$):
F = { A -> B, B -> C, {C,D} -> A}
候選鍵是
{A,D}, {B,D}, {C,D}
我相信關係
H
在 3NF 中。我也相信有兩個 FD 會阻止這種關係滿足 BCNF:
A -> B and B -> C
然後我有:
A -> B H1 = {A,B} F1 = {A -> B} <- this is BCNF H2 = {A,C,D} F2 = {A -> C, {C,D} -> A} <- this isnt' BCNF B -> C H11 = {B,C} F11 = {B -> C} <- this is BCNF H12 = {A,B,D} F12 = {A -> B} <- this is in BCNF
問題
我有關於這個算法的部分資訊,所以我不確定某些事情:
- 我該怎麼辦
H2
?扔掉它然後說H1
,H11
的H12
分解是H
為了滿足 BCFN 嗎?- 這種關係可以轉換為具有功能依賴保留的 BCNF 嗎?(我會說不**!**因為不可能從 導出FD
{C,D} -> A
。F1 sum F11 sum F12
你能證實嗎?
首先,您對 3NF 的假設是正確的。
H1
然後,在尋找 BNCF 的分析算法中,當您開始刪除依賴 X → Y 因為它違反了 BCNF 時,您不僅應該放入第一個關係XY
,而且應該放入X+
第二個關係H2 = H - X+ + X
。因此,在第一步中,兩個結果關係是:
H1 = {A,B,C) with dependencies A → B and B → C and key `A`, H2 = {A, D} (with no dependencies)
在 H1 中,依賴
B → C
項違反了 BCNF,因為B
它不是超鍵,您可以將其分解為:H11 = {A, B} with the dependency A → B and key A H12 = {B, C} with the dependency B → C and key B
因此,最後,最終分解為 H11、H12 和 H2。請注意,這種分解決定了依賴的損失,
{C, D} → A
如果我們首先考慮依賴B → C
(獲得相同的分解),也會發生這種情況。