MySQL三大正規化和反正規化

2021-09-02 21:12:52 字數 900 閱讀 6935

1. 第一正規化確保資料表中每列(字段)的原子性。

如果資料表中每個欄位都是不可再分的最小資料單元,則滿足第一正規化。

例如:user使用者表,包含欄位id,username,password

2. 第二正規化在第一正規化的基礎上更進一步,目標是確保表中的每列都和主鍵相關。

如果乙個關係滿足第一正規化,並且除了主鍵之外的其他列,都依賴於該主鍵,則滿足第二正規化。

例如:乙個使用者只有一種角色,而乙個角色對應多個使用者。則可以按如下方式建立資料表關係,使其滿足第二正規化。

user使用者表,欄位id,username,password,role_id

role角色表,欄位id,name

使用者表通過角色id(role_id)來關聯角色表

3. 第三正規化

在第二正規化的基礎上更進一步,目標是確保表中的列都和主鍵直接相關,而不是間接相關。

例如:乙個使用者可以對應多個角色,乙個角色也可以對應多個使用者。則可以按如下方式建立資料表關係,使其滿足第三正規化。

user使用者表,欄位id,username,password

role角色表,欄位id,name

user_role使用者-角色中間表,id,user_id,role_id

像這樣,通過第三張表(中間表)來建立使用者表和角色表之間的關係,同時又符合正規化化的原則,就可以稱為第三正規化。

4. 反正規化化

反正規化化指的是通過增加冗餘或重複的資料來提高資料庫的讀效能。

例如:在上例中的

user_role使用者-角色中間表增加欄位role_name。

反正規化化可以減少關聯查詢時,join表的次數。

MySQL三大正規化和反正規化

1.第一正規化 確保資料表中每列 字段 的原子性。如果資料表中每個欄位都是不可再分的最小資料單元,則滿足第一正規化。比如位址可再分 例如 user使用者表,包含欄位id,username,password 2.第二正規化 在第一正規化的基礎上更進一步,目標是確保表中的每列都和主鍵相關。如果乙個關係滿...

MySQL三大正規化和反正規化

1.第一正規化 確保資料表中每列 字段 的原子性。如果資料表中每個欄位都是不可再分的最小資料單元,則滿足第一正規化。例如 user使用者表,包含欄位id,username,password 2.第二正規化 在第一正規化的基礎上更進一步,目標是確保表中的每列都和主鍵相關。如果乙個關係滿足第一正規化,並...

mysql 反正規化 mysql 正規化和反正規化

第一正規化 1nf 強調的是列的原子性,即列不能夠再分成其他幾列。第二正規化 2nf 首先是 2nf,另外包含兩部分內容一是表必須有乙個主鍵 二是沒有包含在主鍵中的列必須完全依賴於主鍵,而不能只依賴於主鍵的一部分。第三正規化 3nf 首先是 2nf,另外非主鍵列必須直接依賴於主鍵,不能存在傳遞依賴。...