第一個正式表格應該清楚。 您有原子值並在您的表中創建冗餘。這意味着:您當前的主鍵不再是唯一的。
2NF意味着你應該消除冗餘數據。屬性需要與您的主鍵功能相關,而不是其他非素數屬性。如果它們不依賴於你的主鍵,那麼你的表不在第二個NF中。
3NF有點難度。我剛剛讀了關於它的另一個定義。所以通常你有:你的屬性不能與你的主鍵傳遞相關。 轉換意味着你的屬性不應該通過其他屬性引用你的主鍵。讓我們來看一個例子:
| CourseNr | Course Name | ProfNr| ProfName |
---------------------------------------------------------
10 | Analysis | 90 | A |
12 | Math | 90 | A |
16 | Databases | 65 | D |
17 | Literature | 68 | F |
---------------------------------------------------------
但現在你必須從ProfName到CourseName傳遞依賴,因爲你的ProfName取決於「過」 ProfNr到CourseNr。你的教授的名字不是你的桌子所必需的,你有冗餘。現在您可以將其提取到:
| ProfNr | ProfName |
---------------------
| 90 | A |
| 65 | D |
| 68 | F |
---------------------
現在您可以刪除第一個表中的ProfName行。您的冗餘已被消除,您可以通過ProfNr鏈接您的教授。
而且你的第一個表看起來像現在這樣:
| CourseNr | Course Name | ProfNr |
----------------------------------------------
10 | Analysis | 90 |
12 | Math | 90 |
16 | Databases | 65 |
17 | Literature | 68 |
----------------------------------------------
對我說:我一直一個簡單的例子在我的腦海第三NF,因爲它是我的NF我有問題。
對我來說,規範化是「存儲數據一次,如果需要訪問它,就使用連接」。 –
是的,但不同的正常形式呢。我正努力回答客戶提出的問題。(您在數據庫中實現的最大標準格式是什麼)。 – StackUser
你需要逐一看看你的桌子。恕我直言第四和第五級別表格很少被客戶需要,所以我會尋找違反第二或第三範式的表格。如果發現任何問題,可能是一個很好的機會來改善你的數據庫結構。[這是一個相當簡單的指南](http://www.bkent.net/Doc/simple5.htm) – mikeyq6