(一)數(shù)據(jù)庫設(shè)計(jì)的策略與步驟
1. 數(shù)據(jù)庫設(shè)計(jì)的策略
- 自頂向下
是從一般到特殊的開發(fā)策略。先構(gòu)造抽象的高層書籍模型,然后逐步構(gòu)造越來越詳細(xì)的描述和模型,直到能識別特定的數(shù)據(jù)庫及其應(yīng)用為止。 - 自底向上
采用與抽象相反的順序進(jìn)行。從各種基本業(yè)務(wù)和數(shù)據(jù)處理著手,然后將各子系統(tǒng)進(jìn)行綜合和集中,進(jìn)行上一層系統(tǒng)的分析和設(shè)計(jì),最后得到整個信息系統(tǒng)的分析和設(shè)計(jì)。
2. 數(shù)據(jù)庫設(shè)計(jì)的步驟
- 用戶需求分析
- 概念設(shè)計(jì)
- 邏輯設(shè)計(jì)
- 物理設(shè)計(jì)
(二)需求分析
1. 需求分析的任務(wù)、目標(biāo)及方法
任務(wù): 綜合各個用戶的應(yīng)用需求,對現(xiàn)實(shí)世界要處理的對象進(jìn)行詳細(xì)調(diào)查,在了解現(xiàn)行系統(tǒng)的情況,確定新系統(tǒng)功能的過程中,收集支持系統(tǒng)目標(biāo)的基礎(chǔ)數(shù)據(jù)及處理方法。
要求:
- 信息要求
用戶需要在系統(tǒng)中保存哪些信息,由這些保存的信息要得到什么樣的信息,這些信息以及信息間應(yīng)當(dāng)滿足的完整性要求。 - 處理要求
用戶在系統(tǒng)中要實(shí)現(xiàn)什么樣的操作功能,對保存信息的處理過程和方式,各種操作處理的頻度、響應(yīng)時間要求、處理方式等。 - 系統(tǒng)要求
系統(tǒng)要求包括安全性要求、使用方式要求和擴(kuò)充性要求。

2. 需求分析階段的文檔
需求分析階段的成果是系統(tǒng)需求說明書,主要包括數(shù)據(jù)流圖、數(shù)據(jù)字典、各種說明性表格、統(tǒng)計(jì)輸出表和系統(tǒng)功能結(jié)構(gòu)圖等。
系統(tǒng)需求說明書是以后設(shè)計(jì)、開發(fā)、測試和驗(yàn)收等過程的重要依據(jù)。
數(shù)據(jù)字典是各類數(shù)據(jù)描述的集合,它是關(guān)于數(shù)據(jù)庫中數(shù)據(jù)的描述,即元數(shù)據(jù),而不是數(shù)據(jù)本身。
數(shù)據(jù)字典包括數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲和加工五個部分。
(三)概念結(jié)構(gòu)設(shè)計(jì)
數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)階段是在需求分析的基礎(chǔ)上,依照需求分析中的信息要求對用戶信息加以分類、聚集和概括,建立信息模型,并依照選定的數(shù)據(jù)庫管理系統(tǒng)軟件轉(zhuǎn)換成數(shù)據(jù)的邏輯結(jié)構(gòu),再依照軟/硬件環(huán)境,最終實(shí)現(xiàn)數(shù)據(jù)的合理存儲,這一過程也稱為數(shù)據(jù)建模。
1. 概念結(jié)構(gòu)設(shè)計(jì)策略與方法
現(xiàn)實(shí)世界的事物紛繁復(fù)雜,即使是對某一具體的應(yīng)用,由于存在大量不同的信息和對信息的各種處理,也必須加以分類整理,理清各類信息之間的關(guān)系,描述信息處理的流程,這一過程就是概念結(jié)構(gòu)設(shè)計(jì)。
概念結(jié)構(gòu)設(shè)計(jì)的策略有:
- 自頂向下
- 自底向上
- 逐步擴(kuò)張
- 混合策略
概念結(jié)構(gòu)設(shè)計(jì)的方法為: 實(shí)體-聯(lián)系(E-R)方法.
2. 用E-R方法建立概念模型
- 選擇局部應(yīng)用
選擇適當(dāng)層次的數(shù)據(jù)流圖,讓這一層的每一部分對應(yīng)一個局部應(yīng)用,實(shí)現(xiàn)某一項(xiàng)功能。 - 逐一設(shè)計(jì)分
E-R圖
劃分好每個局部應(yīng)用之后,就要對每一個局部應(yīng)用逐一設(shè)計(jì)分E-R圖。 -
E-R圖合并
合并過程中解決分E-R圖中相互間存在的沖突,消除分E-R圖之間存在的信息冗余,使之成為能被全系統(tǒng)所有用戶共同理解和接受的統(tǒng)一的、精煉的全局概念模型。
分E-R圖之間的沖突主要有:
- 屬性沖突
- 命名沖突
- 結(jié)構(gòu)沖突
分E-R圖的合并過程中對其進(jìn)行優(yōu)化時,可以從以下三個方面實(shí)現(xiàn):
- 實(shí)體類型的合并
- 冗余屬性的消除
- 冗余聯(lián)系的消除
(四)邏輯結(jié)構(gòu)設(shè)計(jì)
邏輯結(jié)構(gòu)設(shè)計(jì)是在概念結(jié)構(gòu)設(shè)計(jì)的基礎(chǔ)上進(jìn)行數(shù)據(jù)模型設(shè)計(jì),可以是層次模型、網(wǎng)狀模型和關(guān)系模型。
邏輯結(jié)構(gòu)設(shè)計(jì)的工作步驟如下圖所示:

1. E-R圖關(guān)系模式的轉(zhuǎn)換
E-R方法所得的的全局概念模型是對信息世界的描述,并不適用于計(jì)算機(jī)處理,為適合關(guān)系數(shù)據(jù)庫系統(tǒng)的處理,必須將E-R圖轉(zhuǎn)換成關(guān)系模式。
關(guān)系模式的轉(zhuǎn)換通常采用以下方法進(jìn)行:
- 實(shí)體向關(guān)系模式的轉(zhuǎn)換
將E-R圖中的實(shí)體逐一轉(zhuǎn)換成一個關(guān)系模式,實(shí)體名對應(yīng)關(guān)系模式的名稱,實(shí)體的屬性轉(zhuǎn)換成關(guān)系模式的屬性,實(shí)體標(biāo)識符就是關(guān)系的碼(鍵)。 - 聯(lián)系向關(guān)系模式的轉(zhuǎn)換
- 一對一聯(lián)系的轉(zhuǎn)換
有兩種方式向關(guān)系模式進(jìn)行轉(zhuǎn)換:
一種是將聯(lián)系轉(zhuǎn)換成一個獨(dú)立的關(guān)系模式,關(guān)系模式的名稱取聯(lián)系的名稱,關(guān)系模式的屬性包括該聯(lián)系所關(guān)聯(lián)的兩個實(shí)體的碼及聯(lián)系的屬性,關(guān)系的碼取自任一方實(shí)體的碼;
另一種方式是將聯(lián)系歸并到關(guān)聯(lián)的兩個實(shí)體的任一方,給待歸并的一方實(shí)體屬性集中增加另一方實(shí)體的碼和該聯(lián)系的屬性即可,歸并后的實(shí)體碼保持不變。 - 一對多聯(lián)系的轉(zhuǎn)換
有兩種方式向關(guān)聯(lián)模式進(jìn)行轉(zhuǎn)換:
一種是將聯(lián)系轉(zhuǎn)換成一個獨(dú)立的關(guān)系模式,關(guān)系模式的名稱取聯(lián)系的名稱,關(guān)系模式的屬性取該聯(lián)系所關(guān)聯(lián)的兩個實(shí)體的碼及聯(lián)系的屬性,關(guān)系的碼是多方實(shí)體的碼;
另一種方式是將聯(lián)系歸并到關(guān)聯(lián)的兩個實(shí)體的多方,給待歸并的多方實(shí)體屬性集中增加一方實(shí)體的碼和該聯(lián)系的屬性即可,歸并后的多方實(shí)體碼保持不變。 - 多對多聯(lián)系的轉(zhuǎn)換
關(guān)系模式的屬性取該聯(lián)系所關(guān)聯(lián)的兩個多方實(shí)體的碼及聯(lián)系的屬性,關(guān)系的碼是多方實(shí)體的碼構(gòu)成的屬性組。
- 一對一聯(lián)系的轉(zhuǎn)換
2. 關(guān)系模式的規(guī)范化
關(guān)系模式的規(guī)范化處理,步驟如下:
- 根據(jù)語義確定各關(guān)系模式的數(shù)據(jù)依賴。
- 根據(jù)數(shù)據(jù)依賴確定關(guān)系模式的范式。
- 如果關(guān)系模式不符合要求,要根據(jù)關(guān)系模式的分解算法對其進(jìn)行分解,達(dá)到
3NF、BCNF或4NF。 - 關(guān)系模式的評價及修正。
3. 確定完整性約束
根據(jù)規(guī)范化理論確定了關(guān)系模式之后,還要對關(guān)系模式加以約束,包括數(shù)據(jù)項(xiàng)的約束、表級約束及表間約束,可以參照SQL標(biāo)準(zhǔn)來確定不同的約束,如檢查約束、主碼約束和參照完整性約束,以保證數(shù)據(jù)的正確性。
4. 用戶視圖的確定
確定了整個系統(tǒng)的關(guān)系模式之后,還有根據(jù)數(shù)據(jù)流圖及用戶信息建立視圖模式,提高數(shù)據(jù)的安全性和獨(dú)立性。
- 根據(jù)數(shù)據(jù)流圖確定處理使用的視圖
- 根據(jù)用戶類別確定不同用戶使用的視圖
(五)數(shù)據(jù)庫的物理設(shè)計(jì)
為一個給定的邏輯數(shù)據(jù)模型設(shè)計(jì)一個最適合應(yīng)用要求的物理結(jié)構(gòu)的過程,就是數(shù)據(jù)庫的物理設(shè)計(jì)。

1. 確定數(shù)據(jù)分布
從企業(yè)計(jì)算機(jī)應(yīng)用環(huán)境出發(fā),需要確定數(shù)據(jù)是集中管理還是分布式管理。當(dāng)今企業(yè)大多采用分布式管理。
對數(shù)據(jù)如何分布需要從以下幾個方面考慮:
- 根據(jù)不同應(yīng)用分布數(shù)據(jù)
企業(yè)不同部門一般會使用不同數(shù)據(jù),將與部門應(yīng)用相關(guān)的數(shù)據(jù)存儲在相應(yīng)的場地,使得不同的場地上處理不同的業(yè)務(wù),對于應(yīng)用多個場地的業(yè)務(wù),可以通過網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)處理。 - 根據(jù)處理要求確定數(shù)據(jù)的分布
對于不同的處理要求,也會有不同的使用頻度和響應(yīng)時間,對于使用頻度高、響應(yīng)時間短的數(shù)據(jù),應(yīng)存儲在高速設(shè)備上。 - 對數(shù)據(jù)的分布存儲必然會導(dǎo)致數(shù)據(jù)的邏輯結(jié)構(gòu)的變化,要對關(guān)系模式做新的調(diào)整,回到數(shù)據(jù)庫邏輯設(shè)計(jì)階段做必要的修改
2. 確定數(shù)據(jù)的存儲結(jié)構(gòu)
存儲結(jié)構(gòu)具體指數(shù)據(jù)文件中記錄之間的物理結(jié)構(gòu)。在文件中,數(shù)據(jù)是以記錄為單位存儲的,可以是順序存儲、哈希存儲、堆存儲和B﹢樹存儲等。
為提高數(shù)據(jù)的訪問速度,通常采用索引技術(shù)。在物理設(shè)計(jì)階段,要根據(jù)數(shù)據(jù)處理和修改要求,確定數(shù)據(jù)庫文件的索引字段和索引類型。
3. 確定數(shù)據(jù)的訪問方式
數(shù)據(jù)的訪問方式是由其存儲結(jié)構(gòu)所決定的,采用什么樣的存儲結(jié)構(gòu),就使用什么樣的訪問方式。
數(shù)據(jù)庫物理結(jié)構(gòu)的構(gòu)成包括:
- 存儲記錄結(jié)構(gòu)設(shè)計(jì)
存儲記錄結(jié)構(gòu)包括記錄的組成、數(shù)據(jù)項(xiàng)的類型、長度和數(shù)據(jù)項(xiàng)間的聯(lián)系,以及邏輯記錄到存儲記錄的映射。
在設(shè)計(jì)記錄的存儲結(jié)構(gòu)時,并不改變數(shù)據(jù)庫的邏輯結(jié)構(gòu),但可以在物理上對記錄進(jìn)行分割。 - 存儲記錄布局
存儲記錄的布局,就是確定數(shù)據(jù)的存放位置。 - 存取方法的設(shè)計(jì)
存儲方法是為存儲在物理設(shè)備上的數(shù)據(jù)提高存儲和檢索的能力。
存取方法包括存儲結(jié)構(gòu)和檢索機(jī)制兩部分。存儲結(jié)構(gòu)限定了可能訪問的路徑和存儲記錄;檢索機(jī)制定義每個應(yīng)用的訪問路徑。
(六)數(shù)據(jù)庫的實(shí)施與維護(hù)
在數(shù)據(jù)庫正式運(yùn)行之前,還需要完成很多工作。例如:在模式和子模式中加入數(shù)據(jù)庫安全性、完整性的描述,完成應(yīng)用程序和加載程序的設(shè)計(jì),數(shù)據(jù)庫系統(tǒng)的試運(yùn)行,并在試運(yùn)行中對系統(tǒng)進(jìn)行評價。如果評價結(jié)果不能滿足要求,還需要對數(shù)據(jù)庫進(jìn)行修正設(shè)計(jì),直到滿意為止。

1. 數(shù)據(jù)庫的實(shí)施
根據(jù)邏輯和物理設(shè)計(jì)的結(jié)果在計(jì)算機(jī)上建立起實(shí)際的數(shù)據(jù)結(jié)構(gòu)并裝入數(shù)據(jù)進(jìn)行試運(yùn)行和評價的過程叫作數(shù)據(jù)庫的實(shí)施(或?qū)崿F(xiàn))。
- 建立實(shí)際的數(shù)據(jù)庫結(jié)構(gòu)
在定義數(shù)據(jù)庫結(jié)構(gòu)時,應(yīng)包含以下內(nèi)容:
- 數(shù)據(jù)庫模式與子模式,以及數(shù)據(jù)庫空間等的描述
- 數(shù)據(jù)庫完整性描述
- 數(shù)據(jù)庫安全性描述
- 數(shù)據(jù)庫物理存儲參數(shù)描述
- 數(shù)據(jù)的加載
在數(shù)據(jù)加載前要建立嚴(yán)格的數(shù)據(jù)登錄、輸入和校驗(yàn)規(guī)范,設(shè)計(jì)完善的數(shù)據(jù)校驗(yàn)與校正程序,排除不合格數(shù)據(jù)。 - 數(shù)據(jù)庫的試運(yùn)行和評價
2. 數(shù)據(jù)庫的維護(hù)
數(shù)據(jù)庫維護(hù)工作的內(nèi)容主要包括:
- 對數(shù)據(jù)庫性能的監(jiān)測和改善
性能可以用一個事務(wù)的I/O量、CPU時間和系統(tǒng)響應(yīng)時間來度量。
DBA必須利用系統(tǒng)提供的性能監(jiān)控和分析工具,經(jīng)常對數(shù)據(jù)庫的運(yùn)行、存儲空間及響應(yīng)時間進(jìn)行分析,結(jié)合用戶的反應(yīng)確定改進(jìn)措施。 - 數(shù)據(jù)庫的備份及故障恢復(fù)
- 數(shù)據(jù)庫重組和重構(gòu)
數(shù)據(jù)庫運(yùn)行一段時間后,由于記錄的增、刪、改,數(shù)據(jù)庫中物理存儲碎片記錄鏈過多,影響了數(shù)據(jù)庫的存取效率,這時,就需要對數(shù)據(jù)庫進(jìn)行重組和部分重組。
數(shù)據(jù)庫的重組是指在不改變數(shù)據(jù)庫邏輯和物理結(jié)構(gòu)的情況下去除數(shù)據(jù)庫存儲文件中的廢棄空間以及碎片空間中的指針鏈,使數(shù)據(jù)庫記錄在物理上緊連。
數(shù)據(jù)庫的重構(gòu)是指當(dāng)數(shù)據(jù)庫的邏輯結(jié)構(gòu)不能滿足當(dāng)前數(shù)據(jù)處理的要求時對數(shù)據(jù)庫的模式和內(nèi)模式修改。