Normalization
第三範式。多個屬性決定另一個?
關於 3NF。如果您對單個非鍵依賴項有一個複合非鍵行列式,這是否違反 3NF?我讀到的關於傳遞依賴的所有內容都說一個非鍵確定另一個非鍵,但沒有解決複合方面。
範例:成分(IngredientID (PK) —> 名稱、供應商、分類、UnitOfSale、UnitPrice)
單一供應商提供具有特定名稱和分類的成分。所以,(名稱,分類)-> 供應商。這是否違反 3NF?
感謝您的時間和想法。
一個關係在 3NF 中,如果對於每個非平凡的函式依賴,每個行列式都是一個超鍵,或者,如果它不是一個超鍵,每個行列式都是一個素數屬性(即它是候選鍵的一部分)。
在您的範例中,
(Name, Classification) --> Supplier
當且僅當同時滿足以下兩個條件時才違反 3NF:
(Name, Classification)
不是候選鍵。Supplier
不是主要屬性。對於這兩個條件的真實性,您必須知道一組功能依賴關係,它是關係的所有 FD 的覆蓋(並且從中可以找到所有候選鍵,因此,該關係的所有主要屬性)關係),或者,通過了解數據的含義,您知道它們是正確的(例如,您知道幾個值
Name, Classification
可以在關係中多次出現,並且不存在包含 的候選鍵Supplier
)。