Normalization

從 3NF 到 BCNF 的下一步

  • February 11, 2017

我正在處理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

問題

我有關於這個算法的部分資訊,所以我不確定某些事情:

  1. 我該怎麼辦H2?扔掉它然後說H1,H11H12分解是H為了滿足 BCFN 嗎?
  2. 這種關係可以轉換為具有功能依賴保留的 BCNF 嗎?(我會說不**!**因為不可能從 導出FD {C,D} -> AF1 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(獲得相同的分解),也會發生這種情況。

引用自:https://dba.stackexchange.com/questions/163906