MySQL三大正規化和反正規化

2021-09-29 13:01:20 字數 697 閱讀 5229

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. 反正規化化

MySQL三大正規化和反正規化

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

MySQL三大正規化和反正規化

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

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

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