MySQL三正規化與反三正規化

2022-07-12 18:18:08 字數 2012 閱讀 5487

目錄反三正規化

對於三正規化和反三正規化的選擇

(參考cs-notes : 資料庫/資料庫系統原理.html#正規化)

屬性不可再分;

即表中的字段不能再拆分

例: 乙個name屬性可以分為firstname屬性lastname屬性,則不符合第一正規化。

表中有鍵碼,非主屬性完全依賴鍵碼;

即表中的非主屬性完全依賴於鍵碼,可以根據鍵碼去獲取。

例:sno

sname

sdept

mname

cname

grade

1學生-1

學院-1

院長-1

課程-1902

學生-2

學院-2

院長-2

課程-2802

學生-2

學院-2

院長-2

課程-1

1003

學生-3

學院-2

院長-2

課程-2

95以上學生課程關係中, 為鍵碼,有如下依賴關係:

可以分解為

​ 表1

snosname

sdept

mname

1學生-1

學院-1

院長-1

2學生-2

學院-2

院長-2

3學生-3

學院-2

院長-2

有以下函式依賴:

snocname

grade

1課程-1902

課程-2802

課程-1

1003

課程-2

95有以下函式依賴:

非主鍵字段不能相互依賴;

即非主鍵欄位與主鍵不能存在傳遞依賴。

例:表1中sno -> sdept -> mname,存在傳遞依賴;

​ 可以分解為表2和表3將依賴分解為sno -> sdeptsdept -> mname

(表1)

snosname

sdept

mname

1學生-1

學院-1

院長-1

2學生-2

學院-2

院長-2

3學生-3

學院-2

院長-2

(表2)

snosname

sdept

1學生-1

學院-1

2學生-2

學院-2

3學生-3

學院-2

(表3)

sdept

mname

學院-1

院長-1

學院-2

院長-2

優點:

減少資料冗餘

正規化化的更新操作比反正規化化更快

正規化化的錶比反正規化化的表更小

缺點:

查詢經常需要關聯多個表

難以進行索引優化

優點:

可以減少表的關聯

可以設計有效的索引,便於索引優化

缺點:

存在較多冗餘資料

修改資料的維護成本較高

在概念資料模型設計時遵守第三正規化,降低正規化標準的工作放到物理資料模型設計時考慮。

MySQL三大正規化和反正規化

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

MySQL三大正規化和反正規化

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

MySQL三大正規化和反正規化

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