Normalization

辨識某個關係符合的範式

  • February 10, 2017

我對標準化練習有一點問題。我有以下關係:

R = {L,K,D,S,O,W}

它呈現瞭如下所示的功能依賴關係(FD):

F = { {D,S,K} -> {O},
     {O} -> {K},
     {O,L} -> {W}
     {W,L,K} -> {O},
     {D,S,W} -> {L}}

我必須確定滿足什麼範式(NF)。所以我從確定候選鍵開始;他們是:

{D,S,O,L}

{D,S,L,K}

{D,S,K,W}

{D,S,O,W}

然後,我從上到下工作(不確定這是否是好的策略)。

  1. 這種關係不在 BCNF 中,因為每個 FD 的左側都不包含鍵,例如{O} -> {K}
  2. 我對 3NF 的定義是,對於每個重要的簡單 FD,左側包含一個密鑰,或者右側是密鑰的一部分(或者它是一個密鑰)。一切都匹配,我認為關係R在 3NF 中。

然後我查看了處於 2NF 的條件並看到:

  1. 這種關係包含部分依賴,例如{O} -> {K}
  2. 這種關係包含傳遞依賴。

傳遞依賴是針對每個 FD的X -> AX是鍵的子集或超集(對嗎,但是如果X是鍵的子集,那麼這是部分依賴)?

這種依賴對我不起作用{W,L,K} -> {O}——這是傳遞的。那麼,關係R在 1NF 中嗎?這很奇怪,要麼我對 3NF 的定義不好,要麼這種關係在 3NF 中……但它不在 2NF 中,這是不可能的。怎麼了?

所有屬性都是素數,它們至少屬於一個候選鍵。

因此,這種關係 - 微不足道 - 在 3NF 中。

如果您查看 2NF 和 3NF 的要求,則會發現例外以“每個非主要屬性…”開頭。由於關係有 0 個非主要屬性,因此這些要求被簡單地涵蓋了。

關於您的分析,第一部分是可以的(找到候選鍵,關係不在 BCNF 中並且它在 3NF 中)。

最後一部分,關於 2NF,顯示出混亂。再次檢查 2NF 定義以及如何定義部分依賴和傳遞依賴。

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