1. 程式人生 > >資料庫設計之備用欄位

資料庫設計之備用欄位

前幾天在做一個web專案設計資料庫時,一直在考慮是否需要設定備用欄位。自己感覺增加備用欄位用處不大,效率低,破壞命名標準。後來上網查了一下有一下比較:

有必要:

如果沒有備用欄位,如果後期要加欄位,用add column的方法會改變原先的資料庫儲存結構,造成資料移動,移動需要時間,而且會移動到其他資料塊。(很專業的資料庫知識,不是很懂)總之意思是add column會影響資料庫效能,造成一些不可預知的錯誤。

沒必要:

問題一:增加大量備用欄位,必定會浪費很多空間,儘管其中可能都沒有具體的資料,但是僅僅是空欄位也會佔據一定的空間的。

問題二:由於命名的特點,如果沒有完善的文件管理流程,用不了多久(可能也就是兩三年),就沒有人能夠說清楚到底哪個欄位代表的是什麼意義了。就算有文件管理,這些管理工作也會比較麻煩,而且在每次使用的時候都需要申請,還有可能會出現衝突的情況。

問題三:增加了這些備用欄位就真的會夠用嗎

?不一定,因為我們只是每個型別的欄位留出幾個備用,如果數量超過,或者要使用特殊的、不常用的型別的時候,還是需要增加新的欄位。比方說在一個表中,我們要儲存照片,那麼可能就要增加一個blob型別的photo欄位,這在初期設計的時候可不一定會留出這樣的備用欄位。而且如果沒有完善的管理,誰又能說清楚倒底哪個欄位已經被使用,哪個欄位還可以使用呢?到時候還不是要增加新的欄位。  

不設定備用欄位時,增加欄位解決方案

如果數量很少,而且資訊的性質與原表密切相關,那麼就可以直接在原表上增加欄位,並將相關的資料更新進去。

如果數量較大,或者並非是原表物件至關重要的屬性,那麼就可以新增一個表,然後通過鍵值連線起來。

對於表的資料的儲存位置所導致的效能問題,我們可以通過在特定時間對資料庫的資料進行重組來解決,而這項工作對於長期執行的資料庫來說,也是需要定期進行的