資料庫的反正規化化(Denormalization)設計- IT閱讀
文章推薦指數: 80 %
資料庫的反正規化化(Denormalization)設計. mysql教程 · 發表 2018-10-08. 正規化化設計目標的主要目的就是“減少不必要的更新”。
但事事都具有兩面性,在對資料庫進行 ...
mysql教程
資料庫的反正規化化(Denormalization)設計
mysql教程
·
發表2018-10-08
正規化化設計目標的主要目的就是“減少不必要的更新”。
但事事都具有兩面性,在對資料庫進行正規化話設計的時候也不可避免的帶來了一些副作用。
一個完全正規化化設計的資料庫經常會面臨“查詢緩慢”這個問題。
資料庫越正規化化,就需要Join越多的表。
例如,把使用者地址用獨立的一張表來儲存,在需要顯示使用者地址的時候就需要去join使用者地址表。
資料庫的正規化設計其中的一些優點可能並不這麼值得稱道:
正規化化節省了儲存空間,但儲存空間卻很便宜
正規化化簡化了更新,但讀更普遍
反正規化化設計
對不可改變資料的反模式設計。
也就是說對不可改變的資料無需模式化設計。
例如,使用者資訊中要記錄該使用者的國籍,由於國家資訊(國家程式碼、簡稱都是不可改變的資料或者說改變的機率很小),所以無需在使用者資訊表中新增列來關聯國家資訊表,可以直接將相關的國家資訊列作為使用者資訊表中的列。
將多張表合併成一張。
下面舉一個這樣的例子,正規化化的資料庫設計如下。
USERTABLE使用者基本資訊表
USER_ID
FIRST_NAME
LAST_NAME
SEX
HOMETOWN
RELATIONSHIP_STATUS
12345
John
Doe
Male
Atlanta,GA
married
USER_PHONE_NUMBERSTABLE使用者電話資訊表
USER_ID(FOREIGN_KEY)
PHONE_NUMBER
PHONE_TYPE
12345
425-555-1203
Home
12345
425-555-6161
Work
12345
206-555-0932
Cell
USER_SCREEN_NAMESTABLE使用者IM資訊表
USER_ID(FOREIGN_KEY)
SCREEN_NAME
IM_SERVICE
12345
[email protected]
AIM
12345
[email protected]
Skype
對這樣的表設計進行反模式就可以將user_phone_numberstable,user_screen_namestable都併入usertable中。
USER_TABLE使用者IM資訊表
列名
說明
user_id
first_name
last_name
sex
hometown
relationship_status
phone_type_home
phone_type_work
phone_type_cell
im_service_aim
…
在提升資料庫效能的時候我們可以考慮索引、物化檢視、快取等技術,但反正規化設計的確是很重要的一種手段。
看一下Flickr的這組資料吧。
標籤:
更多相關知識…
資料庫的反正規化化(Denormalization)設計
正規化化設計目標的主要目的就是“減少不必要的更新”。
但事事都具有兩面性,在對資料庫進行正規化話設計的時候也不可避免的帶...
資料庫的三正規化
第一正規化(1NF):資料庫表中的欄位都是單一屬性的,不可再分。
這個單一屬性由基本型別構成,包括整型、實數、字元型、邏輯...
資料庫三大正規化(第一正規化,第二正規化,第三正規化)
資料庫中的三大正規化,在資料庫開發實際應用和麵試中是常見的問題。
1、正規化
英文名稱是Normal...
資料庫三大正規化詳解(通俗易懂)
正規化:英文名稱是NormalForm,它是英國人E.F.Codd(關係資料庫的老祖宗)在上個世紀70年代提出關係...
弄懂資料庫三大正規化
資料庫的設計正規化是資料庫設計所需要滿足的規範,滿足這些規範的資料庫是簡潔的、結構明晰的,同時,不會發生插入(inser...
資料庫(第一正規化,第二正規化,第三正規化)
轉載: http://blog.csdn.net/famousdt/article/details/6921622
...
資料庫三大正規化
Mysql複習
from:http://blog.csdn.net/u010503822/article/detail...
JDBC-資料庫的更新操作程式設計(三)
首先建立一個靜態方法,程式碼如下:
publicstaticStatementgetStatement(){...
物件的序列化存入資料庫,與反序列化
開發過程中遇到一個問題,我想到的解決方法是將一個dictionary字典如何存如資料庫,讀出來的時候還是這個字典
然後...
關係資料庫的查詢優化策略----總結了一些查詢優化的方法,希望可以對大家有所幫助(原創)
1 引言
隨著計算機應用技術的不斷普及和發展,資料庫系統正越來越多的走進人們的日常生活。
在要求查詢結果...
淺談資料庫的架構優化(讀書體會)
年前參加過一次培訓,講資料庫架構優化。
講師中英文混雜講的,個人英文很爛,大概記了三點。
通過負載均衡策略,有效...
MYSQL資料庫的查詢優化技術
資料庫系統是管理資訊系統的核心,基於資料庫的聯機事務處理(OLTP)以及聯機分析處理(OLAP)是銀行、企業、政府等部門...
例項講解MYSQL資料庫的查詢優化技術
資料庫系統是管理資訊系統的核心,基於資料庫的聯機事務處理(OLTP)以及聯機分析處理(OLAP)是銀行、企業、政府等部門...
關係代數對於資料庫的查詢優化的指導意義
...
MySQL詳解(17)-----------海量資料庫的查詢優化
許多程式設計師認為查詢優化是DBMS(資料庫教程管理系統)的任務,與程式設計師所編寫的SQL語句關係不大,這是錯誤的。
一...
贊助商廣告
ads
Android
WEB開發
其它
0.21986699104309
延伸文章資訊
- 1正規化or 反正規化,優缺點一次說明 - Life coding, record life.
正規化要解決的事情是降低資料的重複性,你不會在一個table 裡面看到 ... 資料庫正規化到極致,很有可能讓後續維護困難以下幾種情境可以使用反正規化.
- 2第九章邏輯資料庫設計: 關聯表的正規化
可配合「反正規化技巧」(De-normalization) 提. 高效率. ▫ 所以, 要不要正規化?或是正規化到何種程度? 的問題實在是見仁見智, 也是設計資料庫的一. 項重要考量 ...
- 3資料庫正規化與反正規化使用時機 - Mobile01
今天跟同事討論金流處理的設計,在資料庫方面有認知上的不同。1.我偏向DB自動產生流水號當唯一鍵和做索引,訂單編號另外 ... 反正規化資料庫,會讓後續接手的人看不懂.
- 4反正規化| JasonChang的學習歷程 - 點部落
正規化的目的是降低資料的重覆性、避免資料更新異常。然而,正規化只是建立資料表的原則,而非鐵的定律。如果過度正規化,在查詢來自於多個資料表的 ...
- 5[DB]為什麼要反正規化!!! - 安達利.機車行.台南
正規化(Normalization)這名詞有學過資料庫的人應該都聽過… 我剛剛學資料庫的時侯真的搞不清楚這三個字的含意… 也完全不知道為什麼要正規化… 到後來…我才知道…原來丫…