資料庫規範化以結構化且一致的方式組織數據,消除冗餘並確保關聯式資料庫內的資料完整性。它使資料庫更易於管理、查詢和維護,減少錯誤。
遵循規範化規則,您可以設計出更易於維護且不易出錯的資料庫。
在深入規範化之前,我們想先了解關聯式資料庫的基礎知識。
主鍵 - 表中每一行的唯一識別碼。確保每筆記錄都可以唯一識別。
外鍵 - 一個表中的欄位連結到另一個表的主鍵,在兩個表之間建立關係
我們提到標準化是為了消除冗餘和不一致的依賴。那是什麼?
冗餘資料意味著將相同的資料儲存在多個地方,這會浪費磁碟空間並造成維護問題。如果資料發生任何變化,我們必須在所有地方更新它。
不一致的依賴關係 當資料庫中的資料以不可預測或不正確的方式依賴其他資料時,就會發生。這可能會導致錯誤並使資料庫不可靠。
將範式視為流程中的檢查點/規則,類似於駕駛考試的學習階段、停車階段和路考階段。
為了標準化這些數據,我們為學生及其課程建立單獨的表格:
1NF僅消除重複組,而不是冗餘。這就是為什麼有2NF。
如果表格符合以下條件,則稱為 2NF:
已經是 1NF
沒有部分依賴。也就是說,所有非鍵屬性完全依賴主鍵。
透過確保非鍵屬性僅依賴主鍵來刪除傳遞依賴關係。
現在我們要理解傳遞依賴,這是理解3NF的關鍵。
當屬性(列)依賴另一個非鍵屬性而不是直接依賴主鍵時,就會發生傳遞依賴。
3NF 需要
這是 3NF 的最終結構:
沒有部分依賴(因為所有屬性都完全依賴各自表中的整個主鍵)。
沒有傳遞依賴(因為沒有非鍵屬性依賴其他非鍵屬性)。
3NF:確保沒有傳遞依賴。
EKNF:透過確保所有函數依賴關係都是基本的來進一步完善 3NF,解決 3NF 可能無法處理的更複雜的依賴關係。
如果滿足以下條件,則表屬於 BCNF:
超級鍵:一組一個或多個列,可以唯一標識表中的一行。
功能依賴:一個屬性唯一決定另一個屬性的關係。
BCNF 之後的下一層範式。
其他範式涉及函數依賴關係,4NF 涉及更通用的依賴類型,稱為多值依賴關係。
多值依賴 - 當一個屬性獨立於其他屬性決定另一個屬性的多個值時發生。
也稱為項目加入範式(PJNF),是標準化的最高等級。如果表已經處於 4NF 狀態且無法在不遺失資料完整性的情況下分解為更小的表,則該表處於 5NF 狀態。這意味著表中的每個重要連接依賴項都由候選鍵隱含。
如果我們將這張表分解為更小的表以消除冗餘,我們必須確保我們仍然可以重建原始表而不會丟失任何資訊。在 5NF 中,這種分解是以不丟失任何資訊的方式完成的,並且保留所有連接依賴性。舉例說明
表可以進行非規範化以提高效能。
標準化增加了表格和關係的數量。
跨關係存取多個表比存取單一表需要更多處理。
以上是資料庫規範化的詳細內容。更多資訊請關注PHP中文網其他相關文章!