官术网_书友最值得收藏!

4.1 數(shù)據(jù)庫設(shè)計(jì)概述

數(shù)據(jù)庫設(shè)計(jì)主要是進(jìn)行數(shù)據(jù)庫的邏輯設(shè)計(jì),即將數(shù)據(jù)按一定的分類、分組系統(tǒng)和邏輯層次組織起來,是面向用戶的。數(shù)據(jù)庫設(shè)計(jì)時(shí)需要綜合企業(yè)各個(gè)部門的存檔數(shù)據(jù)和數(shù)據(jù)需求,分析各個(gè)數(shù)據(jù)之間的關(guān)系,按照DBMS提供的功能和描述工具,設(shè)計(jì)出規(guī)模適當(dāng)、正確反映數(shù)據(jù)關(guān)系、數(shù)據(jù)冗余少、存取效率高、能滿足多種查詢要求的數(shù)據(jù)模型。

4.1.1 數(shù)據(jù)庫設(shè)計(jì)的內(nèi)容

數(shù)據(jù)庫設(shè)計(jì)的內(nèi)容是:在對環(huán)境進(jìn)行需求分析的基礎(chǔ)上,進(jìn)行滿足要求及符合語義的邏輯設(shè)計(jì),進(jìn)行具有合理的存儲結(jié)構(gòu)的物理設(shè)計(jì),實(shí)現(xiàn)數(shù)據(jù)庫的運(yùn)行等。

數(shù)據(jù)庫設(shè)計(jì)往往取決于設(shè)計(jì)者的知識和經(jīng)驗(yàn),對同一環(huán)境,采用同一個(gè)DBMS,由不同設(shè)計(jì)者設(shè)計(jì)的數(shù)據(jù)庫的性能可能相差很大。

系統(tǒng)設(shè)計(jì)人員在數(shù)據(jù)庫設(shè)計(jì)時(shí),都希望能達(dá)到下列目標(biāo):滿足用戶要求;得到現(xiàn)有的某個(gè)DBMS產(chǎn)品的支持;效率較高,且易于維護(hù)、擴(kuò)充等。

但由于設(shè)計(jì)人員與用戶在具體的計(jì)算機(jī)知識與業(yè)務(wù)知識之間缺乏共同語言,對開發(fā)的系統(tǒng)中數(shù)據(jù)庫的功能及需求缺乏明確規(guī)定,以及技術(shù)上還沒有一個(gè)完善的設(shè)計(jì)方法,因此,給數(shù)據(jù)庫設(shè)計(jì)造成很大的困難。

4.1.2 數(shù)據(jù)庫設(shè)計(jì)的步驟

按照規(guī)范化設(shè)計(jì)的方法,考慮數(shù)據(jù)庫及其應(yīng)用系統(tǒng)開發(fā)的全過程,將數(shù)據(jù)庫的設(shè)計(jì)分為以下6個(gè)設(shè)計(jì)階段:需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫物理設(shè)計(jì)、數(shù)據(jù)庫實(shí)施、數(shù)據(jù)庫運(yùn)行和維護(hù)。每個(gè)階段具體描述如下。

1.需求分析階段

進(jìn)行數(shù)據(jù)庫設(shè)計(jì)首先必須準(zhǔn)確了解和分析用戶的需求(包括數(shù)據(jù)與處理)。需求分析是整個(gè)設(shè)計(jì)過程的基礎(chǔ),是最困難、最耗時(shí)間的一步。需求分析做得是否充分與準(zhǔn)確,決定了在其上構(gòu)建數(shù)據(jù)庫的速度與質(zhì)量。需求分析做得不好,可能會導(dǎo)致整個(gè)數(shù)據(jù)庫設(shè)計(jì)返工重做。

2.概念結(jié)構(gòu)設(shè)計(jì)階段

概念結(jié)構(gòu)設(shè)計(jì)是整個(gè)數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵,它通過對用戶的需求進(jìn)行綜合、歸納與抽象,形成一個(gè)獨(dú)立于具體DBMS的概念模型。

3.邏輯結(jié)構(gòu)設(shè)計(jì)階段

邏輯結(jié)構(gòu)設(shè)計(jì)是指將概念模型轉(zhuǎn)換成某個(gè)DBMS所支持的數(shù)據(jù)模型,并對其進(jìn)行優(yōu)化。

4.數(shù)據(jù)庫物理設(shè)計(jì)階段

數(shù)據(jù)庫物理設(shè)計(jì)是指為邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)和存取方法)。

5.數(shù)據(jù)庫實(shí)施階段

在數(shù)據(jù)庫實(shí)施階段,設(shè)計(jì)人員運(yùn)用DBMS提供的數(shù)據(jù)語言及其宿主語言,根據(jù)邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果創(chuàng)建數(shù)據(jù)庫,編制與調(diào)試應(yīng)用程序,組織數(shù)據(jù)入庫,并進(jìn)行試運(yùn)行。

6.數(shù)據(jù)庫運(yùn)行與維護(hù)階段

數(shù)據(jù)庫運(yùn)行與維護(hù)是指對數(shù)據(jù)庫應(yīng)用系統(tǒng)正式投入運(yùn)行。在數(shù)據(jù)庫系統(tǒng)運(yùn)行過程中必須不斷地對其進(jìn)行評價(jià)、調(diào)整與修改。

在數(shù)據(jù)庫設(shè)計(jì)中,前兩個(gè)階段是面向用戶的應(yīng)用需求,面向具體的問題,中間兩個(gè)階段是面向數(shù)據(jù)庫管理系統(tǒng),最后兩個(gè)階段是面向具體的實(shí)現(xiàn)方法。前四個(gè)階段可統(tǒng)稱為“分析和設(shè)計(jì)階段”,后兩個(gè)階段統(tǒng)稱為“實(shí)現(xiàn)和運(yùn)行階段”。

設(shè)計(jì)一個(gè)完善的數(shù)據(jù)庫應(yīng)用系統(tǒng)是不可能一蹴而就的,它往往是上述六個(gè)階段的不斷反復(fù)。需要指出的是,這個(gè)設(shè)計(jì)步驟既是數(shù)據(jù)庫設(shè)計(jì)過程,也是數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)過程。在設(shè)計(jì)過程中把數(shù)據(jù)庫的設(shè)計(jì)和對數(shù)據(jù)庫中數(shù)據(jù)處理的設(shè)計(jì)緊密結(jié)合起來,將這兩個(gè)方面的需求分析、抽象、設(shè)計(jì)、實(shí)現(xiàn)在各個(gè)階段同時(shí)進(jìn)行,相互參照,相互補(bǔ)充,以完善兩方面的設(shè)計(jì)。事實(shí)上,如果不了解應(yīng)用環(huán)境對數(shù)據(jù)的處理要求,或沒有考慮如何去實(shí)現(xiàn)這些處理要求,是不可能設(shè)計(jì)一個(gè)良好的數(shù)據(jù)庫結(jié)構(gòu)的。

按照這樣的設(shè)計(jì)過程,數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)的不同階段形成數(shù)據(jù)庫的各級模式,如圖4-1所示。

圖4-1 數(shù)據(jù)庫設(shè)計(jì)過程與數(shù)據(jù)庫各級模式

需求分析階段綜合各個(gè)用戶的應(yīng)用需求;概念設(shè)計(jì)階段形成獨(dú)立于機(jī)器特點(diǎn)的各個(gè)DBMS產(chǎn)品的概念模式,就是本書中介紹的E-R圖;在邏輯設(shè)計(jì)階段將E-R圖轉(zhuǎn)換成具體的數(shù)據(jù)庫產(chǎn)品支持的數(shù)據(jù)模型(如關(guān)系模型),形成數(shù)據(jù)庫邏輯模式;然后根據(jù)用戶處理要求、安全性的考慮,在基本表的基礎(chǔ)上再建立必要的視圖,形成數(shù)據(jù)庫的外模式;在物理設(shè)計(jì)階段,根據(jù)DBMS的特點(diǎn)和處理的需要,進(jìn)行物理存儲安排,創(chuàng)建索引,形成數(shù)據(jù)庫的內(nèi)模式。

一般而言,數(shù)據(jù)庫設(shè)計(jì)更側(cè)重于數(shù)據(jù)建模,而程序設(shè)計(jì)更側(cè)重于業(yè)務(wù)建模。在真實(shí)的軟件開發(fā)環(huán)境中,數(shù)據(jù)建模與業(yè)務(wù)建模兩者是相輔相成的,不可或缺。在關(guān)系數(shù)據(jù)庫數(shù)據(jù)建模時(shí),數(shù)據(jù)庫的開發(fā)人員經(jīng)常使用ERwin、PowerDesigner、Rational Rose及Visio等CASE工具創(chuàng)建E-R圖,然后使用ERwin、PowerDesigner及Visio等工具直接創(chuàng)建數(shù)據(jù)庫或者直接生成SQL腳本文件。

主站蜘蛛池模板: 宣威市| 横山县| 安吉县| 望奎县| 郴州市| 临武县| 德保县| 许昌市| 郯城县| 邹平县| 玉环县| 化隆| 阿克陶县| 神池县| 邯郸市| 陕西省| 灵丘县| 蓬安县| 高邮市| 银川市| 遂溪县| 阿尔山市| 常德市| 延庆县| 项城市| 襄汾县| 兴宁市| 南皮县| 蕲春县| 札达县| 化德县| 保德县| 藁城市| 睢宁县| 灵山县| 龙川县| 略阳县| 巴青县| 同心县| 甘德县| 高平市|