SoEasy——資料庫三大範式是什麼?

一.數據庫中的範式:

範式, 英文名稱是 Normal Form,它是英國人 E.F.Codd(關係數據庫的老祖宗)在上個世紀70年代提出關係數據庫模型後總結出來的,範式是關係數據庫理論的基礎,也是我們在設計數據庫結構過程中所要遵循的規則和指導方法。簡言之就是,數據庫設計對數據的存儲性能,還有開發人員對數據的操作都有莫大的關係。所以建立科學的,規範的的數據庫是需要滿足一些規範的來優化數據數據存儲方式。在關係型數據庫中這些規範就可以稱為範式。以下就是對這三個範式的基本介紹:

第一範式(1NF):

數據表中的每一列(字段),必須是不可拆分的最小單元,也就是確保每一列的原子性。

例如: userInfo: '山東省煙臺市 1318162008' 依照第一範式必須拆分成

userInfo: '山東省煙臺市' userTel: '1318162008'兩個字段

第二範式(2NF):

滿足1NF後要求表中的所有列,都必需依賴於主鍵,而不能有 任何一列與主鍵沒有關係(一個表只描述一件事情)。

例如:訂單表只能描述訂單相關的信息,所以所有的字段都必須與訂單ID相關。

產品表只能描述產品相關的信息,所以所有的字段都必須與產品ID相關。

因此在同一張表中不能同時出現訂單信息與產品信息。

第三範式(3NF):

滿足2NF後,要求:表中的每一列都要與主鍵直接相關,而不是間接相關(表中的每一列只能依賴於主鍵)

例如:訂單表中需要有客戶相關信息,在分離出客戶表之後,訂單表中只需要有一個用戶

ID即可,而不能有其他的客戶信息,因為其他的用戶信息是直接關聯於用戶ID,而不是關聯

於訂單ID。

注意事項:

1.第二範式與第三範式的本質區別:在於有沒有分出兩張表。

第二範式是說一張表中包含了多種不同實體的屬性,那麼必須要分成多張表,第三範式是要求已經分好了多張表的話,一張表中只能有另一張標的ID,而不能有其他任何信息,(其他任何信息,一律用主鍵在另一張表中查詢)。

2.必須先滿足第一範式才能滿足第二範式,必須同時滿足第一第二範式才能滿足第三範式。


分享到:


相關文章: