數(shù)據(jù)庫設(shè)計中的14個技巧

字號:

1. 原始單據(jù)與實體之間的關(guān)系
    可以是一對一、一對多、多對多的關(guān)系。在一般情況下,它們是一對一的關(guān)系:即一張原始單據(jù)對應(yīng)且只對應(yīng)一個實體。在特殊情況下,它們可能是一對多或多對一的關(guān)系,即一張原始單據(jù)對應(yīng)多個實體,或多張原始單據(jù)對應(yīng)一個實體。這里的實體可以理解為基本表。明確這種對應(yīng)關(guān)系后,對我們設(shè)計錄入界面大有好處。
    〖例1〗:一份員工履歷資料,在人力資源信息系統(tǒng)中,就對應(yīng)三個 基本表:員工基本情況表、社會關(guān)系表、工作簡歷表。這就是“一張原始單據(jù)對應(yīng)多個實體”的典型例子。
    2. 主鍵與外鍵
    一般而言,一個實體不能既無主鍵又無外鍵。在e-r 圖中, 處于葉子部位的實體, 可以定義主鍵,也可以不定義主鍵(因為它無子孫), 但必須要有外鍵(因為它有父親)。
    主鍵與外鍵的設(shè)計,在全局數(shù)據(jù)庫的設(shè)計中,占有重要地位。當全局數(shù)據(jù)庫的設(shè)計完成以后,有個美國數(shù)據(jù)庫設(shè)計專家說:“鍵,到處都是鍵,除了鍵之外,什么也沒有”,這就是他的數(shù)據(jù)庫設(shè)計經(jīng)驗之談,也反映了他對信息系統(tǒng)核心(數(shù)據(jù)模型)的高度抽象思想。因為:主鍵是實體的高度抽象,主鍵與外鍵的配對,表示實體之間的連接。
    3. 基本表的性質(zhì)
    基本表與中間表、臨時表不同,因為它具有如下四個特性:
    (1) 原子性?;颈碇械淖侄问遣豢稍俜纸獾?。
    (2) 原始性?;颈碇械挠涗浭窃紨?shù)據(jù)(基礎(chǔ)數(shù)據(jù))的記錄。
    (3) 演繹性。由基本表與代碼表中的數(shù)據(jù),可以派生出所有的輸出數(shù)據(jù)。
    (4) 穩(wěn)定性。基本表的結(jié)構(gòu)是相對穩(wěn)定的,表中的記錄是要長期保存的。
    理解基本表的性質(zhì)后,在設(shè)計數(shù)據(jù)庫時,就能將基本表與中間表、臨時表區(qū)分開來。
    4. 范式標準
    基本表及其字段之間的關(guān)系, 應(yīng)盡量滿足第三范式。但是,滿足第三范式的數(shù)據(jù)庫設(shè)計,往往不是的設(shè)計。為了提高數(shù)據(jù)庫的運行效率,常常需要降低范式標準:適當增加冗余,達到以空間換時間的目的。
    〖例2〗:有一張存放商品的基本表,如表1所示?!敖痤~”這個字段的存在,表明該表的設(shè)計不滿足第三范式,因為“金額”可以由“單價”乘以“數(shù)量”得到,說明“金額”是冗余字段。但是,增加“金額”這個冗余字段,可以提高查詢統(tǒng)計的速度,這就是以空間換時間的作法。
    在rose 2002中,規(guī)定列有兩種類型:數(shù)據(jù)列和計算列?!敖痤~”這樣的列被稱為“計算列”,而“單價”和“數(shù)量”這樣的列被稱為“數(shù)據(jù)列”。
    表1 商品表的表結(jié)構(gòu)
    商品名稱 商品型號 單價 數(shù)量 金額
    電視機 29吋 2,500 40 100,000
    5. 通俗地理解三個范式
    通俗地理解三個范式,對于數(shù)據(jù)庫設(shè)計大有好處。在數(shù)據(jù)庫設(shè)計中,為了更好地應(yīng)用三個范式,就必須通俗地理解三個范式(通俗地理解是夠用的理解,并不是最科學最準確的理解):
    第一范式:1nf是對屬性的原子性約束,要求屬性具有原子性,不可再分解;
    第二范式:2nf是對記錄的惟一性約束,要求記錄有惟一標識,即實體的惟一性;
    第三范式:3nf是對字段冗余性的約束,即任何字段不能由其他字段派生出來,它要求字段沒有冗余。
    沒有冗余的數(shù)據(jù)庫設(shè)計可以做到。但是,沒有冗余的數(shù)據(jù)庫未必是的數(shù)據(jù)庫,有時為了提高運行效率,就必須降低范式標準,適當保留冗余數(shù)據(jù)。具體做法是:在概念數(shù)據(jù)模型設(shè)計時遵守第三范式,降低范式標準的工作放到物理數(shù)據(jù)模型設(shè)計時考慮。降低范式就是增加字段,允許冗余。