要求三:表中記錄應(yīng)該有一個唯一的標識符
在數(shù)據(jù)庫表設(shè)計的時候,數(shù)據(jù)庫管理員應(yīng)該養(yǎng)成一個好習(xí)慣,用一個ID號來唯一的標識行記錄,而不要通過名字、編號等字段來對紀錄進行區(qū)分。每個表都應(yīng)該有一個ID列,任何兩個記錄都不可以共享同一個ID值。另外,這個ID值最好有數(shù)據(jù)庫來進行自動管理,而不要把這個任務(wù)給前臺應(yīng)用程序。否則的話,很容易產(chǎn)生ID值不統(tǒng)一的情況。
另外,在數(shù)據(jù)庫設(shè)計的時候,最好還能夠加入行號。如在銷售訂單管理中,ID號是用戶不能夠維護的。但是,行號用戶就可以維護。如在銷售訂單的行中,用戶可以通過調(diào)整行號的大小來對訂單行進行排序。通常情況下,ID列是以1為單位遞進的。但是,行號就要以10為單位累進。如此,正常情況下,行號就以10、20、30依次擴展下去。若此時用戶需要把行號為30的紀錄調(diào)到第一行顯示。此時,用戶在不能夠更改ID列的情況下,可以更改行號來實現(xiàn)。如可以把行號改為1,在排序時就可以按行號來進行排序。如此的話,原來行號為30的紀錄現(xiàn)在行號變?yōu)榱?,就可以在第一行中顯示。這是在實際應(yīng)用程序設(shè)計中對ID列的一個有效補充。這個內(nèi)容在教科書上是沒有的。需要在實際應(yīng)用程序設(shè)計中,才會掌握到這個技巧。
要求四:數(shù)據(jù)庫對象要有統(tǒng)一的前綴名
一個比較復(fù)雜的應(yīng)用系統(tǒng),其對應(yīng)的數(shù)據(jù)庫表往往以千計。若讓數(shù)據(jù)庫管理員看到對象名就了解這個數(shù)據(jù)庫對象所起的作用,恐怕會比較困難。而且在數(shù)據(jù)庫對象引用的時候,數(shù)據(jù)庫管理員也會為不能迅速找到所需要的數(shù)據(jù)庫對象而頭疼。
為此,筆者建立,在開發(fā)數(shù)據(jù)庫之前,最好能夠花一定的時間,去制定一個數(shù)據(jù)庫對象的前綴命名規(guī)范。如筆者在數(shù)據(jù)庫設(shè)計時,喜歡跟前臺應(yīng)用程序協(xié)商,確定合理的命名規(guī)范。筆者最常用的是根據(jù)前臺應(yīng)用程序的模塊來定義后臺數(shù)據(jù)庫對象前綴名。如跟物料管理模塊相關(guān)的表可以用M為前綴;而以訂單管理相關(guān)的,則可以利用C作為前綴。具體采用什么前綴可以以用戶的愛好而定義。但是,需要注意的是,這個命名規(guī)范應(yīng)該在數(shù)據(jù)庫管理員與前臺應(yīng)用程序開發(fā)者之間達成共識,并且嚴格按照這個命名規(guī)范來定義對象名。
其次,表、視圖、函數(shù)等最好也有統(tǒng)一的前綴。如視圖可以用V為前綴,而函數(shù)則可以利用F為前綴。如此數(shù)據(jù)庫管理員無論是在日常管理還是對象引用的時候,都能夠在最短的時間內(nèi)找到自己所需要的對象。
要求五:盡量只存儲單一實體類型的數(shù)據(jù)
這里將的實體類型跟數(shù)據(jù)類型不是一回事,要注意區(qū)分。這里講的實體類型是指所需要描述對象的本身。筆者舉一個例子,估計大家就可以明白其中的內(nèi)容了。如現(xiàn)在有一個圖書館里系統(tǒng),有圖書基本信息、作者信息兩個實體對象。若用戶要把這兩個實體對象信息放在同一張表中也是可以的。如可以把表設(shè)計成圖書名字、圖書作者等等?墒侨绱嗽O(shè)計的話,會給后續(xù)的維護帶來不少的麻煩。
如當后續(xù)有圖書出版時,則需要為每次出版的圖書增加作者信息,這無疑會增加額外的存儲空間,也會增加記錄的長度。而且若作者的情況有所改變,如住址改變了以后,則還需要去更改每本書的記錄。同時,若這個作者的圖書從數(shù)據(jù)庫中全部刪除之后,這個作者的信息也就蕩然無存了。很明顯,這不符合數(shù)據(jù)庫設(shè)計規(guī)范化的需求。
遇到這種情況時,筆者建議可以把上面這張表分解成三種獨立的表,分別為圖書基本信息表、作者基本信息表、圖書與作者對應(yīng)表等等。如此設(shè)計以后,以上遇到的所有問題就都引刃而解了。
以上五條是在數(shù)據(jù)庫設(shè)計時達到規(guī)范化水平的基本要求。除了這些另外還有很多細節(jié)方面的要求,如數(shù)據(jù)類型、存儲過程等等。而且,數(shù)據(jù)庫規(guī)范往往沒有技術(shù)方面的嚴格限制,主要依靠數(shù)據(jù)庫管理員日常工作經(jīng)驗的累積。
相關(guān)推薦:軟考數(shù)據(jù)庫系統(tǒng)工程師考前練習(xí)題及答案匯總北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |