99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

數(shù)據(jù)中設(shè)計(jì)中的范式與反范式

2018-02-24 16:16 更新

設(shè)計(jì)關(guān)系數(shù)據(jù)庫(kù)時(shí),遵從不同的規(guī)范要求,設(shè)計(jì)出合理的關(guān)系型數(shù)據(jù)庫(kù),這些不同的規(guī)范要求被稱(chēng)為不同的范式,各種范式呈遞次規(guī)范,越高的范式數(shù)據(jù)庫(kù)冗余越小。但是有些時(shí)候一昧的追求范式減少冗余,反而會(huì)降低數(shù)據(jù)讀寫(xiě)的效率,這個(gè)時(shí)候就要反范式,利用空間來(lái)?yè)Q時(shí)間。

目前關(guān)系數(shù)據(jù)庫(kù)有六種范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又稱(chēng)完美范式)。滿足最低要求的范式是第一范式(1NF)。在第一范式的基礎(chǔ)上進(jìn)一步滿足更多規(guī)范要求的稱(chēng)為第二范式(2NF),其余范式以次類(lèi)推。一般說(shuō)來(lái),數(shù)據(jù)庫(kù)只需滿足第三范式(3NF)就行了。

三范式

第一范式(1NF)

即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只要數(shù)據(jù)庫(kù)是關(guān)系型數(shù)據(jù)庫(kù)(mysql/oracle/db2/informix/sysbase/sql server),就自動(dòng)的滿足1NF。

關(guān)系型數(shù)據(jù)庫(kù): mysql/oracle/db2/informix/sysbase/sql server
非關(guān)系型數(shù)據(jù)庫(kù): (特點(diǎn): 面向?qū)ο蠡蛘呒?
NoSql數(shù)據(jù)庫(kù): MongoDB/redis(特點(diǎn)是面向文檔)

第二范式(2NF)

第二范式(2NF)是在第一范式(1NF)的基礎(chǔ)上建立起來(lái)的,即滿足第二范式(2NF)必須先滿足第一范式(1NF)。第二范式(2NF)要求數(shù)據(jù)庫(kù)表中的每個(gè)實(shí)例或行必須可以被惟一地區(qū)分。為實(shí)現(xiàn)區(qū)分通常需要我們?cè)O(shè)計(jì)一個(gè)主鍵來(lái)實(shí)現(xiàn)(這里的主鍵不包含業(yè)務(wù)邏輯)

第三范式(3NF)

滿足第三范式(3NF)必須先滿足第二范式(2NF)。簡(jiǎn)而言之,第三范式(3NF)要求一個(gè)數(shù)據(jù)庫(kù)表中不包含已在其它表中已包含的非主鍵字段。就是說(shuō),表的信息,如果能夠被推導(dǎo)出來(lái),就不應(yīng)該單獨(dú)的設(shè)計(jì)一個(gè)字段來(lái)存放(能盡量外鍵join就用外鍵join)。很多時(shí)候,我們?yōu)榱藵M足第三范式往往會(huì)把一張表分成多張表

反三范式

沒(méi)有冗余的數(shù)據(jù)庫(kù)未必是最好的數(shù)據(jù)庫(kù),有時(shí)為了提高運(yùn)行效率,就必須降低范式標(biāo)準(zhǔn),適當(dāng)保留冗余數(shù)據(jù)。具體做法是: 在概念數(shù)據(jù)模型設(shè)計(jì)時(shí)遵守第三范式,降低范式標(biāo)準(zhǔn)的工作放到物理數(shù)據(jù)模型設(shè)計(jì)時(shí)考慮。降低范式就是增加字段,減少了查詢(xún)時(shí)的關(guān)聯(lián),提高查詢(xún)效率,因?yàn)樵跀?shù)據(jù)庫(kù)的操作中查詢(xún)的比例要遠(yuǎn)遠(yuǎn)大于DML的比例。但是反范式化一定要適度,并且在原本已滿足三范式的基礎(chǔ)上再做調(diào)整的。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)