目錄反三正規化
對於三正規化和反三正規化的選擇
(參考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 -> sdept和sdept -> 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.第二正規化 在第一正規化的基礎上更進一步,目標是確保表中的每列都和主鍵相關。如果乙個關係滿足第一正規化,並...