Normalization
如何滿足 2NF 以及什麼是超級鍵?- 了解一般的數據庫規範化算法
給定表格:
- 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 -> username
和username -> studentid
都是username
主studentid
屬性(包含在候選鍵中的屬性)。所以這些依賴並不違反 2NF 並且 Student_subject確實滿足 2NF 關於這些依賴。正如已經指出的,範式適用於關係,而不適用於 FD。