資料庫中的正規化和反正規化詳解!
正規化是關聯式資料庫理論的基礎,也是我們在設計資料庫結構過程中所要遵循的規則和指導方法。資料庫的設計正規化是資料庫設計所需要滿足的規範。只有理解資料庫的設計正規化,才能設計出率、優雅的資料庫,否則可能會設計出錯誤的資料庫。
反正規化,不滿足正規化的模型,就是反正規化模型。反正規化跟正規化所要求的正好相反,在反正規化的設計模式,我們可以允許適當的資料的冗餘,用這個冗餘去取運算元據時間的縮短。本質上就是用空間來換取時間,把資料冗餘在多個表中,當查詢時可以減少或者是避免表之間的關聯。
RDBMS模型設計過程中,常常使用正規化約束我們的模型,但在NOSQL模型中則大量採用反正規化。
資料庫中正規化和反正規化的的主要區別在於:
在正規化化的資料庫中,每個事實資料會出現並且只出現一次;相反,在反正規化化的資料庫中,資訊是冗餘的,可能會儲存在多個地方。
正規化化的優點:
1)正規化化的新操作通常比反正規化化要快。
2)當資料較好地正規化化時,就只有很少或者沒有重複資料,所以只需要修改少的資料。
3)正規化化的表通常小,可以好地放在記憶體裡,所以執行操作會快。
4)很少有多餘的資料意味著檢索列表資料時少需要DISTINCT或者GROUP BY語句。
正規化化設計的schema的缺點是通常需要關聯,較多的關聯可能使得一些索引策略無效,例如,正規化化可能將列存放在不同的表中,而這些列如果在一個表中本可以屬於同一個索引。
反正規化的schema因為所有資料都在一張表中,可以很好地避免關聯。缺點是update操作的代價高,需要新多個表,至於這會不會是一個問題,需要考慮新的頻率以及新的時長,並和執行select查詢的頻率進行比較。
從另一個父表冗餘一些資料到子表的理由通常是排序的需要。
快取衍生值也是有用的。如果需要顯示每個使用者發了多少訊息(像很多論壇做的),可以每次執行一個昂貴的子查詢來計算並顯示它;也可以在user表中建一個num_messages列,每當使用者發新訊息時新這個值。
本文來自千鋒教育,轉載請註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2787068/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java學習筆記:資料庫中的正規化和反正規化Java筆記資料庫
- 手把手教你實現json巢狀物件的正規化化和反正規化化JSON巢狀物件
- 【一文秒懂】帶你徹底搞懂正規化與反正規化資料庫設計資料庫
- 正規化(Normal Form)是資料庫設計中的概念。新的正規化(paradigm)ORM資料庫
- 資料庫三大正規化資料庫
- 啥是資料庫正規化資料庫
- 資料庫三正規化資料庫
- 資料庫 三大正規化資料庫
- 前端資料正規化化前端
- 資料庫——三正規化理解資料庫
- 資料庫三大正規化 Mysql資料庫MySql
- 資料庫正規化與例項資料庫
- 關聯式資料庫正規化詳解(Normal form,簡稱NF)資料庫ORM
- 八、資料庫的歸約,三大正規化(規範資料庫設計)資料庫
- 資料庫設計三正規化資料庫
- 資料庫表設計三正規化資料庫
- 資料庫學習(一)三正規化資料庫
- 資料庫基礎知識詳解三:MVCC、正規化以及表連線方式資料庫MVC
- 資料庫設計之三正規化的的理解資料庫
- 1.2.4 資料庫規範化資料庫
- 資料庫系統------函式依賴與正規化資料庫函式
- 關係型資料庫設計三大正規化資料庫
- 你還記得資料庫三正規化嗎?資料庫
- 【資料庫】關係模式的正規化的簡明判斷資料庫模式
- 關聯式資料庫的正規化(Normal Form)知識點資料庫ORM
- javaWeb-day03-約束、資料庫設計、正規化、資料庫備份JavaWeb資料庫
- 資料庫-三正規化優化與不推薦使用外來鍵資料庫優化
- 資料庫建表設計六正規化介紹枘雍資料庫
- 資料庫設計三大正規化應用例項剖析資料庫
- 資料庫表規範化問題資料庫
- 新的Lakehouse,遲來的資料正規化轉變
- 正規化判斷
- 理解資料庫規範化的意義ZI資料庫
- 詳解正規表示式
- MySQL系列資料庫設計三正規化教程示例隍啃MySql資料庫
- 資料探勘實驗(一)資料規範化【最小-最大規範化、零-均值規範化、小數定標規範化】
- MySQL 三大正規化MySql
- 機器學習中的範數規則化-L0,L1和L2正規化機器學習