Normalization

如何滿足 2NF 以及什麼是超級鍵?- 了解一般的數據庫規範化算法

  • November 4, 2015

給定表格:

  • Student_subject(studentid, subjectid, 使用者名, 年級)

主鍵由以下組合組成:

  • 學生,主體

候選鍵由以下組合組成:

  • 主題程式碼,使用者名

現在可以說存在以下功能依賴:

  • studentid, subjectid -> 年級 (BCNF)
  • 使用者名,subjectid -> 等級(BCNF)
  • studentid -> 使用者名 (3NF)
  • 使用者名 -> studentid (3NF)

BCNF - Boyce-Codd 範式 (3.5NF)

所以表格的 NF 將等於所有 FD 中找到的最低 NF,對吧?關於如何找到 NF 水平似乎有一些不同的解釋。

正如我從一個關於如何滿足 2NF 的解釋中看到的那樣,所有數據/列都需要依賴於整個/整個主鍵,但我看不出是這種情況(因為定義了主鍵作為 studentid, subjectid) 的組合

  • studentid -> 使用者名 (3NF)
  • 使用者名 -> studentid (3NF)

如果它不滿足2NF,它就不能滿足更高級別的3NF。是不是讓你開始查看是否滿足 1NF,如果是,則檢查 2NF 是否也滿足,依此類推…

超級鍵也是唯一標識行的任何東西,包括。候選鍵、主鍵以及這些與其餘屬性的所有可能組合?

為了滿足 2NF,所有數據/列都需要依賴於整個/整個主鍵

這是不正確的。如果 R 的每個非主屬性完全依賴於 R 的每個候選鍵,則關係 R 處於第二範式。在 和 兩者的情況下studentid -> usernameusername -> studentid都是usernamestudentid屬性(包含在候選鍵中的屬性)。所以這些依賴並不違反 2NF 並且 Student_subject確實滿足 2NF 關於這些依賴。正如已經指出的,範式適用於關係,而不適用於 FD。

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