全國- 「切換城市」 培訓(xùn)家旗下培訓(xùn)平臺
手機版
網(wǎng)站導(dǎo)航

數(shù)據(jù)庫中的范式和反范式區(qū)別詳解

2020.03.20

發(fā)布者:網(wǎng)上發(fā)布

??范式是關(guān)系數(shù)據(jù)庫理論的基礎(chǔ),也是我們在設(shè)計數(shù)據(jù)庫結(jié)構(gòu)過程中所要遵循的規(guī)則和指導(dǎo)方法。數(shù)據(jù)庫的設(shè)計范式是數(shù)據(jù)庫設(shè)計所需要滿足的規(guī)范。只有理解數(shù)據(jù)庫的設(shè)計范式,才能設(shè)計出率、優(yōu)雅的數(shù)據(jù)庫,否則可能會設(shè)計出錯誤的數(shù)據(jù)庫。
??反范式,不滿足范式的模型,就是反范式模型。反范式跟范式所要求的正好相反,在反范式的設(shè)計模式,我們可以允許適當(dāng)?shù)臄?shù)據(jù)的冗余,用這個冗余去取操作數(shù)據(jù)時間的縮短。本質(zhì)上就是用空間來換取時間,把數(shù)據(jù)冗余在多個表中,當(dāng)查詢時可以減少或者是避免表之間的關(guān)聯(lián)。RDBMS模型設(shè)計過程中,常常使用范式約束我們的模型,但在NOSQL模型中則大量采用反范式。數(shù)據(jù)庫中范式和反范式的的主要區(qū)別在于:
??在范式化的數(shù)據(jù)庫中,每個事實數(shù)據(jù)會出現(xiàn)并且只出現(xiàn)一次;相反,在反范式化的數(shù)據(jù)庫中,信息是冗余的,可能會存儲在多個地方。
??范式化的優(yōu)點:
??1)范式化的更新操作通常比反范式化要快。
??2)當(dāng)數(shù)據(jù)較好地范式化時,就只有很少或者沒有重復(fù)數(shù)據(jù),所以只需要修改更少的數(shù)據(jù)。
??3)范式化的表通常更小,可以更好地放在內(nèi)存里,所以執(zhí)行操作會更快。
??4)很少有多余的數(shù)據(jù)意味著檢索列表數(shù)據(jù)時更少需要DISTINCT或者GROUP BY語句。
??范式化設(shè)計的schema的缺點是通常需要關(guān)聯(lián),較多的關(guān)聯(lián)可能使得一些索引策略無效,例如,范式化可能將列存放在不同的表中,而這些列如果在一個表中本可以屬于同一個索引。
??反范式的schema因為所有數(shù)據(jù)都在一張表中,可以很好地避免關(guān)聯(lián)。缺點是update操作的代價高,需要更新多個表,至于這會不會是一個問題,需要考慮更新的頻率以及更新的時長,并和執(zhí)行select查詢的頻率進行比較。從另一個父表冗余一些數(shù)據(jù)到子表的理由通常是排序的需要。
??緩存衍生值也是有用的。如果需要顯示每個用戶發(fā)了多少消息,可以每次執(zhí)行一個昂貴的子查詢來計算并顯示它;也可以在user表中建一個num_messages列,每當(dāng)用戶發(fā)新消息時更新這個值。

上一篇:學(xué)了健康管理師工作好不好找 下一篇:服裝設(shè)計手繪學(xué)習(xí)課程有哪些

推薦機構(gòu)

熱門課程

本站展示的所有信息內(nèi)容系由機構(gòu)或個人用戶發(fā)布,可能存在發(fā)布者所發(fā)布的信息,并未獲得品牌所有人有效授權(quán)。本平臺會加強審核,但無法完全排除差錯或疏漏。鄭重聲明:本平臺僅為免費注冊用戶提供免費的信息發(fā)布渠道,但不對其發(fā)布信息的真實性、準(zhǔn)確性和合法性負責(zé),對此也不承擔(dān)任何法律責(zé)任。對于從本網(wǎng)站或本網(wǎng)站的任何有關(guān)服務(wù)所獲得的資訊、內(nèi)容或廣告,您接受或信賴任何信息所產(chǎn)生之風(fēng)險應(yīng)自行承擔(dān),本網(wǎng)對任何使用或提供本網(wǎng)站信息的商業(yè)活動及其風(fēng)險不承擔(dān)任何責(zé)任。,如果侵犯,請及時通知我們,發(fā)送郵件至15610150293@126.com本網(wǎng)站將在第一時間及時刪除。