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三大正規化
第一正規化 確保每列的原子性.如果每列 或者每個屬性 都是不可再分的最小資料單元 也稱為最小的原子單元 則滿足第一正規化.例如 顧客表 姓名 編號 位址 其中 位址 列還可以細分為國家 省 市 區等。第二正規化 在第一正規化的基礎上更進一層,目標是確保表中的每列都和主鍵相關.如果乙個關係滿足第一正規...
MySQL三大正規化
資料庫 的三個正規化 指的是什麼呢?即 屬性唯一,記錄唯一,表唯一。下面我們用一張關係圖來三者之間的關係。第一正規化 1nf 資料庫表中的字段的 屬性都是單一的,不可再分。這個單一屬性由哪些型別組成呢?主要是基本型別構成,包括整型 實數 字元型 邏輯型 日期型等。第二正規化 2nf 資料庫表 中不存...
mysql三大正規化
資料庫設計正規化 關聯式資料庫中的關係必須滿足一定的要求,即滿足不同的正規化。關聯式資料庫有六種正規化 第一正規化 1nf 第二正規化 2nf 第三正規化 3nf 巴德斯科正規化 bcnf 第四正規化 4nf 和第五正規化 5nf 滿足最低要求的正規化是第一正規化 1nf 在第一正規化的基礎上進一步...