- 數(shù)據(jù)庫系統(tǒng)原理及MySQL應(yīng)用教程
- 李輝等編著
- 1696字
- 2020-10-23 14:25:07
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腳本文件。
- OpenStack Cloud Computing Cookbook(Third Edition)
- LabVIEW Graphical Programming Cookbook
- 程序設(shè)計(jì)與實(shí)踐(VB.NET)
- Visual Basic編程:從基礎(chǔ)到實(shí)踐(第2版)
- Web交互界面設(shè)計(jì)與制作(微課版)
- 精通軟件性能測試與LoadRunner實(shí)戰(zhàn)(第2版)
- HTML5+CSS3+JavaScript Web開發(fā)案例教程(在線實(shí)訓(xùn)版)
- MySQL數(shù)據(jù)庫管理與開發(fā)(慕課版)
- Mastering Android Game Development
- C++ Application Development with Code:Blocks
- Instant Zurb Foundation 4
- 零基礎(chǔ)輕松學(xué)C++:青少年趣味編程(全彩版)
- UI設(shè)計(jì)基礎(chǔ)培訓(xùn)教程(全彩版)
- Angular Design Patterns
- Web開發(fā)的平民英雄:PHP+MySQL