每個人都會犯錯誤,但作為數(shù)據(jù)庫管理員,我們應(yīng)該盡量避免失誤,從而為公司降低成本,并確保數(shù)據(jù)質(zhì)量。下面的五個數(shù)據(jù)庫設(shè)計失誤必須引起我們的警惕。
1.選擇恰當(dāng)?shù)臄?shù)據(jù)類型,避免數(shù)據(jù)庫的過度膨脹
請留意數(shù)據(jù)類型的選擇。例如,如果你很清楚某列的數(shù)值范圍在0-100,000之間,那么就不必使用BIGINT數(shù)據(jù)類型,因為INT類型就已經(jīng)足夠了。
選擇前者意味著,你每插入一條數(shù)據(jù)就比后者浪費了4個字節(jié)。這聽起來也許微不足道,但隨著數(shù)據(jù)量的增長,問題將會凸顯出來。
2.遵循ISO標(biāo)準(zhǔn),保證異構(gòu)數(shù)據(jù)庫系統(tǒng)之間的互通性
大型企業(yè)的IT基礎(chǔ)架構(gòu)非常復(fù)雜,可能需要不同數(shù)據(jù)庫系統(tǒng)之間的數(shù)據(jù)交換。我們以TIMESTAMP數(shù)據(jù)類型為例,在Transact-SQL中定義的TIMESTAMP數(shù)據(jù)類型與ISO標(biāo)準(zhǔn)有所不同。其它的數(shù)據(jù)庫系統(tǒng)與ISO標(biāo)準(zhǔn)也有所差別。所以,我們要盡可能地遵循ISO標(biāo)準(zhǔn),以保證異構(gòu)數(shù)據(jù)庫系統(tǒng)之間的互通性。
3.以恰當(dāng)?shù)臋C(jī)制實現(xiàn)序列化
保證在數(shù)據(jù)庫中插入記錄的序列化非常有必要,許多數(shù)據(jù)庫設(shè)計者通過各種機(jī)制來確保序列化的應(yīng)用。一些數(shù)據(jù)庫設(shè)計者喜歡在數(shù)據(jù)庫設(shè)計中引入GUID,但引入GUID并不是一個好的選擇,這是因為GUID默認(rèn)并非序列化的,使用GUID列作為主鍵和/或索引甚至?xí)斐尚阅軉栴}。
4.創(chuàng)建索引時要將外鍵考慮在內(nèi)
如果你的數(shù)據(jù)庫中已定義外鍵,那么在建立索引的時候就要多加留神了,要把這種情況納入數(shù)據(jù)庫設(shè)計的整體之中去。
5.不要忽略與業(yè)務(wù)需求相關(guān)的候選鍵
數(shù)據(jù)庫設(shè)計者不應(yīng)只將注意力放在代理鍵上,而忘卻業(yè)務(wù)需求。顯然,這對數(shù)據(jù)質(zhì)量非常不利。如果你沒有在與業(yè)務(wù)相關(guān)的候選鍵上建立任何約束或索引,可能會出現(xiàn)重復(fù)值。
請遠(yuǎn)離上面的5個數(shù)據(jù)庫設(shè)計失誤吧,這會幫助你為公司節(jié)省成本,并提高數(shù)據(jù)質(zhì)量。
原文鏈接:Do You Make These 5 Database Design Mistakes?
新聞熱點
疑難解答
圖片精選