首頁 >資料庫 >mysql教程 >資料庫規範化

資料庫規範化

Linda Hamilton
Linda Hamilton原創
2024-11-25 00:34:11710瀏覽
  • 資料庫規範化以結構化且一致的方式組織數據,消除冗餘並確保關聯式資料庫內的資料完整性。它使資料庫更易於管理、查詢和維護,減少錯誤。

  • 遵循規範化規則,您可以設計出更易於維護且不易出錯的資料庫。

在深入規範化之前,我們想先了解關聯式資料庫的基礎知識。

  • 關聯式資料庫是一種將資料儲存在表中的資料庫,表的結構為行和列。 表格 - 相關資料條目的集合 - 記錄,每一行代表一條數據 列 - 字段,每一列代表資料的一個特定屬性。

Database Normalization

主鍵 - 表中每一行的唯一識別碼。確保每筆記錄都可以唯一識別。
外鍵 - 一個表中的欄位連結到另一個表的主鍵,在兩個表之間建立關係
Database Normalization

我們提到標準化是為了消除冗餘和不一致的依賴。那是什麼?

冗餘資料意味著將相同的資料儲存在多個地方,這會浪費磁碟空間並造成維護問題。如果資料發生任何變化,我們必須在所有地方更新它。

不一致的依賴關係 當資料庫中的資料以不可預測或不正確的方式依賴其他資料時,就會發生。這可能會導致錯誤並使資料庫不可靠。

  • 規範形式 - 資料庫規範化中的每條規則。如果資料庫遵循規範化的第一條規則,則它處於「第一範式」(1NF)。如果它遵循前三個規則,則它處於「第三範式」(3NF)。

Database Normalization

將範式視為流程中的檢查點/規則,類似於駕駛考試的學習階段、停車階段和路考階段。

Database Normalization

第一範式 (1NF)

  • 消除各表中的重複組。

Database Normalization

  • 為每組相關資料建立一個單獨的表。

為了標準化這些數據,我們為學生及其課程建立單獨的表格:

Database Normalization

  • 用主鍵標識每組相關資料。

Database Normalization

第二範式 (2NF)

  • 刪除部分依賴 - 每個非鍵列必須依賴整個主鍵,而不僅僅是它的一部分。

1NF僅消除重複組,而不是冗餘。這就是為什麼有2NF。

如果表格符合以下條件,則稱為 2NF:
已經是 1NF
沒有部分依賴。也就是說,所有非鍵屬性完全依賴主鍵。

Database Normalization

第三範式(3NF)

  • 透過確保非鍵屬性僅依賴主鍵來刪除傳遞依賴關係。

  • 現在我們要理解傳遞依賴,這是理解3NF的關鍵。

當屬性(列)依賴另一個非鍵屬性而不是直接依賴主鍵時,就會發生傳遞依賴。

Database Normalization

3NF 需要

  1. 桌子已經是 2 NF
  2. 沒有傳遞依賴。這意味著非鍵 屬性不應依賴其他非關鍵屬性。

Database Normalization

這是 3NF 的最終結構:
沒有部分依賴(因為所有屬性都完全依賴各自表中的整個主鍵)。
沒有傳遞依賴(因為沒有非鍵屬性依賴其他非鍵屬性)。

基本鍵範式 (EKNF)

  • EKNF 是 3NF 的更嚴格形式,可確保所有函數依賴關係都是基本的,這意味著它們簡單明了,沒有任何複雜的依賴關係。

3NF:確保沒有傳遞依賴。
EKNF:透過確保所有函數依賴關係都是基本的來進一步完善 3NF,解決 3NF 可能無法處理的更複雜的依賴關係。

Database Normalization

博伊斯-科德範式(BCNF)

  • 如果滿足以下條件,則表屬於 BCNF:

    1. 它位於 3NF。
    2. 對於每個函數依賴( A —> B ),A 必須是候選鍵(超級鍵)。
  • 超級鍵:一組一個或多個列,可以唯一標識表中的一行。
    功能依賴:一個屬性唯一決定另一個屬性的關係。

第四範式(4NF)

  • BCNF 之後的下一層範式。

  • 其他範式涉及函數依賴關係,4NF 涉及更通用的依賴類型,稱為多值依賴關係。

  • 多值依賴 - 當一個屬性獨立於其他屬性決定另一個屬性的多個值時發生。

Database Normalization

第五範式(5NF)

  • 也稱為項目加入範式(PJNF),是標準化的最高等級。如果表已經處於 4NF 狀態且無法在不遺失資料完整性的情況下分解為更小的表,則該表處於 5NF 狀態。這意味著表中的每個重要連接依賴項都由候選鍵隱含。

  • 如果我們將這張表分解為更小的表以消除冗餘,我們必須確保我們仍然可以重建原始表而不會丟失任何資訊。在 5NF 中,這種分解是以不丟失任何資訊的方式完成的,並且保留所有連接依賴性。舉例說明

Database Normalization

反規範化

  • 表可以進行非規範化以提高效能。

  • 標準化增加了表格和關係的數量。

  • 跨關係存取多個表比存取單一表需要更多處理。

以上是資料庫規範化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn