日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

四、物理优化(1)范式化

發(fā)布時間:2023/12/9 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 四、物理优化(1)范式化 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、范式化的概念

  范式化(Normalization)的目標(biāo)是消除數(shù)據(jù)冗余,減小物理存儲空間。

  常用的范式有以下3種:

1.?第一范式(1NF)

  在任何一個關(guān)系數(shù)據(jù)庫中,1NF是對關(guān)系模式的基本要求,不滿足1NF的數(shù)據(jù)庫就不是關(guān)系數(shù)據(jù)庫。

  所謂1NF是指數(shù)據(jù)庫表的每一列都是不可分割的基本數(shù)據(jù)項,同一列中不能有多個值,即實體中的某個屬性不能有多個值或者不能有重復(fù)的屬性。如果出現(xiàn)重復(fù)的屬性,就可能需要定義一個新的實體,新的實體由重復(fù)的屬性構(gòu)成,新實體與原實體之間為一對多關(guān)系。在1NF中表的每一行只包含一個實例的信息。

  例如,對于員工信息表,不能將員工信息都放在一列中顯示,也不能將其中的兩列或多列在一列中顯示;員工信息表的每一行只表示一個員工的信息,一個員工的信息在表中只出現(xiàn)一次。簡而言之,第一范式就是無重復(fù)的列。  

?

2.?第二范式(2NF)

  2NF是在1NF的基礎(chǔ)上建立起來的,即滿足2NF必須先滿足1NF。2NF要求數(shù)據(jù)庫表中的每個實例或行必須可以被唯一地區(qū)分。為實現(xiàn)區(qū)分通常需要為表加上一個列,以存儲各個實例的唯一標(biāo)識。

  例如,員工信息表中加上了“員工編號”列,因為每個員工的員工編號是唯一的,因此每個員工可以被唯一區(qū)分。這個唯一屬性列被稱為主關(guān)鍵字或主鍵、主碼。

  2NF要求實體的屬性完全依賴于主關(guān)鍵字。所謂完全依賴是指不能存在僅依賴主關(guān)鍵字一部分的屬性,如果存在,那么這個屬性和主關(guān)鍵字的這一部分應(yīng)該分離出來形成一個新的實體,新實體與原實體之間是一對多的關(guān)系。為實現(xiàn)區(qū)分通常需要為表加上一個列,以存儲各個實例的唯一標(biāo)識。簡而言之,第二范式就是非主屬性非部分依賴于主關(guān)鍵字。  

?

3.?第三范式(3NF)

  3NF要求一個數(shù)據(jù)庫表中不包含已在其它表中已包含的非主關(guān)鍵字信息。簡而言之,3NF就是屬性不依賴于其它非主屬性。?滿足3NF必須先滿足2NF。?

  例如,存在一個部門信息表,有“部門編號”、“部門名稱”、“部門簡介”等列。那么在員工信息表中列出“部門編號”后就不能再將“部門名稱”、“部門簡介”等與部門有關(guān)的信息再加入員工信息表中。如果不存在部門信息表,則3NF也應(yīng)該構(gòu)建它,否則就會有大量的數(shù)據(jù)冗余。

?

?

二、范式化的優(yōu)點

1.?從設(shè)計角度

  范式化之后,每個表的結(jié)構(gòu)非常明確,對于設(shè)計人員來說非常清晰明了,更易于修改系統(tǒng)的架構(gòu)。

?

2.?從性能的角度?

  范式化之后,每個表變成最窄,因此每一頁可以容納更多的行。查詢、排序、索引的開銷都會降低。

?

?

三、反范式化

1.?范式化的缺點

  當(dāng)數(shù)據(jù)來自不同的表,需要join,當(dāng)基表的記錄非常多時,這也將是一個消耗資源的重要原因。此外,頻繁查詢一些派生列時需要臨時計算,這也會影響性能,而且可能會使查詢的設(shè)計過程變得復(fù)雜。

  例如:對于一張超市POS機的流水單明細(xì)表,3NF之后只記錄商品ID、單價、數(shù)量、單項折扣等信息,查詢時才臨時產(chǎn)生一個單項金額。?而這張流水單明細(xì)表對應(yīng)的流水單主表,同樣也不會保存金額,在查詢時通過聚合函數(shù)臨時計算。

?

  對于上述表結(jié)構(gòu),如果頻繁查詢金額,并且表的記錄數(shù)非常多,性能就會受影響。

?

2.?反范式化(De-normalization)

  在范式化的架構(gòu)遇到性能問題時,就要考慮放寬范式的要求。通常要仔細(xì)權(quán)衡,將更新(增、刪、改)與查詢這兩者的開銷進(jìn)行對比。

  例如,在數(shù)據(jù)更改時就直接計算聚合值,而不是在查詢時再臨時計算。

?

3.?反范式化的優(yōu)勢

(1)減少join的數(shù)量

(2)減少外鍵的數(shù)量

(3)減少索引的數(shù)量,從而節(jié)省存儲空間

(4)加快查詢速度,因為聚合值已經(jīng)預(yù)先計算

(5)某些情況下可能減少表的數(shù)目?

?

四、反范式化的缺點

1.?雖然加速查詢,但降低寫入速度。

2.?需要考慮應(yīng)用程序是否適應(yīng)。

3.?可能需要增加物理表。

4.?可能使代碼變得簡單,也可能更復(fù)雜。

?

五、范式化?vs.?反范式化

  范式化對表結(jié)構(gòu)的嚴(yán)格要求,可能會影響性能。在設(shè)計階段,務(wù)必權(quán)衡查詢與更新(增刪改)的開銷對比。

1.?考慮范式化

  較多的更新,而較少的查詢時。

?

2.?考慮反范式化

  較少的更新,而較多的查詢時。

?

?

本文結(jié)語:

  范式化和反范式化各有優(yōu)勢與短板,需要從存儲空間、維護(hù)的開銷、查詢的開銷等方面綜合考量。

?

總結(jié)

以上是生活随笔為你收集整理的四、物理优化(1)范式化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。