Normalization

第三範式。多個屬性決定另一個?

  • July 15, 2019

關於 3NF。如果您對單個非鍵依賴項有一個複合非鍵行列式,這是否違反 3NF?我讀到的關於傳遞依賴的所有內容都說一個非鍵確定另一個非鍵,但沒有解決複合方面。

範例:成分(IngredientID (PK) —> 名稱、供應商、分類、UnitOfSale、UnitPrice)

單一供應商提供具有特定名稱和分類的成分。所以,(名稱,分類)-> 供應商。這是否違反 3NF?

感謝您的時間和想法。

一個關係在 3NF 中,如果對於每個非平凡的函式依賴,每個行列式都是一個超鍵,或者,如果它不是一個超鍵,每個行列式都是一個素數屬性(即它是候選鍵的一部分)。

在您的範例中,(Name, Classification) --> Supplier當且僅當同時滿足以下兩個條件時才違反 3NF:

  1. (Name, Classification)不是候選鍵。
  2. Supplier不是主要屬性。

對於這兩個條件的真實性,您必須知道一組功能依賴關係,它是關係的所有 FD 的覆蓋(並且從中可以找到所有候選鍵,因此,該關係的所有主要屬性)關係),或者,通過了解數據的含義,您知道它們是正確的(例如,您知道幾個值Name, Classification可以在關係中多次出現,並且不存在包含 的候選鍵Supplier)。

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