1冗余字段的定義
冗余字段是指反復出現的,重復的字段。也就是說在數據庫中如果表a出現過字段b,表c再出現字段b,那么字段b就可以被看作是冗余字段了。
2冗余字段的弊端
如果參照三范式,那我們在設計數據庫的時候就必須致力於消滅冗余字段,畢竟如果我們需要更新某條記錄,而這條記錄又恰好包含了冗余字段,那么我就必須更新所有攜有冗余字段的表。如果冗余冗余字段只出現在很少的表中那么這不算什么大問題。但是如果有很多很多張表都攜有冗余字段,不僅會使數據庫性能降低還會帶來數據不一致等一系列問題。所以,我們目前所接觸的經典教材都在強調三范式還是很有道理的。
3冗余字段的用處
冗余字段確實有很大地弊端,這是否說明我們就該將之視為洪水猛獸,棄而不用呢?大可不必。舉個例子來說表a有三個字段:員工號,員工姓名,員工出生日期;表b有三個字段員工號,員工工資,員工工齡;這樣的設計符合三范式。但是我們發現當我們查詢員工工齡的時候不僅僅需要知道員工號,還需要知道員工姓名。這個時候我們需要使用join語句或者使用視圖來獲取員工工齡和員工姓名。當數據只有百條,千條時這樣設計並沒有什么問題,但當數據庫中有幾萬條數據時再使用join語句就未必是個好方法了。這時候如果在表b中增加一個姓名的冗余字段就能提升數據庫的性能。
4冗余字段的使用原則
冗余字段不是妖魔鬼怪。在像我這樣的菜鳥眼中它可能像一頭獅子一樣凶猛可怕,但在高手面前,它卻會像小貓一樣乖巧可愛。想要成為高手,就必須學會駕馭雄獅,而想要駕馭雄獅就必須去了解它。下面來討論一下冗余字段的使用原則。
a不隨便使用冗余字段。
b只在關鍵數據上使用冗余字段
c根據業務需求決定是否使用冗余字段
d查詢多更新少 加冗余