《數(shù)據(jù)庫原理及應(yīng)用》課件第6章_第1頁
《數(shù)據(jù)庫原理及應(yīng)用》課件第6章_第2頁
《數(shù)據(jù)庫原理及應(yīng)用》課件第6章_第3頁
《數(shù)據(jù)庫原理及應(yīng)用》課件第6章_第4頁
《數(shù)據(jù)庫原理及應(yīng)用》課件第6章_第5頁
已閱讀5頁,還剩322頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第6章數(shù)據(jù)庫設(shè)計(jì)6.1數(shù)據(jù)庫設(shè)計(jì)概述6.2需求分析6.3數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)6.4數(shù)據(jù)庫邏輯設(shè)計(jì)6.6數(shù)據(jù)庫實(shí)施與維護(hù)本章小結(jié)習(xí)題6

本章主要內(nèi)容

數(shù)據(jù)庫設(shè)計(jì)是根據(jù)某一特定的用戶需求及一定的計(jì)算機(jī)軟硬件環(huán)境,設(shè)計(jì)并優(yōu)化數(shù)據(jù)庫的邏輯結(jié)構(gòu)和物理結(jié)構(gòu),建立高效、安全的數(shù)據(jù)庫,為數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā)和運(yùn)行提供良好的平臺。數(shù)據(jù)庫設(shè)計(jì)是數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)的核心問題,是數(shù)據(jù)庫在應(yīng)用領(lǐng)域的主要研究課題。數(shù)據(jù)庫設(shè)計(jì)的好與壞直接影響整個數(shù)據(jù)庫應(yīng)用系統(tǒng)的效率和質(zhì)量。

本章詳細(xì)地介紹了設(shè)計(jì)一個數(shù)據(jù)庫應(yīng)用系統(tǒng)需經(jīng)歷的六個階段:需求分析、概念結(jié)構(gòu)設(shè)計(jì)、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)庫實(shí)施、數(shù)據(jù)庫運(yùn)行及維護(hù)。其中,概念結(jié)構(gòu)設(shè)計(jì)和邏輯結(jié)構(gòu)設(shè)計(jì)是本章的重點(diǎn),也是掌握本章內(nèi)容的難點(diǎn)所在。

本章學(xué)習(xí)目標(biāo)

理解數(shù)據(jù)庫設(shè)計(jì)的基本概念。

掌握數(shù)據(jù)庫設(shè)計(jì)的步驟。

理解并掌握數(shù)據(jù)庫設(shè)計(jì)的具體內(nèi)容。

熟練掌握數(shù)據(jù)庫設(shè)計(jì)的概念結(jié)構(gòu)設(shè)計(jì)和邏輯結(jié)構(gòu)設(shè)計(jì)。

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

數(shù)據(jù)庫技術(shù)是研究如何對數(shù)據(jù)進(jìn)行統(tǒng)一、有效的組織、管理和加工處理的計(jì)算機(jī)技術(shù)。該技術(shù)已應(yīng)用于社會方方面面,大到一個國家的信息中心,小到私人小企業(yè),都會利用數(shù)據(jù)庫技術(shù)對數(shù)據(jù)進(jìn)行有效的管理,以提高生產(chǎn)效率和決策水平。

廣義地講,數(shù)據(jù)庫設(shè)計(jì)是數(shù)據(jù)庫及其應(yīng)用系統(tǒng)的設(shè)計(jì),即設(shè)計(jì)整個數(shù)據(jù)庫應(yīng)用系統(tǒng)。狹義地講,它就是設(shè)計(jì)數(shù)據(jù)庫,即設(shè)計(jì)數(shù)據(jù)庫的各級模式并建立數(shù)據(jù)庫,這是數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)的一部分。本章的重點(diǎn)是狹義的數(shù)據(jù)庫設(shè)計(jì)。當(dāng)然,設(shè)計(jì)一個好的數(shù)據(jù)庫與設(shè)計(jì)一個好的數(shù)據(jù)庫應(yīng)用系統(tǒng)是密不可分的。特別在實(shí)際的系統(tǒng)開發(fā)項(xiàng)目中兩者更是密切相關(guān)、并行進(jìn)行的。數(shù)據(jù)庫結(jié)構(gòu)是數(shù)據(jù)庫應(yīng)用系統(tǒng)的基礎(chǔ)。

數(shù)據(jù)庫設(shè)計(jì)是指對于給定的應(yīng)用環(huán)境,構(gòu)造最優(yōu)的數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應(yīng)用系統(tǒng),使之能有效地存儲數(shù)據(jù),滿足用戶的信息要求和處理要求,即根據(jù)應(yīng)用處理的要求,把現(xiàn)實(shí)世界中的數(shù)據(jù)合理組織,以滿足各種用戶的應(yīng)用需求,包括信息管理要求和數(shù)據(jù)操作要求。利用已有的RDBMS來建立能夠?qū)崿F(xiàn)系統(tǒng)目標(biāo)的數(shù)據(jù)庫。在數(shù)據(jù)庫領(lǐng)域中,一般把使用數(shù)據(jù)庫的各類系統(tǒng)統(tǒng)稱為數(shù)據(jù)庫應(yīng)用系統(tǒng)。

信息管理要求是指在數(shù)據(jù)庫中應(yīng)該存儲和管理哪些數(shù)據(jù)對象;數(shù)據(jù)操作要求是指對數(shù)據(jù)對象需要進(jìn)行哪些操作,如查詢、增、刪、改、統(tǒng)計(jì)等操作。

數(shù)據(jù)庫設(shè)計(jì)的目標(biāo)是為用戶和各種應(yīng)用系統(tǒng)提供一個信息基礎(chǔ)設(shè)施和高效率的運(yùn)行環(huán)境。高效率的運(yùn)行環(huán)境要求:數(shù)據(jù)庫數(shù)據(jù)的存取效率、數(shù)據(jù)庫數(shù)據(jù)的利用率、數(shù)據(jù)庫系統(tǒng)運(yùn)行管理的效率等都是高的。

數(shù)據(jù)庫是大多數(shù)應(yīng)用系統(tǒng)的重要組成部分,開發(fā)數(shù)據(jù)庫系統(tǒng)最重要的就是數(shù)據(jù)庫設(shè)計(jì)。數(shù)據(jù)庫設(shè)計(jì)的質(zhì)量影響著應(yīng)用系統(tǒng)的功能及性能。數(shù)據(jù)庫設(shè)計(jì)與一般應(yīng)用程序的設(shè)計(jì)相比,既有其共同點(diǎn),又有其不同。本節(jié)對數(shù)據(jù)庫設(shè)計(jì)的一般方法步驟進(jìn)行介紹。

6.1.1數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)

1.數(shù)據(jù)庫建設(shè)的基本規(guī)律

“三分技術(shù),七分管理,十二分基礎(chǔ)數(shù)據(jù)”是數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)之一。

數(shù)據(jù)庫建設(shè)不僅涉及技術(shù),還涉及管理。要建設(shè)一個數(shù)據(jù)庫應(yīng)用系統(tǒng),開發(fā)技術(shù)固然重要,但是相比之下管理更加重要。這里的管理不僅僅包括數(shù)據(jù)庫設(shè)計(jì)作為一個大型的工程項(xiàng)目本身的項(xiàng)目管理,而且還包括該企業(yè)的業(yè)務(wù)管理。

2.結(jié)構(gòu)(數(shù)據(jù))設(shè)計(jì)和行為(處理)設(shè)計(jì)相結(jié)合

數(shù)據(jù)庫設(shè)計(jì)應(yīng)與數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)相結(jié)合,即整個設(shè)計(jì)過程中要把數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì)和對數(shù)據(jù)的處理設(shè)計(jì)密切結(jié)合起來。這是數(shù)據(jù)庫設(shè)計(jì)的特點(diǎn)之二。

但是,在早期的數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)過程中,常常把數(shù)據(jù)庫設(shè)計(jì)和數(shù)據(jù)庫應(yīng)用系統(tǒng)的設(shè)計(jì)分離開來。結(jié)構(gòu)和行為分離的設(shè)計(jì)如圖6.1所示。由于數(shù)據(jù)庫設(shè)計(jì)有它專門的技術(shù)和理論,因此需要專門來講解數(shù)據(jù)庫設(shè)計(jì)。但這并不等于數(shù)據(jù)庫設(shè)計(jì)和在數(shù)據(jù)庫之上開發(fā)應(yīng)用系統(tǒng)是相互分離的。相反,在設(shè)計(jì)過程中,必須強(qiáng)調(diào)數(shù)據(jù)庫設(shè)計(jì)和應(yīng)用程序設(shè)計(jì)是密不可分的,這是數(shù)據(jù)庫設(shè)計(jì)的重要特點(diǎn)。

圖6.1結(jié)構(gòu)和行為分離的設(shè)計(jì)

6.1.2數(shù)據(jù)庫設(shè)計(jì)方法簡述

1.新奧爾良(NewOrleans)方法

新奧爾良(NewOrleans)方法是目前公認(rèn)的比較完整和權(quán)威的一種規(guī)范設(shè)計(jì)法,它將數(shù)據(jù)庫設(shè)計(jì)分為四個階段:需求分析(分析用戶需求)、概念設(shè)計(jì)(信息分析和定義)、邏輯設(shè)計(jì)(設(shè)計(jì)實(shí)現(xiàn))和物理設(shè)計(jì)(物理數(shù)據(jù)庫設(shè)計(jì))。S.B.Yao等又將數(shù)據(jù)庫設(shè)計(jì)分為五個步驟。

2.基于E-R模型的數(shù)據(jù)庫設(shè)計(jì)方法

E-R模型方法的基本步驟是:

①確定實(shí)體類型;

②確定實(shí)體聯(lián)系;

③畫出E-R圖;

④確定屬性;

⑤將E-R圖轉(zhuǎn)換成某個DBMS可接受的邏輯數(shù)據(jù)模型;

⑥設(shè)計(jì)記錄格式。

3.基于3NF的數(shù)據(jù)庫設(shè)計(jì)方法

基于3NF的數(shù)據(jù)庫設(shè)計(jì)方法的基本思想是在需求分析的基礎(chǔ)上,確定數(shù)據(jù)庫模式中的全部屬性與屬性之間的依賴關(guān)系,再將它們組織成一個單一的關(guān)系模式,然后再將其投影分解,消除其中不符合3NF的約束條件,把其規(guī)范成若干個3NF關(guān)系模式的集合。

4.計(jì)算機(jī)輔助數(shù)據(jù)庫設(shè)計(jì)方法

計(jì)算機(jī)輔助數(shù)據(jù)庫設(shè)計(jì)主要分為需求分析、邏輯結(jié)構(gòu)設(shè)計(jì)、物理結(jié)構(gòu)設(shè)計(jì)三個步驟。設(shè)計(jì)中,哪些可在計(jì)算機(jī)輔助下進(jìn)行、能否實(shí)現(xiàn)全自動化設(shè)計(jì)等是計(jì)算機(jī)輔助數(shù)據(jù)庫設(shè)計(jì)需要研究的課題。

5.?ODL(ObjectDefinitionLanguage)方法

ODL(ObjectDefinitionLanguage)方法是面向?qū)ο蟮臄?shù)據(jù)庫設(shè)計(jì)方法。該方法用面向?qū)ο蟮母拍詈托g(shù)語來說明數(shù)據(jù)庫結(jié)構(gòu)。ODL可以描述面向?qū)ο髷?shù)據(jù)庫結(jié)構(gòu)設(shè)計(jì),可以直接轉(zhuǎn)換為面向?qū)ο蟮臄?shù)據(jù)庫。

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

按照規(guī)范化的設(shè)計(jì)方法和數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)過程,數(shù)據(jù)庫的設(shè)計(jì)過程可分為以下六個設(shè)計(jì)階段(見圖6.2):系統(tǒng)需求分析階段、概念結(jié)構(gòu)設(shè)計(jì)階段、邏輯結(jié)構(gòu)設(shè)計(jì)階段、物理結(jié)構(gòu)設(shè)計(jì)階段、數(shù)據(jù)庫實(shí)施階段、數(shù)據(jù)庫運(yùn)行與維護(hù)階段。

1.系統(tǒng)需求分析階段

數(shù)據(jù)庫設(shè)計(jì)首先必須了解與分析用戶需求(包括數(shù)據(jù)與處理)。需求分析是整個設(shè)計(jì)過程的基礎(chǔ),是最困難、最費(fèi)時、最復(fù)雜的一步,但也是最重要的一步。作為基礎(chǔ)的需求分析是否做得充分與準(zhǔn)確,決定了在其上構(gòu)建數(shù)據(jù)庫的速度與質(zhì)量。需求分析做得不好,甚至?xí)?dǎo)致整個數(shù)據(jù)庫設(shè)計(jì)返工。

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

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

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

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

4.物理結(jié)構(gòu)設(shè)計(jì)階段

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

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

數(shù)據(jù)庫實(shí)施是指建立數(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ù)庫系統(tǒng)進(jìn)行正常運(yùn)行使用,并實(shí)時進(jìn)行維護(hù)。

從圖6.2可以看出,設(shè)計(jì)一個數(shù)據(jù)庫是不可能一蹴而就的,它往往是上述各個階段的不斷反復(fù)。以上六個階段是從數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)和開發(fā)的全過程來考察數(shù)據(jù)庫設(shè)計(jì)的問題的。

圖6.2數(shù)據(jù)庫的設(shè)計(jì)階段

因此,它既是數(shù)據(jù)庫的設(shè)計(jì)過程,也是應(yīng)用系統(tǒng)的設(shè)計(jì)過程。在設(shè)計(jì)過程中,努力使數(shù)據(jù)庫設(shè)計(jì)和系統(tǒng)其他部分的設(shè)計(jì)緊密結(jié)合,將這兩個方面的需求分析、抽象、設(shè)計(jì)、實(shí)現(xiàn)在各大個階段均同時進(jìn)行,它們之間相互參照、相互補(bǔ)充,以完善兩方面的設(shè)計(jì)。事實(shí)上,如果不了解應(yīng)用環(huán)境對數(shù)據(jù)的處理要求,或沒有考慮如何去實(shí)現(xiàn)這些處理要求,是不可能設(shè)計(jì)一個良好的數(shù)據(jù)庫結(jié)構(gòu)的。設(shè)計(jì)過程各個階段的設(shè)計(jì)描述,可用表6.1概括地給出。

表6.1的有關(guān)處理特性的設(shè)計(jì)描述中,其設(shè)計(jì)原理、采用的設(shè)計(jì)方法、工具等在軟件工程和信息系統(tǒng)設(shè)計(jì)課程中有詳細(xì)介紹,這里不再討論。這里著重于數(shù)據(jù)特性的描述以及如何在整個設(shè)計(jì)過程中參照處理特性的設(shè)計(jì)來完善數(shù)據(jù)模型設(shè)計(jì)等問題。

如圖6.3所示,需求分析階段,綜合各個用戶的應(yīng)用需求;在概念結(jié)構(gòu)設(shè)計(jì)階段綜合得到獨(dú)立于機(jī)器,獨(dú)立于各個DBMS產(chǎn)品的概念模型;在邏輯結(jié)構(gòu)設(shè)計(jì)階段將E-R圖轉(zhuǎn)換成某個具體的數(shù)據(jù)庫產(chǎn)品所支持的數(shù)據(jù)模型,如關(guān)系模型中的關(guān)系模式;然后根據(jù)用戶處理的要求、安全性和完整性要求等的考慮,在基本表的基礎(chǔ)上再建立必要的視圖,即外模式;在物理結(jié)構(gòu)設(shè)計(jì)階段,根據(jù)DBMS特點(diǎn)和處理性能等的需要,進(jìn)行物理結(jié)構(gòu)的設(shè)計(jì),形成數(shù)據(jù)庫內(nèi)模式;在實(shí)施階段,開發(fā)設(shè)計(jì)人員基于外模式,進(jìn)行系統(tǒng)功能模塊的編碼與調(diào)試;若設(shè)計(jì)成功即可進(jìn)入系統(tǒng)的運(yùn)行與維護(hù)階段。

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

6.2需求分析

需求分析,簡單地說,是分析用戶的要求。需求分析是數(shù)據(jù)庫設(shè)計(jì)的起點(diǎn)。需求分析的結(jié)果是否準(zhǔn)確地反映了用戶的實(shí)際需求,將直接影響后面各個階段的設(shè)計(jì),并影響設(shè)計(jì)結(jié)果是否合理與實(shí)用。

需求分析的任務(wù)是通過詳細(xì)調(diào)查現(xiàn)實(shí)世界中要處理的對象(組織、部門、學(xué)校、企業(yè)等),通過對原對象的工作概況的充分了解,明確用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。并且,新系統(tǒng)還必須考慮數(shù)據(jù)庫運(yùn)行與維護(hù)階段的擴(kuò)充和變更,不能僅僅考慮當(dāng)前需求來設(shè)計(jì)數(shù)據(jù)庫。

需求分析調(diào)查的重點(diǎn)是“數(shù)據(jù)”和“處理”,通過調(diào)查、收集與分析,獲得用戶對數(shù)據(jù)庫的要求:

(1)信息要求。它是指用戶需要從數(shù)據(jù)庫中獲得信息的內(nèi)容與性質(zhì),由信息要求可以導(dǎo)出各種數(shù)據(jù)要求,即需要分析在數(shù)據(jù)庫中存放哪些數(shù)據(jù)。

(2)處理要求。它是指用戶有什么處理要求,最終要實(shí)現(xiàn)什么處理功能。

除此之外,數(shù)據(jù)庫的安全性與完整性對數(shù)據(jù)庫來說也是必須要考慮的。具體而言,需求分析階段的任務(wù)包括以下四個方面:

1.分析用戶需求,確定系統(tǒng)邊界,為建立系統(tǒng)概念模型做準(zhǔn)備

(1)調(diào)查組織機(jī)構(gòu)情況。包括了解該組織的部門組成情況、各部門的職責(zé)及權(quán)限等。

(2)調(diào)查各部門的業(yè)務(wù)活動情況。包括了解各部門輸入和使用什么數(shù)據(jù),如何加工處理這些數(shù)據(jù),輸出什么信息,輸出到什么部門,誰可以處理這些信息,輸出結(jié)果的格式是什么。這都是調(diào)查的重點(diǎn),否則會出現(xiàn)不可預(yù)計(jì)的嚴(yán)重問題。

(3)在熟悉業(yè)務(wù)的基礎(chǔ)上,明確用戶對新系統(tǒng)的各種要求,如信息要求,處理要求,安全性和完整性要求。

(4)確定系統(tǒng)邊界。即確定哪些活動由計(jì)算機(jī)來完成,哪些只能由人工來完成。由計(jì)算機(jī)完成的功能是新系統(tǒng)應(yīng)該實(shí)現(xiàn)的功能。

在調(diào)查過程中,可以根據(jù)不同的問題和條件,使用不同的調(diào)查方法。常用的調(diào)查方法有:

①跟班作業(yè)。通過親身參加業(yè)務(wù)工作來了解業(yè)務(wù)活動的情況。

②開調(diào)查會。通過與用戶座談來了解業(yè)務(wù)活動情況及用戶需求。

③請專人介紹。

④詢問。對某些調(diào)查中的問題,可以找專人詢問。

⑤設(shè)計(jì)調(diào)查表請用戶填寫。如果調(diào)查表設(shè)計(jì)得合理,這種方法是很有效的。

⑥查閱記錄。查閱與原系統(tǒng)有關(guān)的數(shù)據(jù)記錄。

調(diào)查了解用戶需求以后,還需要進(jìn)一步分析和表達(dá)用戶的需求。在各種分析方法中,結(jié)構(gòu)化分析(StructuredAnalysis,SA)方法是一種簡單實(shí)用的方法。SA方法從最上層的系統(tǒng)組織機(jī)構(gòu)入手,采用自頂向下、逐層分解的方式分析系統(tǒng)。SA方法把任何一個系統(tǒng)都抽象為圖6.4所示的形式。

圖6.4給出的只是最高層次數(shù)據(jù)抽象的系統(tǒng)概貌,要反映更詳細(xì)的內(nèi)容,可將處理功能分解為若干子功能,每個子功能還可以繼續(xù)分解,直到把系統(tǒng)工作過程表達(dá)清楚為止。在處理功能逐步分解的同時,它們所用的數(shù)據(jù)也逐級分解,形成若干層次的數(shù)據(jù)流圖。

圖6.4系統(tǒng)最高層數(shù)據(jù)抽象圖

2.編寫系統(tǒng)需求分析說明書

系統(tǒng)需求分析說明書也稱系統(tǒng)需求規(guī)范說明書,是系統(tǒng)需求分析階段的最后工作,是對需求分析階段的一個總結(jié)。編寫系統(tǒng)需求分析說明書是一個不斷反復(fù)、逐步完善的過程。系統(tǒng)需求分析說明書一般應(yīng)包括以下內(nèi)容:

(1)數(shù)據(jù)庫系統(tǒng)概況,包括系統(tǒng)的背景、目標(biāo)、范圍、歷史和現(xiàn)狀及參考資料用戶群體等。

(2)數(shù)據(jù)庫系統(tǒng)的原理和技術(shù)。

(3)數(shù)據(jù)庫系統(tǒng)總體結(jié)構(gòu)和子系統(tǒng)結(jié)構(gòu)說明、接口定義。

(4)數(shù)據(jù)庫系統(tǒng)總體功能和子系統(tǒng)功能說明。

(5)數(shù)據(jù)庫系統(tǒng)數(shù)據(jù)處理概述、工程項(xiàng)目體制和設(shè)計(jì)階段劃分。

(6)數(shù)據(jù)庫系統(tǒng)方案及技術(shù)、經(jīng)濟(jì)可行性,實(shí)施方案可行性等。

(7)系統(tǒng)驗(yàn)收標(biāo)準(zhǔn)。

系統(tǒng)需求分析說明書可提供以下附件:

(1)系統(tǒng)的軟硬件支持環(huán)境的選擇及規(guī)格要求。

(2)組織機(jī)構(gòu)圖、組織之間聯(lián)系圖和各機(jī)構(gòu)功能業(yè)務(wù)一覽圖。

(3)數(shù)據(jù)流程圖、功能模塊圖和數(shù)據(jù)字典等圖表。

(4)非功能性需求描述,如適用性、可靠性、性能、可維護(hù)性、可擴(kuò)展性、安全性需求描述、接口定義。

3.數(shù)據(jù)字典

數(shù)據(jù)字典是系統(tǒng)中各類數(shù)據(jù)描述的集合,是各類數(shù)據(jù)結(jié)構(gòu)和屬性的清單,它與數(shù)據(jù)流圖互為解釋。數(shù)據(jù)字典貫穿于數(shù)據(jù)庫需求分析直到數(shù)據(jù)庫運(yùn)行的全過程,在不同的階段其內(nèi)容形式和用途各有區(qū)別。在需求分析階段,它通常包含以下五個部分的內(nèi)容:

(1)數(shù)據(jù)項(xiàng)。數(shù)據(jù)項(xiàng)是不可再分的數(shù)據(jù)單位。對數(shù)據(jù)項(xiàng)的描述通??梢园ㄒ韵聝?nèi)容:

數(shù)據(jù)項(xiàng)描述?=?{數(shù)據(jù)項(xiàng)名,數(shù)據(jù)項(xiàng)含義說明,別名,數(shù)據(jù)類型,長度,取值范圍,

取值含義,與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系,數(shù)據(jù)項(xiàng)之間的聯(lián)系}

其中,取值范圍、與其他數(shù)據(jù)項(xiàng)的邏輯關(guān)系定義了數(shù)據(jù)的完整性約束條件。數(shù)據(jù)項(xiàng)是數(shù)據(jù)的最小組成單位??梢杂藐P(guān)系規(guī)范化理論指導(dǎo),用數(shù)據(jù)依賴的概念分析和表示數(shù)據(jù)項(xiàng)之間的聯(lián)系,即按實(shí)際語義,寫出每個數(shù)據(jù)項(xiàng)之間的數(shù)據(jù)依賴,它們是數(shù)據(jù)庫邏輯設(shè)計(jì)階段數(shù)據(jù)模型優(yōu)化的依據(jù)。

(2)數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)反映了數(shù)據(jù)之間的組合關(guān)系。一個數(shù)據(jù)結(jié)構(gòu)可以由若干個數(shù)據(jù)項(xiàng)組成,也可以由若干個數(shù)據(jù)結(jié)構(gòu)組成,或由若干個數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)混合組成。對數(shù)據(jù)結(jié)構(gòu)的描述通常包括以下內(nèi)容:

數(shù)據(jù)結(jié)構(gòu)描述={數(shù)據(jù)結(jié)構(gòu)名,含義說明,組成:{數(shù)據(jù)項(xiàng)或數(shù)據(jù)結(jié)構(gòu)}}

數(shù)據(jù)字典通過對數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)的定義來描述數(shù)據(jù)流、數(shù)據(jù)存儲的邏輯內(nèi)容。

(3)數(shù)據(jù)流。數(shù)據(jù)流是數(shù)據(jù)結(jié)構(gòu)在系統(tǒng)內(nèi)部傳輸?shù)穆窂?。對?shù)據(jù)流的描述通常包括以下內(nèi)容:

數(shù)據(jù)流描述={數(shù)據(jù)流名,說明,數(shù)據(jù)流來源,數(shù)據(jù)流去向,組成:{數(shù)據(jù)結(jié)構(gòu)},

平均流量,高峰期流量}

其中,數(shù)據(jù)流來源是說明該數(shù)據(jù)流來自哪個過程,數(shù)據(jù)流去向是說明該數(shù)據(jù)流將到哪個過程去,平均流量是指在單位時間(每天、每周、每月等)里的傳輸次數(shù),高峰期流量則是指在高峰時期的數(shù)據(jù)流量。

(4)數(shù)據(jù)存儲。數(shù)據(jù)存儲是數(shù)據(jù)結(jié)構(gòu)停留或保存的地方,也是數(shù)據(jù)流的來源和去向之一。它可以是手工文檔或手工憑單,也可以是計(jì)算機(jī)文檔。對數(shù)據(jù)存儲的描述通常包括以下內(nèi)容:

數(shù)據(jù)存儲描述={數(shù)據(jù)存儲名,說明,編號,流入的數(shù)據(jù)流,流出的數(shù)據(jù)流,組成:{數(shù)據(jù)結(jié)構(gòu)},數(shù)據(jù)量,存取方式}

其中,流入的數(shù)據(jù)流指出數(shù)據(jù)來源,流出的數(shù)據(jù)流指出數(shù)據(jù)去向,數(shù)據(jù)量是指每次存取多少數(shù)據(jù)、每天(或每小時、每周等)存取幾次等信息,存取方法包括批處理/聯(lián)機(jī)處理、檢索/更新、順序檢索/隨機(jī)檢索。

(5)處理過程。處理過程的具體處理邏輯一般用判定表或判定樹來描述。數(shù)據(jù)字典中只需要描述處理過程的說明性信息,通常包括以下內(nèi)容:

處理過程描述={處理過程名,說明,輸入:{數(shù)據(jù)流},輸出:{數(shù)據(jù)流},處理:?{簡要說明}}

其中,簡要說明主要說明該處理過程的功能及處理要求:功能是指該處理過程用來做什么;處理要求是指處理頻度要求(如單位時間里處理多少事務(wù),多少數(shù)據(jù)量)、響應(yīng)時間要求等,這是后面物理結(jié)構(gòu)設(shè)計(jì)的輸入及性能評價的標(biāo)準(zhǔn)。

要強(qiáng)調(diào)以下兩點(diǎn):

①需求分析階段的一個重要而困難的任務(wù)是收集將來應(yīng)用所涉及的數(shù)據(jù),設(shè)計(jì)人員應(yīng)充分考慮到可能的擴(kuò)充和改變,使設(shè)計(jì)易于更改,系統(tǒng)易于擴(kuò)充,這是第一點(diǎn)。

②必須強(qiáng)調(diào)用戶的參與,這是數(shù)據(jù)庫應(yīng)用系統(tǒng)設(shè)計(jì)的特點(diǎn)。數(shù)據(jù)庫應(yīng)用系統(tǒng)和廣泛的用戶有密切的聯(lián)系,許多人要使用數(shù)據(jù)庫,數(shù)據(jù)庫的設(shè)計(jì)和建立又可能對更多人的工作環(huán)境產(chǎn)生重要影響。

4.數(shù)據(jù)流圖

數(shù)據(jù)流圖(DataFlowDiagram,DFD)表達(dá)了數(shù)據(jù)與處理的關(guān)系。

數(shù)據(jù)流圖中的基本元素有:

(1)圓圈表示處理,輸入數(shù)據(jù)在此進(jìn)行變換產(chǎn)生輸出數(shù)據(jù),其中要注明處理的名稱。

(2)矩形描述一個輸入源點(diǎn)或輸出匯點(diǎn),其中注明源點(diǎn)或匯點(diǎn)的名稱。

(3)箭頭描述一個數(shù)據(jù)流,即被加工的數(shù)據(jù)及其流向,流線上注明數(shù)據(jù)名稱,箭頭代表數(shù)據(jù)流動方向。

【例6.1】針對網(wǎng)上書店系統(tǒng)做需求分析。

網(wǎng)上書店的需求主要從兩個方面進(jìn)行分析,這兩方面分別為網(wǎng)上書店的用戶和后臺管理人員。用戶的需求主要表現(xiàn)為:查詢網(wǎng)上書店所存儲的圖書,查看圖書詳情、個人購買情況、歷史訂單記錄以及個人信息的修改等。后臺管理人員的需求主要表現(xiàn)為:對圖書和圖書類型進(jìn)行管理,其中包括輸入、刪除、修改、檢索,以及管理訂單和管理網(wǎng)上用戶等方面。

用戶進(jìn)入網(wǎng)上書店后可直接查看圖書情況。圖書購買者根據(jù)本人用戶名和密碼登錄系統(tǒng),還可以進(jìn)行本人購書情況的查詢和維護(hù)部分個人信息。一般情況下,圖書購買者只能查詢和維護(hù)本人的買書情況和個人信息。如果要查詢和維護(hù)其他購買者的購書情況和個人信息,就要知道其他購書者的用戶名和密碼,而這些是很難得到的,特別是密碼。所以設(shè)置用戶名和密碼不但滿足了圖書購買者的要求,還保護(hù)了圖書購買者的個人隱私。

后臺管理人員能對圖書信息和用戶信息進(jìn)行管理、統(tǒng)計(jì)查看及維護(hù)。后臺管理人員可以瀏覽、添加、刪除、統(tǒng)計(jì)用戶的基本信息;瀏覽、查詢、添加、刪除、修改、統(tǒng)計(jì)圖書的基本信息。但是,刪除某類圖書類型時,要相應(yīng)實(shí)現(xiàn)對該類所有圖書的級聯(lián)刪除;刪除某條圖書購買者基本信息記錄時,同時應(yīng)實(shí)現(xiàn)對該圖書訂單記錄的級聯(lián)刪除。

網(wǎng)站系統(tǒng)采用結(jié)構(gòu)化設(shè)計(jì)思想。首先將整個系統(tǒng)劃分為兩大模塊,即用戶使用的前臺購書系統(tǒng)和管理員使用的后臺管理系統(tǒng),然后再將這兩個模塊劃分為若干個小模塊,如用戶注冊、圖書查詢、在線購書、圖書管理、訂單管理、用戶管理等。本系統(tǒng)的總體功能模塊圖如圖6.5所示。

圖6.5系統(tǒng)總體功能模塊圖

前臺購書系統(tǒng)模塊如圖6.6所示。

(1)用戶信息管理功能包括:新用戶注冊、用戶登錄、修改用戶信息。

(2)購物車功能包括:向購物車添加圖書、刪除圖書、更改圖書數(shù)量等。

(3)圖書查詢功能包括:按圖書價格查詢、按圖書類型查詢等。

(4)訂單管理功能包括:購書生成訂單、用戶查詢訂單等。

圖6.6前臺購書系統(tǒng)模塊圖

后臺管理系統(tǒng)模塊如圖6.7所示。

(1)用戶管理模塊包括:查詢用戶信息、刪除用戶。

(2)圖書管理模塊包括:對圖書的查詢、增加、刪除、修改;對圖書類型的查詢、增加、刪除、修改等。

(3)后臺訂單管理模塊包括:查詢未處理訂單、處理訂單等。

(4)管理員管理模塊包括:管理員登錄、修改管理員信息、注冊新管理員。

圖6.7后臺管理系統(tǒng)模塊

根據(jù)需求分析結(jié)果,網(wǎng)上購書系統(tǒng)主要實(shí)現(xiàn)用戶登錄本網(wǎng)站后購買圖書的一系列功能操作。用戶購買圖書業(yè)務(wù)流程如圖6.8所示。

圖6.8用戶購買圖書業(yè)務(wù)流程圖

用戶購買的圖書都會添加到購物車?yán)锩?。如果用戶不打算購買該圖書或想更改該圖書的數(shù)量等,那么可以在購物車中完成。購物車業(yè)務(wù)流程如圖6.9所示。

圖6.9購物車業(yè)務(wù)流程圖

【例6.2】高校管理信息系統(tǒng)的需求分析。

某高校為加強(qiáng)信息化管理,準(zhǔn)備設(shè)計(jì)與開發(fā)一個管理信息系統(tǒng),該系統(tǒng)包括教學(xué)管理、工資及福利管理、教材管理、辦公管理等子系統(tǒng)。為了簡便,下面僅給出其中的教學(xué)管理和工資及福利管理兩個子系統(tǒng)的信息需求(兩個子系統(tǒng)的數(shù)據(jù)流圖和數(shù)據(jù)字典略)。

1)教學(xué)管理子系統(tǒng)的信息需求

(1)子系統(tǒng)主要管理的對象。教學(xué)管理子系統(tǒng)主要管理的對象是學(xué)生、班級、教師、課程、專業(yè)和系。需存儲的信息包括:

①學(xué)生。包括學(xué)號、姓名、性別和年齡等信息,通過學(xué)號進(jìn)行標(biāo)識。

②班級。包括班級號、班級名和人數(shù)等信息,通過班級號進(jìn)行標(biāo)識。

③教師。包括教師號、姓名、性別、職稱、E-mail地址、電話號碼和家庭地址等信息。

④課程。包括課程號、課程名、學(xué)分、周學(xué)時、課程類型等信息。

⑤專業(yè)。包括專業(yè)號、專業(yè)名、選修門數(shù)等信息。

⑥系。包括系號、系名等信息。

(2)子系統(tǒng)中各對象間的聯(lián)系。教學(xué)管理子系統(tǒng)中各對象間的聯(lián)系如下:

①每個學(xué)生都屬于一個班級,而一個班級可以有多個學(xué)生。

②每個班級屬于一個專業(yè),一個專業(yè)可以有多個班級。

③一個專業(yè)屬于一個系,一個系可以有多個專業(yè)。

④每個教師可以講授多門課程,同一門課程可以由不同的教師講授。

⑤一個教師屬于一個系,一個系可以有多個教師。

⑥每個學(xué)生可以修讀若干門課程(選修課或必修課),每門課程可以有多個學(xué)生修讀。

⑦參加了某門課程的學(xué)生,應(yīng)該有一個固定的教師。

2)工資及福利管理子系統(tǒng)

(1)子系統(tǒng)主要管理的對象。工資及福利管理子系統(tǒng)主要負(fù)責(zé)管理教師的工資、崗位津貼、養(yǎng)老金、公積金、課時獎金、住房貸款以及醫(yī)療費(fèi)報銷等,涉及的對象有教師、職稱、課程等。需存儲的信息包括:

①教師。包括教師編號、姓名、性別、工齡、職稱、基本工資、養(yǎng)老金、公積金等信息。

②課程。包括課程號、課程名、總課時等信息。

③職稱。包括職稱號、職稱名、崗位津貼和住房貸款額等信息。

(2)子系統(tǒng)中各對象間的聯(lián)系。工資及福利管理子系統(tǒng)中各對象間的聯(lián)系如下:

①每個教師可以講授多門課程,同一門課程可以由不同的教師講授,但同一個教師不能講授兩門相同的課程。假設(shè)教師在每個學(xué)期末都要接受學(xué)生的評估,而教師的課時獎金與評教等級有關(guān)。

②每個教師當(dāng)前被聘任的職稱是唯一的,而不同的教師可以被聘同一職稱。

6.3數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)

6.3.1概念結(jié)構(gòu)設(shè)計(jì)的必要性將需求分析得到的用戶需求抽象為概念模型的過程就是概念結(jié)構(gòu)設(shè)計(jì)。概念結(jié)構(gòu)是各種數(shù)據(jù)模型的共同基礎(chǔ),它與數(shù)據(jù)模型相比更獨(dú)立于機(jī)器、更抽象,從而更加穩(wěn)定。它是整個數(shù)據(jù)庫設(shè)計(jì)的關(guān)鍵。

將概念結(jié)構(gòu)設(shè)計(jì)從設(shè)計(jì)過程中獨(dú)立出來,可以帶來以下好處:

(1)任務(wù)相對單一化,降低了數(shù)據(jù)庫設(shè)計(jì)的復(fù)雜程度,更加便于管理。

(2)概念模式不受具體的DBMS的限制,獨(dú)立于存儲結(jié)構(gòu)和效率方面的考慮,因此,更穩(wěn)定。

(3)概念模型不含具體DBMS所附加的技術(shù)細(xì)節(jié),便于被用戶理解,因而更能準(zhǔn)確地反映用戶的信息需求,是用戶和專業(yè)設(shè)計(jì)人員之間的橋梁紐帶。三個層次世界的對應(yīng)關(guān)系如圖6.10所示。

圖6.10三個層次世界的對應(yīng)關(guān)系

6.3.2概念結(jié)構(gòu)設(shè)計(jì)的特點(diǎn)

概念結(jié)構(gòu)設(shè)計(jì)的特點(diǎn)有以下四點(diǎn):

(1)能真實(shí)、充分地反映現(xiàn)實(shí)世界,包括事物和事物之間的聯(lián)系;能滿足用戶對數(shù)據(jù)的處理要求;是對現(xiàn)實(shí)世界的真實(shí)抽象。

(2)易于更改,當(dāng)應(yīng)用環(huán)境和應(yīng)用要求改變時,容易對概念模型維護(hù)和擴(kuò)充。

(3)易于理解,可以用概念模型與不熟悉計(jì)算機(jī)的用戶交換意見,用戶的積極參與是數(shù)據(jù)庫設(shè)計(jì)成功的關(guān)鍵。

(4)易于向其他數(shù)據(jù)模型轉(zhuǎn)換。

6.3.3概念結(jié)構(gòu)設(shè)計(jì)的方法和步驟

1.概念結(jié)構(gòu)設(shè)計(jì)的方法

(1)自頂向下。首先定義全局概念結(jié)構(gòu)的框架,然后逐步細(xì)化,如圖6.11所示。

圖6.11自頂向下的設(shè)計(jì)方法

(2)自底向上。首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成起來得到全局概念結(jié)構(gòu),如圖6.12所示。

圖6.12自底向上的設(shè)計(jì)方法

(3)逐步擴(kuò)張。首先定義最重要的核心概念結(jié)構(gòu),然后向外擴(kuò)充,以滾雪球的方式逐步生成其他概念結(jié)構(gòu),直至總體概念結(jié)構(gòu),如圖6.13所示。

圖6.13逐步擴(kuò)張的設(shè)計(jì)方法

(4)混合策略。將自頂向下和自底向上相結(jié)合,用自頂向下策略設(shè)計(jì)一個全局概念結(jié)構(gòu)的框架,以它為骨架集成由自底向上策略中設(shè)計(jì)的各局部概念結(jié)構(gòu)。

其中,最常用的方法是自底向上設(shè)計(jì)方法。即自頂向下地進(jìn)行需求分析,再自底向上地設(shè)計(jì)概念結(jié)構(gòu)。

2.概念結(jié)構(gòu)設(shè)計(jì)的步驟

對于自底向上的設(shè)計(jì)方法來說,概念結(jié)構(gòu)設(shè)計(jì)的步驟(見圖6.14)分為兩步:

(1)進(jìn)行數(shù)據(jù)抽象,設(shè)計(jì)局部E-R模型。

(2)集成各局部E-R模型,形成全局E-R模型。

圖6.14自底向上方法的設(shè)計(jì)步驟

6.3.4概念模型

概念模型是表達(dá)概念設(shè)計(jì)結(jié)果的工具。在需求分析階段,數(shù)據(jù)庫設(shè)計(jì)人員在充分調(diào)查的基礎(chǔ)上描述用戶的需求,但這些需求是現(xiàn)實(shí)世界的具體需求。在進(jìn)行數(shù)據(jù)庫設(shè)計(jì)時,設(shè)計(jì)人員面臨的任務(wù)是將現(xiàn)實(shí)世界的具體事物轉(zhuǎn)換成計(jì)算機(jī)能夠處理的數(shù)據(jù)。這就涉及現(xiàn)實(shí)世界與計(jì)算機(jī)數(shù)據(jù)世界的轉(zhuǎn)換。

1.信息的三個世界

信息的三個世界之間的關(guān)系如圖6.10所示。從圖中可以看出,從現(xiàn)實(shí)世界問題到數(shù)據(jù)模型實(shí)際上經(jīng)歷了信息的三個世界:現(xiàn)實(shí)世界、信息世界和數(shù)據(jù)世界。

1)現(xiàn)實(shí)世界

現(xiàn)實(shí)世界是指存在于人們頭腦之外的客觀世界,其中存在著各種事物,事物間又具有不同的聯(lián)系。

2)信息世界

信息世界是指現(xiàn)實(shí)世界在人的頭腦中的反映。

3)數(shù)據(jù)世界

數(shù)據(jù)世界指信息世界中的信息在計(jì)算機(jī)中的數(shù)據(jù)存儲。

2.概念模型的設(shè)計(jì)方法

概念模型的設(shè)計(jì)方法很多,其中最著名且最常用的是P.P.S.Chen于1976年提出的實(shí)體-聯(lián)系方法(Entity-RelationshipApproach,E-R方法),其次是統(tǒng)一建模語言(UnifiedModelingLanguage,UML)類圖方法。UML類圖方法雖然在E-R方法之后出現(xiàn),但卻很快獲得了廣泛的應(yīng)用。下面將分別介紹這兩種方法。

6.3.5實(shí)體-聯(lián)系方法

E-R方法是被廣泛采用的概念模型設(shè)計(jì)方法,它直接從現(xiàn)實(shí)世界抽象出實(shí)體型及其相互間的聯(lián)系,并用實(shí)體-聯(lián)系圖(Entity-RelationshipDiagram,E-R圖)來表示概念模型,E-R圖也稱為E-R模型。E-R模型是一種語義模型,旨在表達(dá)數(shù)據(jù)的含義,因此在很多數(shù)據(jù)庫設(shè)計(jì)工具中都采用了這種模型。

1.

E-R模型的表示方法

例如,在高校管理系統(tǒng)中,假設(shè)課程實(shí)體具有課程號、課程名、學(xué)分和周學(xué)時等屬性,該實(shí)體及其屬性的表示方法如圖6.15所示,其中帶下劃線的屬性“課程號”是課程實(shí)體的鍵。

圖6.15課程實(shí)體及屬性圖

再看一個例子,假設(shè)教師實(shí)體具有教師號、姓名、性別、職稱、E-mail地址、電話號碼和家庭地址等屬性,該實(shí)體的表示方法如圖6.16所示。其中,“E-mail地址”屬性是一個多值屬性,故用雙橢圓形框表示。而“家庭地址”屬性是一個復(fù)合屬性,所以在“家庭地址”屬性的下面還有城市、區(qū)、街道和郵政編碼等四個成員屬性與其相連。

圖6.16教師實(shí)體及屬性

例如,在高校管理系統(tǒng)中,班級實(shí)體、學(xué)生實(shí)體及其聯(lián)系可以用圖6.17所示的E-R模型表示。其中,學(xué)生實(shí)體具有學(xué)號、姓名、性別和年齡等屬性,班級實(shí)體具有班級號、班級名和人數(shù)等屬性。“學(xué)號”和“班級號”分別是學(xué)生實(shí)體和班級實(shí)體的鍵,因此其屬性名帶有下劃線。而“人數(shù)”屬性是派生屬性,故用虛橢圓形框表示。班級實(shí)體和學(xué)生實(shí)體之間的“屬于”聯(lián)系是一對多的,所以“屬于”聯(lián)系的班級實(shí)體端標(biāo)有“1”,而學(xué)生實(shí)體端標(biāo)有“n”。另外,由于參與者學(xué)生在“屬于”聯(lián)系中是全部的,因此用雙線將其與“屬于”聯(lián)系相連。

圖6.17班級實(shí)體和學(xué)生實(shí)體及相互間的一對多聯(lián)系

觀察如圖6.18所示的E-R模型,該模型描述了課程實(shí)體、教師實(shí)體及相互間的多對多聯(lián)系。

圖6.18課程和教師實(shí)體集及相互間的多對多聯(lián)系

2.

E-R模型的設(shè)計(jì)問題

在進(jìn)行數(shù)據(jù)庫E-R模型的設(shè)計(jì)過程中,當(dāng)人們從現(xiàn)實(shí)世界中抽象出來實(shí)體型、屬性和實(shí)體間的聯(lián)系,并用E-R模型來描述它們時,必須要準(zhǔn)確地確定實(shí)體及其屬性以及實(shí)體間的聯(lián)系。

(1)確定實(shí)體和屬性。一般來說,可以作為屬性的事物應(yīng)符合以下兩條原則:

①除了復(fù)合屬性,其他屬性都不能具有需要描述的特性。

②屬性不能與其他實(shí)體發(fā)生聯(lián)系。

符合上述原則的事物應(yīng)作為屬性,其余的應(yīng)作為實(shí)體。如圖6.19所示,對課程實(shí)體來說,課程號、課程名、學(xué)分和周學(xué)時毫無疑問應(yīng)該作為它的屬性,但是如果課程類型還與課程的上課周數(shù)有關(guān),則應(yīng)該把“課程類型”作為一個實(shí)體,而將“周數(shù)”作為它的屬性。

圖6.19課程和課程類型

(2)確定實(shí)體間的聯(lián)系。從圖6.18所示的E-R模型中可以得到以下信息:課程信息、教師信息以及某位教師講授哪幾門課,某門課程是由哪幾個教師講授的。但人們不能了解教師講授課程時,是在什么時間、什么地點(diǎn)講授的,哪些學(xué)生選修了該課程。如果這些都是用戶所關(guān)心的問題,就必須在E-R模型中體現(xiàn)出來。假設(shè),教師不能重復(fù)教某門課程;如果選修同一教師所講授某門課程的學(xué)生特別多,即用大教室上課;每個學(xué)生可以選修多門課程;每門課程都由一個具體的教師講授;同一門課程也可以被不同的學(xué)生選修。

因此,需要給原來E-R模型的“講授”聯(lián)系增加“時間”和“教室號”兩個屬性;另外還需要增加一個“學(xué)生”實(shí)體,該實(shí)體具有學(xué)號、姓名、性別、年齡等屬性;并且還需要增加一個課程、教師和學(xué)生間的多對多“上課”聯(lián)系。修改后的E-R模型如圖6.20所示。

圖6.20課程、教師和學(xué)生實(shí)體及相互間的聯(lián)系1

此時,不能將如圖6.20所示的E-R模型中的“講授”和“上課”聯(lián)系合并成如圖6.21所示的E-R模型中的“講授”聯(lián)系,因?yàn)檫@樣會產(chǎn)生冗余信息。一個教師在某個時間某間教室可以給不同的學(xué)生上課,學(xué)生數(shù)目有多少,時間和教室號就需要重復(fù)存放多少次。

圖6.21課程、教師和學(xué)生實(shí)體及相互間的聯(lián)系2

現(xiàn)在將學(xué)生的考試成績在E-R模型中表示出來。顯然“成績”是一個屬性,該屬性應(yīng)放在哪里?是在如圖6.20所示的E-R模型的“上課”聯(lián)系中增加一個“成績”屬性,還是在學(xué)生和課程實(shí)體間增加一個“考試”聯(lián)系,然后將“成績”作為“考試”聯(lián)系的屬性呢?假設(shè)對任何課程,學(xué)生都可以申請免修不免考(即學(xué)生可以申請參加某門課程的考試,而不需要到教室去上課)。顯然,第二種增加“成績”屬性的方法可以準(zhǔn)確地表達(dá)該語義,如圖6.22所示。

圖6.22課程、教師和學(xué)生實(shí)體及相互間的聯(lián)系

(3)二元聯(lián)系和n元聯(lián)系問題。任何一個n(n>2)元聯(lián)系都可以用一組二元聯(lián)系來代替。在此,簡單地設(shè)n

=

3。實(shí)體A、B、C之間存在著一個三元聯(lián)系R,現(xiàn)用實(shí)體E代替聯(lián)系R,聯(lián)系R的屬性即為實(shí)體E的屬性(若聯(lián)系R本身沒有屬性,則需為實(shí)體E設(shè)置一個標(biāo)識屬性),這樣就可以用聯(lián)系RA(聯(lián)系實(shí)體E和實(shí)體A)、RB(聯(lián)系實(shí)體E和實(shí)體B)和RC(聯(lián)系實(shí)體E實(shí)體C)來代替原來的聯(lián)系R,如圖6.23所示。

圖6.23三元聯(lián)系轉(zhuǎn)換為二元聯(lián)系

例如,在如圖6.22所示的E-R模型中,教師、課程和學(xué)生實(shí)體之間的三元聯(lián)系“上課”就可以轉(zhuǎn)換成如圖6.24所示的3個二元聯(lián)系“上課1”、“上課2”和“上課3”。在該E-R模型中,新增加了一個“上課”實(shí)體,以代替原來的“上課”聯(lián)系。由于原“上課”聯(lián)系沒有自己的屬性,因此在新的“上課”實(shí)體中增加了一個標(biāo)識屬性“上課號”。

圖6.24教師、課程、學(xué)生和上課實(shí)體及其二元聯(lián)系

3個實(shí)體間的三元聯(lián)系(見圖6.25(a))能否轉(zhuǎn)換成實(shí)體間的兩兩聯(lián)系(見圖6.25(b))呢?考慮一下如圖6.22所示的E-R模型,能否將其中教師、課程和學(xué)生三者之間的“上課”聯(lián)系拆成教師、課程和學(xué)生之間的兩兩聯(lián)系,從而用圖6.26來代替圖6.22?答案是否定的。因?yàn)樵趫D6.26所示的E-R模型中,只能得到如下信息;某個學(xué)生修讀了哪幾個教師講授的課程。但是,卻不知道某個學(xué)生在學(xué)習(xí)某門課時的教師是誰,而此問題在圖6.22所示的E-R模型中是可以得到答案的??梢姡?個實(shí)體之間的三元聯(lián)系不能用實(shí)體間的兩兩聯(lián)系來代替。這個結(jié)論可以推廣為n個實(shí)體之間的n元聯(lián)系不能用n個實(shí)體間的兩兩聯(lián)系來代替。

圖6.25實(shí)體間的三元聯(lián)系和兩兩聯(lián)系圖6.26課程、教師和學(xué)生實(shí)體及相互間的聯(lián)系

3.

E-R模型的擴(kuò)充

盡管在大部分情況下,使用前面介紹的基本E-R模型已經(jīng)可以滿足數(shù)據(jù)庫建模的需要,即可以將現(xiàn)實(shí)世界中的事物及其相互間的聯(lián)系描述清楚。但是,在有些時候卻還不盡如人意。因此,需要對基本的E-R模型進(jìn)行擴(kuò)充。本節(jié)將先引入弱實(shí)體(WeakEntity)的概念,再介紹特殊化(Specialization)和概括(Generalization)。

1)弱實(shí)體

在現(xiàn)實(shí)世界中,有些實(shí)體的存在必須依賴于其他實(shí)體,這樣的實(shí)體稱為弱實(shí)體,其他實(shí)體則被稱為常規(guī)實(shí)體。

例如,教師的子女依賴于教師而存在,因此子女實(shí)體就是弱實(shí)體。又如,單元住宅與建筑物之間也存在著依賴關(guān)系,單元住宅的存在依賴于建筑物的存在,因此單元住宅是弱實(shí)體。再如,軟件產(chǎn)品與其發(fā)行版之間同樣存在著依賴關(guān)系,發(fā)行版是弱實(shí)體。

在E-R模型中,弱實(shí)體用雙線框表示。與弱實(shí)體的聯(lián)系,用雙菱形框表示。上面的子女與教師、單元住宅與建筑物、發(fā)行版與軟件產(chǎn)品之間的依賴關(guān)系如圖6.27所示。

圖6.27弱實(shí)體

2)特殊化和概括

(1)特殊化的相關(guān)內(nèi)容。觀察一下課程實(shí)體,它具有課程號、課程名、學(xué)分和周學(xué)時等屬性。假設(shè)課程實(shí)體可以進(jìn)一步劃分為兩大類:選修課和必修課。這兩類課程都具有課程實(shí)體所具有的所有屬性,另外它們也分別具有區(qū)別于其他課程的一些獨(dú)特的屬性。

選修課還可以分成共同限選課和專業(yè)選修課兩類。其中,共同限選課是面向全校學(xué)生開設(shè)的選修課,共分五大模塊,每個模塊包含若干門共同限選課,因此每門共同限選課都有一個模塊號。

上面經(jīng)過特殊化后的課程實(shí)體可以用如圖6.28所示的E-R模型表示。其中,課程實(shí)體是選修課和必修課實(shí)體的高層實(shí)體,選修課和必修課實(shí)體是課程實(shí)體的低層實(shí)體。同樣,選修課實(shí)體是共同限選課和專業(yè)選修課的高層實(shí)體,而共同限選課和專業(yè)選修課是選修課實(shí)體的低層實(shí)體。

特殊化后產(chǎn)生的低層實(shí)體可以具有高層實(shí)體所不包含的屬性,也可以參與不適用于高層實(shí)體中所有實(shí)體的聯(lián)系中。例如,在如圖6.28所示的E-R模型中,選修課的低層實(shí)體專業(yè)選修課就參與了其高層實(shí)體所不適用的與專業(yè)之間的“選修課計(jì)劃”聯(lián)系中,該聯(lián)系主要用于表達(dá)專業(yè)選修課實(shí)體中的實(shí)體屬于哪個專業(yè)。

圖6.28IsA的特殊聯(lián)系

(2)概括的相關(guān)內(nèi)容。特殊化的過程是一個自頂向下的設(shè)計(jì)過程,在該過程中對高層實(shí)體進(jìn)行分組可以產(chǎn)生若干個低層實(shí)體。而概括則是特殊化過程的逆過程。例如,假設(shè)先設(shè)計(jì)出了選修課和必修課兩實(shí)體,其中選修課實(shí)體具有課程號、課程名、學(xué)分、周學(xué)時、人數(shù)上限和人數(shù)下限等屬性,而必修課實(shí)體具有課程號、課程名、學(xué)分、周學(xué)時和課程負(fù)責(zé)人等屬性。就所具有的屬性而言,選修課和必修課兩實(shí)體間存在著共性,從這種共性中可以概括出課程實(shí)體。

可見,概括是一個從低層實(shí)體出發(fā)設(shè)計(jì)出高層實(shí)體的過程,概括反映了高層實(shí)體和低層實(shí)體間的包含關(guān)系。其中,高層實(shí)體稱為超類(Supertype),低層實(shí)體稱為子類(Subtype)。超類和子類之間的聯(lián)系,在E-R模型中用一種稱作IsA的特殊聯(lián)系來表示。IsA聯(lián)系用一個三角形和兩條連向?qū)嶓w的線來表示,三角形的尖端指向超類,三角形中還要寫上IsA的字樣,如圖6.28所示。

在E-R模型中,特殊化也使用IsA聯(lián)系來表示。一個實(shí)體可以是某個實(shí)體的子類,同時又是另一個實(shí)體的超類。例如,選修課實(shí)體是課程實(shí)體的子類,同時又是共同限選課的專業(yè)選修課實(shí)體的超類??梢允褂脙啥穗p線的矩形表示超類,用直線加小圓圈表示超類和子類間的聯(lián)系,如圖6.29所示。

圖6.29超類與子類間的聯(lián)系

(3)屬性繼承的相關(guān)內(nèi)容。屬性繼承是指通過特殊化或概括所產(chǎn)生的低層實(shí)體將繼承高層實(shí)體的所有屬性。例如,圖6.28中的低層實(shí)體選修課和必修課都繼承了課程實(shí)體的屬性,因此選修課實(shí)體具有課程號、課程名、學(xué)分、周學(xué)時、人數(shù)上限和人數(shù)下限等屬性,必修課實(shí)體具有課程號、課程名、學(xué)分、周學(xué)時和課程負(fù)責(zé)人等屬性。同理,共同限選課則具有課程號、課程名、學(xué)分、周學(xué)時、人數(shù)上限、人數(shù)下限和模塊號等屬性。

4.局部E-R模型的設(shè)計(jì)

利用E-R方法進(jìn)行數(shù)據(jù)庫的概念設(shè)計(jì),可以分兩步進(jìn)行,首先設(shè)計(jì)出局部E-R模型,然后再將各局部E-R模型綜合成一個全局E-R模型,在綜合過程中同時對全局E-R模型優(yōu)化,得到最終的E-R模型,即概念模型。

局部E-R模型的設(shè)計(jì)步驟如圖6.30所示。

圖6.30局部E-R模型的設(shè)計(jì)步驟

(1)根據(jù)需求分析所產(chǎn)生的文檔,確定每一個局部結(jié)構(gòu)的范圍。每個應(yīng)用系統(tǒng)都可以分成幾個子系統(tǒng),每個子系統(tǒng)又可以進(jìn)一步劃分成更小的子系統(tǒng)。設(shè)計(jì)局部E-R模型的第一步就是選擇適當(dāng)層次的子系統(tǒng),這些子系統(tǒng)中的每一個都對應(yīng)了一個局部應(yīng)用。從這些子系統(tǒng)出發(fā),設(shè)計(jì)各個局部E-R模型。

(2)分析每一個局部結(jié)構(gòu)所包含的實(shí)體、屬性和相互間的聯(lián)系,設(shè)計(jì)每一個局部結(jié)構(gòu)的E-R模型,直到所有的局部E-R模型都設(shè)計(jì)完成為止。

下面以前面給出的高校管理系統(tǒng)為例,設(shè)計(jì)局部E-R模型,即分別設(shè)計(jì)教學(xué)管理、工資及福利管理、教材管理、辦公管理等子系統(tǒng)的E-R模型。為了簡化,下面僅給出教學(xué)管理子系統(tǒng)和工資及福利管理子系統(tǒng)的E-R模型。

(1)設(shè)計(jì)教學(xué)管理子系統(tǒng)的E-R模型。根據(jù)教學(xué)管理子系統(tǒng)的信息需求,可以得到如圖6.31所示的E-R模型。

(2)設(shè)計(jì)工資及福利管理子系統(tǒng)的E-R模型。根據(jù)工資及福利管理子系統(tǒng)的信息需求,可以得到如圖6.32所示的E-R模型。

圖6.31教學(xué)管理子系統(tǒng)的E-R模型圖6.32工資及福利管理子系統(tǒng)的E-R模型

5.全局E-R模型的設(shè)計(jì)

各個局部視圖(即分E-R圖)建立好后,還需要對它們進(jìn)行合并,集成為一個整體的概念數(shù)據(jù)結(jié)構(gòu),即全局E-R圖,這個過程就是視圖的集成。視圖的集成有兩種方式:

(1)一次集成法。一次集成多個分E-R圖,通常用于局部視圖比較簡單的情況,如圖6.33所示。

(2)逐步累積式。首先集成兩個局部視圖(通常是比較關(guān)鍵的兩個局部視圖),以后每次將一個新的局部視圖集成進(jìn)來,如圖6.34所示。

圖6.33一次集成法圖6.34逐步累積式

由圖6.33和6.34可知,不管用哪種方法,集成局部E-R圖都分為兩個步驟,如圖6.35所示。

(1)合并。解決各個局部E-R圖之間的沖突,將各個局部E-R圖合并起來生成初步E-R圖。

(2)修改與重構(gòu)。消除不必要的冗余,生成基本E-R圖。

圖6.35視圖的集成

全局E-R模型的設(shè)計(jì)過程如圖6.36所示。

圖6.36全局E-R模型的設(shè)計(jì)過程

(1)合并分E-R圖,生成初步E-R圖。合并分E-R圖時并不能簡單地將各個分E-R圖畫到一起,而是必須著力消除各個分E-R圖中不一致的地方,以形成一個能為全系統(tǒng)中所有用戶都理解和接受的統(tǒng)一概念模型。合理消除各分E-R圖的沖突是合并分E-R圖的關(guān)鍵所在。

E-R圖中的沖突有三種:屬性沖突、命名沖突和結(jié)構(gòu)沖突。

①屬性沖突。屬性域沖突即屬性值的類型、取值范圍或取值集合不同。

②命名沖突。命名沖突可能發(fā)生在實(shí)體名、屬性名或聯(lián)系名之間。

命名沖突通常用討論、協(xié)商等行政手段加以解決。

③結(jié)構(gòu)沖突。結(jié)構(gòu)沖突有三類,分別如下:

·同一對象在不同應(yīng)用中具有不同的抽象。

·同一實(shí)體在不同局部視圖中所包含的屬性不完全相同,或者屬性的排列次序不完全相同。

·實(shí)體之間的聯(lián)系在不同局部視圖中呈現(xiàn)不同的類型。

(2)消除不必要的冗余,設(shè)計(jì)基本E-R圖。冗余數(shù)據(jù)是指可由基本數(shù)據(jù)導(dǎo)出的數(shù)據(jù)。冗余聯(lián)系是指可由其他聯(lián)系導(dǎo)出的聯(lián)系。冗余數(shù)據(jù)和冗余聯(lián)系容易破壞數(shù)據(jù)庫的完整性,給數(shù)據(jù)庫維護(hù)增加困難。并不是所有的冗余數(shù)據(jù)與冗余聯(lián)系都必須消除,有時為了提高某些應(yīng)用的效率,不得不以冗余信息作為代價。

①采用分析的方法來消除數(shù)據(jù)冗余

②檢查合并后的E-R模型中有無冗余數(shù)據(jù)和冗余聯(lián)系。

在教學(xué)管理子系統(tǒng)E-R模型中,教師和課程實(shí)體間的講授聯(lián)系具有時間和教室號等屬性。而在工資及福利管理子系統(tǒng)E-R模型中,講授聯(lián)系具有時間和評教等級屬性。因此,應(yīng)對講授聯(lián)系進(jìn)行合并,使講授聯(lián)系具有時間、教室號和評教等級等屬性。

合并后生成的全局E-R模型如圖6.37所示。

圖6.37高校管理系統(tǒng)的全局E-R模型

【例6.3】網(wǎng)上書店系統(tǒng)概念設(shè)計(jì)。

大多數(shù)網(wǎng)絡(luò)應(yīng)用系統(tǒng)都需要有后臺數(shù)據(jù)庫的支持。動態(tài)網(wǎng)站應(yīng)用程序開發(fā)過程中很關(guān)鍵的技術(shù)就是動態(tài)網(wǎng)站數(shù)據(jù)庫的設(shè)計(jì)與編程,包括數(shù)據(jù)庫的設(shè)計(jì)、數(shù)據(jù)源的配置與連接、數(shù)據(jù)源的操作、數(shù)據(jù)的獲取、SQL查詢語言的使用等。

利用數(shù)據(jù)庫可以管理后臺操作,例如修改、輸入、刪除等,對管理員來說更加方便、快捷;同樣也可以避免非法用戶對網(wǎng)站的操作,從而保證了網(wǎng)站的安全性。

依據(jù)前臺購書系統(tǒng)的需求,對應(yīng)數(shù)據(jù)表的設(shè)計(jì)及功能如下:

用戶表:用戶編號,用戶名,密碼,地址,郵編,電子郵件地址,家庭電話,個人電話,辦公電話。

圖書表:圖書編號,圖書名稱,圖書描述,圖書價格,圖書圖片路徑,作者,圖書類型編號。

圖書類型表:圖書類型編號,圖書類型名稱。

訂單表:訂單編號,訂單狀態(tài),訂單金額,訂單產(chǎn)生時間,用戶編號。

訂單條目表:條目編號,圖書數(shù)量,圖書編號,訂單編號。

上述實(shí)體中存在如下聯(lián)系:

(1)一個用戶可以有多個訂單,一個訂單對應(yīng)一個用戶。

(2)一個訂單可以有多個訂單條目,一個訂單條目只對應(yīng)一個訂單。

(3)一種圖書只屬于一種圖書類型,一個圖書類型可以有多種圖書。

(4)一個訂單條目只有一種圖書,一種圖書可以有多個訂單條目。

優(yōu)化后的基本E-R模型如圖6.38所示。

圖6.38優(yōu)化后的基本E-R圖

6.3.6UML方法

在關(guān)系數(shù)據(jù)庫設(shè)計(jì)中,用來創(chuàng)建數(shù)據(jù)庫邏輯模型的常用的標(biāo)準(zhǔn)方法是使用E-R模型。E-R模型可以僅通過實(shí)體和它們之間的關(guān)系合理地體現(xiàn)一個組織的數(shù)據(jù)模型。但這樣做似乎對描述一個組織的信息過于簡單化,并且詞匯量也遠(yuǎn)遠(yuǎn)不足。因此,迫切需要使用更加靈活、健壯的模型來代替E-R模型。

UML是一種面向?qū)ο蟮?、通用的建模語言,其表達(dá)能力很強(qiáng),它綜合了各種面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn),自提出之日起就受到了廣泛的重視并得到了工業(yè)界的支持。UML概括并統(tǒng)一了軟件工程、業(yè)務(wù)建模和管理、數(shù)據(jù)庫設(shè)計(jì)等許多方法學(xué)。目前,UML在許多領(lǐng)域都很流行,包括數(shù)據(jù)庫設(shè)計(jì)。

1.用UML進(jìn)行數(shù)據(jù)庫應(yīng)用設(shè)計(jì)

許多數(shù)據(jù)庫設(shè)計(jì)人員和開發(fā)人員都使用UML進(jìn)行數(shù)據(jù)庫建模,并且將其應(yīng)用于后續(xù)的數(shù)據(jù)庫設(shè)計(jì)階段。UML的優(yōu)點(diǎn)是:盡管其概念基于面向?qū)ο蠹夹g(shù),但所得到的結(jié)構(gòu)模型和行為模型既可以用于設(shè)計(jì)關(guān)系數(shù)據(jù)庫,也可以用于設(shè)計(jì)面向?qū)ο髷?shù)據(jù)庫以及對象-關(guān)系數(shù)據(jù)庫。

2.

UML類圖與E-R圖

在E-R方法中,E-R圖用來表示概念模型。在UML方法中,UML類圖(對象模型)用來表示概念模型。UML對象模型實(shí)質(zhì)上是一種擴(kuò)展的E-R模型。在設(shè)計(jì)數(shù)據(jù)庫概念模型時,既可以采用E-R模型,也可以采用UML對象模型以類似的方式設(shè)計(jì)概念模型。與E-R模型相比,UML對象模型具有更強(qiáng)的表達(dá)能力。

(1)

UML類圖與E-R圖中術(shù)語的區(qū)別。UML類圖描述了系統(tǒng)的靜態(tài)結(jié)構(gòu),包括類和類間的聯(lián)系。UML類圖與E-R圖有許多類似的地方,但所用的術(shù)語和符號有所不同。表6.2列出了UML類圖與E-R圖中所用的術(shù)語。

(2)

UML類圖中的基本成分。它包括類和關(guān)聯(lián)。

①類被表示為由三個部分組成的方框,如圖6.39所示。

其中,上面部分給出了類的名稱;中間部分給出了該類的單個對象的屬性;下面部分給出了對象的約束條件以及一些可以應(yīng)用到這些對象的操作(程序)。

圖6.39UML類圖的例子

②關(guān)聯(lián)及與關(guān)聯(lián)有關(guān)的內(nèi)容。關(guān)聯(lián)是對類的實(shí)例之間聯(lián)系的命名,相當(dāng)于E-R模型中的聯(lián)系類型。與關(guān)聯(lián)有關(guān)的內(nèi)容如下:

關(guān)聯(lián)元數(shù):也稱為關(guān)聯(lián)的度,它表示與關(guān)聯(lián)有關(guān)的類的個數(shù)。

關(guān)聯(lián)角色(Role):關(guān)聯(lián)的端部,即與關(guān)聯(lián)相連的類。角色名可以重新命名,也可以默認(rèn)類的名字作為角色名。

重復(fù)度:它是指在一個續(xù)寫的聯(lián)系中有多少對象參與。

(3)重復(fù)度的表示方法。實(shí)際上,最常用的重復(fù)度是0..1、*和1。

0..1表示最小值是0,最大值是1(隨便取一個)。

②*(或0..*)表示范圍從0到無窮大(隨便多大)。

1代表1..1,表示關(guān)聯(lián)中參與的對象數(shù)目恰好是1(強(qiáng)制是1)。

實(shí)際應(yīng)用時,可以使用單個數(shù)值(如用2表示橋牌隊(duì)的成員數(shù)目)、范圍(如用11..14表示參與足球比賽隊(duì)伍的人數(shù))或數(shù)值與范圍的離散集(如用3、5、7表示委員會成員人數(shù),用20..32、35..40表示每個職工的周工作量)。

3.用UML類圖表示實(shí)體和關(guān)聯(lián)

UML是一種面向?qū)ο蟮慕UZ言,因此實(shí)體在這里被稱為類。在UML類圖中,類被表示為方框,同E-R方法中一樣。UML類圖和E-R圖之間的主要區(qū)別在于,E-R圖中的實(shí)體屬性出現(xiàn)在附加在方框之上的橢圓中;而在UML類圖中,屬性直接出現(xiàn)在方框中。UML類的例子如圖6.39所示。

UML類以多種方式擴(kuò)展E-R實(shí)體。

①UML類可以包含在這些類的對象(即實(shí)體)上操作的方法。圖6.39的底部顯示了操作外套對象的一些方法。對這些方法的包含使得設(shè)計(jì)者可以定義在由類產(chǎn)生的實(shí)體上可執(zhí)行的操作。

②UML2.0包括對象約束語言(ObjectConstraintLanguage,OCL)。

③UML有擴(kuò)展機(jī)制,可被用于向語言中增加額外的特性,從而使語言更適用于數(shù)據(jù)庫設(shè)計(jì),但是數(shù)據(jù)庫定義的擴(kuò)展現(xiàn)在還不是很明確。

4.在UML類圖中表示聯(lián)系

UML類圖中的聯(lián)系被稱為關(guān)聯(lián),聯(lián)系類型被稱為關(guān)聯(lián)類型(AssociationType)。一般來說,與E-R圖相比,UML類圖為關(guān)聯(lián)類型附加了更豐富的語義。

(1)不帶屬性的關(guān)聯(lián)。同E-R方法一樣,對象(即實(shí)體)之間通過關(guān)聯(lián)(即聯(lián)系)相關(guān),這些對象可能在關(guān)聯(lián)中扮演不同的角色。當(dāng)人們不能確定或期望看得更清楚時,可以為角色顯式命名。對于二元關(guān)聯(lián)類型,UML簡單地用一條線將關(guān)聯(lián)中涉及的類連接起來。當(dāng)涉及的類超過兩個時,UML與E-R圖一樣用一個菱形來表示。圖6.40給出了一些聯(lián)系類型的UML版本。

圖6.40UML關(guān)聯(lián)

下面以大學(xué)、教師、上課教材等信息組成的數(shù)據(jù)庫為例,介紹如何用UML類圖表示實(shí)體和實(shí)體聯(lián)系。先畫出其E-R圖,如圖6.41所示,再畫出UML類圖,如圖6.42所示。

對如圖6.42所示的UML類圖可以解釋如下:

①圖中有4個類:University、Faculty、Coursetext和Person。在每個類的方框中,指出了類名、對象的屬性和操作。其中,F(xiàn)aculty是Person的子類,在超類的端點(diǎn)處標(biāo)以空心三角形。

圖6.41大學(xué)、教師、上課教材等信息的E-R類圖

②圖中有4個關(guān)聯(lián):President(1:1)、Staff(1:n)、Edit(1:n)和Teach(1:n),這4個關(guān)聯(lián)都是二元關(guān)聯(lián)。雖然在類圖中關(guān)聯(lián)名可以沿著一個方向讀(在關(guān)聯(lián)名上加一個實(shí)心三角形明確表示方向),但是二元關(guān)聯(lián)是固有的雙向聯(lián)系。例如,Staff關(guān)聯(lián)可以讀成從University到Faculty的關(guān)聯(lián),但隱含著Staff一個相反的遍歷Works-for,它表示一個Faculty必須要為某個University服務(wù)。這兩個遍歷的方向提供了同樣的基本關(guān)聯(lián):關(guān)聯(lián)名可直接建立在一個方向上。

(2)關(guān)聯(lián)類。在圖6.40和圖6.42所示類圖中的關(guān)聯(lián)未提及屬性。像E-R模型中的聯(lián)系可以有屬性一樣,類圖中關(guān)聯(lián)本身也可以有屬性或自己的操作,此時將關(guān)聯(lián)表示成“關(guān)聯(lián)類”。一個關(guān)聯(lián)類與一個常規(guī)類相似,但是它以一種特殊方法(用一條虛線)連到一個關(guān)聯(lián)上,這意味著用類的屬性來描述關(guān)聯(lián)。圖6.43表示附加了關(guān)聯(lián)類的聯(lián)系。

圖6.42大學(xué)、教師、上課教材等信息的UML類圖圖6.43帶有關(guān)聯(lián)類的UML關(guān)聯(lián)

例如,在E-R模型中,學(xué)生與課程是一個多對多的聯(lián)系,其選課聯(lián)系有一個屬性“成績”。現(xiàn)在可以用如圖6.44所示的類圖表示,其中學(xué)生Student和課程Course表示兩個類。Student和Course之間的關(guān)聯(lián)Registration(注冊,即選課)也有自己的屬性term(學(xué)期)、grade(成績)和操作checkEligibility(檢查注冊是否合格)。因此,關(guān)聯(lián)Registration應(yīng)表示成一個類,即“關(guān)聯(lián)類”,再用虛線與關(guān)聯(lián)線相連。

此外,我們還可以發(fā)現(xiàn),對于某門課程的注冊,系統(tǒng)會給學(xué)生一個計(jì)算機(jī)賬號?;诖?,這個關(guān)聯(lián)類還可以與另一個類ComputerAccount有一個關(guān)聯(lián),如圖6.44所示。

圖6.44表達(dá)關(guān)聯(lián)類的UML類圖

5.在UML中表示概括/特殊化

下面先來看一個概括/特殊化的類圖例子,如圖6.45所示,其中每個類只標(biāo)出類名和屬性,未標(biāo)出操作。

圖6.45帶有三個子類的Employee超類

圖中職員有三種:計(jì)時制職員(HourlyEmp),月薪制職員(SalariedEmp)和顧問(Consultant)。這三種職員都擁有的特征在Employee超類中,而各自特有的特征存儲在其相應(yīng)的子類中。表示概括路徑時,從子類的超類畫一條實(shí)線,在實(shí)線的一端畫一個空心的三角形指向超類。也可以對給定超類的一組概括路徑表達(dá)成一棵與單獨(dú)子類相聯(lián)系的多分支樹,共享部分用指向超類的空心三角形表示。例如,在圖6.46中,將從出院病人(OutPatient)到病人(Patient)和從住院病人(ResidentPatient)到病人(Patient)這兩條概括路徑結(jié)合成帶指向Patient的三角形的共享部分。此外,這個概括是動態(tài)的,即表示一個對象有可能會改變子類型。

圖6.46帶有兩個具體子類的抽象的Patient類

下面介紹一下類圖中與概括/特殊化有關(guān)的內(nèi)容。

(1)鑒別器。可以在緊靠路徑處設(shè)置一個鑒別器(Discriminator)指出概括的基礎(chǔ)。在圖6.45中,可以在職員類型(計(jì)時制、月薪制、顧問)的基礎(chǔ)上鑒別出職員類別。在圖6.46中,一組概括聯(lián)系只需設(shè)置一次鑒別器。

(2)概括表示了繼承性聯(lián)系。子類的對象也是超類的對象,因此概括是一個“isa”聯(lián)系,子類繼承了超類的所有性質(zhì)。繼承性是使用面向?qū)ο竽P偷囊粋€主要優(yōu)點(diǎn),繼承性可以使代碼具有重用性(Reuse)。程序員不必編寫已在超類中編寫過的代碼,只需對那些已存在類的新的、被精煉的子類編寫不重復(fù)的代碼。

(3)抽象類和具體類。抽象類(AbstractClass)是一種沒有直接對象,但其子孫可以有直接對象的類。在類圖中,抽象類應(yīng)在類名下面用一對花括號并寫上abstract字樣表示,也可以用斜體表示類名(如圖6.46所示的類Patient)。有直接對象的類,稱為具體類(ConcreteClass)。在圖6.46中,OutPatient和ResidentPatient都可以有直接對象,但Patient不可以有自己的直接對象。

(4)子類的語義約束。在圖6.45和圖6.46中,complete、incomplete和disjoint字樣放在花括號內(nèi),靠近概括。這些單詞表示了子類之間的語義約束。這些約束主要有4種,其意義如下:

overlapping(重疊):子類的對象集可以相交。

disjoint(不相交):子類的對象集不可以相交。

complete(完備):超類中的對象必須在子類中出現(xiàn)。

imcomplete(非完備):超類中的對象可以不在子類中出現(xiàn)。

圖6.45和圖6.46中的概括都是不相交的。一個職員可以是計(jì)時制、月薪制或顧問,但不可以同時兼有。同樣,一個病人可以是一個出院病人或住院病人,但不可以同時是兩者。圖6.45中的概括是非完備的,這表示一個職員可以不是3種類型中的任何一個,此時這個職員作為具體類Employee的對象存儲。相反,圖6.46中的概括是完備的,這表示一個病人必須是出院病人或住院病人,不能是其他情況,因此Patient被說明成一個抽象類。

6.在UML中表示弱實(shí)體

弱實(shí)體(成分對象)的存在必須要依賴于其父實(shí)體(聚合對象)。弱實(shí)體(成分對象)和父實(shí)體(聚合對象)之間的聯(lián)系類型之一是聚合,即使整體—父實(shí)體(聚合對象)被破壞,部分—弱實(shí)體(成分對象)仍然可以獨(dú)立存在。聚合(Aggregation)表達(dá)了弱實(shí)體(成分對象)和父實(shí)體(聚合對象)之間的“ispartof”(一部分)的聯(lián)系。聚合實(shí)際上是一種較強(qiáng)形式的關(guān)聯(lián)聯(lián)系(附加“ispartof”語義)。

在UML類圖中表示時,聚合的一端用空心菱形表示(在E-R模型中,對于此類聯(lián)系沒有專門的表示符號)。與UML聚合相伴隨的經(jīng)常是適當(dāng)?shù)闹貜?fù)度約束。例如,圖6.47中的學(xué)校課程表與課程之間的重復(fù)度約束表明,一個課程可以與任意數(shù)目(包括0)的課程表相關(guān),但任何一個課程表必須至少包含三門課程;同樣,重復(fù)度約束表明每輛汽車一定有4個輪子,其一個輪子至多可以是一輛汽車的一部分。

圖6.47關(guān)于聚合的UML類圖

弱實(shí)體(成分對象)和父實(shí)體(聚合對象)之間的另一種聯(lián)系是組合,即弱實(shí)體(成分對象)在父實(shí)體(聚合對象)之外是不能存在的。當(dāng)父實(shí)體(聚合對象)被破壞時,弱實(shí)體(成分對象)也會被破壞。組合表達(dá)了弱實(shí)體(成分對象)和父實(shí)體(聚合對象)之間的這種聯(lián)系。組合可以被看做是一個特殊的聚合,用一端帶有實(shí)心菱形的線表示。圖6.48給出了兩個組合的例子。在組合中,一部分對象只屬于一個整體對象,與整體對象共存亡,即聚合對象的刪除將會使它的成分對象一起被刪除。但是有可能在聚合對象消亡前就刪除了其中一部分對象。大樓與房間就屬于這樣的聯(lián)系。

圖6.48關(guān)于組合的UML類圖

6.4數(shù)據(jù)庫邏輯設(shè)計(jì)

邏輯結(jié)構(gòu)設(shè)計(jì)的任務(wù)就是把概念結(jié)構(gòu)設(shè)計(jì)階段設(shè)計(jì)好的基本E-R圖轉(zhuǎn)換為與選用DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。如果選擇的是關(guān)系型DBMS產(chǎn)品,邏輯結(jié)構(gòu)的設(shè)計(jì)就是指設(shè)計(jì)數(shù)據(jù)庫中所應(yīng)包含的各關(guān)系模式的結(jié)構(gòu),包括各關(guān)系模式的名稱、每一個關(guān)系模式中各屬性的名稱、數(shù)據(jù)類型、取值范圍等內(nèi)容。

從理論上講,設(shè)計(jì)邏輯結(jié)構(gòu)應(yīng)該選擇最適于相應(yīng)概念結(jié)構(gòu)的數(shù)據(jù)模型,然后將支持這種數(shù)據(jù)模型的各種DBMS進(jìn)行比較,從中選出最合適的DBMS。但實(shí)際情況往往是已給定了某種DBMS,設(shè)計(jì)人員沒有選擇的余地。目前,DBMS產(chǎn)品一般支持關(guān)系、網(wǎng)狀、層次三種模型中的某一種。對某一種數(shù)據(jù)模型,各個機(jī)器系統(tǒng)又有許多不同的限制,提供不同的環(huán)境與工具。一般地,邏輯結(jié)構(gòu)設(shè)計(jì)分為以下三個步驟,如圖6.49所示。

圖6.49邏輯結(jié)構(gòu)設(shè)計(jì)三個步驟

(1)將概念結(jié)構(gòu)轉(zhuǎn)化為數(shù)據(jù)模型。

(2)將轉(zhuǎn)化來的數(shù)據(jù)模型向特定DBMS支持下的數(shù)據(jù)模型轉(zhuǎn)換。

(3)對數(shù)據(jù)模型進(jìn)行優(yōu)化。

目前,新設(shè)計(jì)的數(shù)據(jù)庫應(yīng)用系統(tǒng)大都采用支持關(guān)系數(shù)據(jù)模型的DBMS,所以在此只介紹E-R圖向關(guān)系數(shù)據(jù)模型轉(zhuǎn)換的原則與方法。

6.4.1E-R模型向關(guān)系模型轉(zhuǎn)換

1.全局E-R模型轉(zhuǎn)換為關(guān)系模型的規(guī)則

下面以圖6.37所示的高校管理系統(tǒng)的E-R模型為例,說明將全局E-R模型轉(zhuǎn)換成初始關(guān)系模型的規(guī)則。

(1)E-R模型中的一個常規(guī)實(shí)體轉(zhuǎn)換為一個關(guān)系模式。該關(guān)系模式的屬性由原實(shí)體中的各屬性組成,關(guān)系模式的主鍵就是原實(shí)體的主鍵。

由常規(guī)實(shí)體班級、學(xué)生、職稱、課程類型、專業(yè)、系和教師轉(zhuǎn)換成的關(guān)系模式如下:

班級(班級號,班級名,人數(shù));

學(xué)生(學(xué)號,姓名,性別,年齡);

職稱(職稱號,職稱名,崗位津貼,住房貸款額);

課程類型(類型號,類型名,周數(shù));

專業(yè)(專業(yè)號,專業(yè)名稱,選修門數(shù));

系(系號,系名);

教師(教師號,姓名,性別,電話號碼,城市,區(qū),街道,郵政編碼,工齡,基本工資,養(yǎng)老金,公積金);

教師實(shí)體中的E-mail地址屬性是多值屬性,轉(zhuǎn)換方法參見規(guī)則(3)。

(2)

E-R模型中的IsA聯(lián)系的轉(zhuǎn)換方法如下:為高層實(shí)體創(chuàng)建一個關(guān)系模式,該關(guān)系模式的屬性由原實(shí)體中的各屬性組成,關(guān)系模式的主鍵就是原實(shí)體的主鍵;為每個低層實(shí)體創(chuàng)建一個關(guān)系模式,該關(guān)系模式的屬性由低層實(shí)體中的各屬性和相對應(yīng)的高層實(shí)體的主鍵組成,關(guān)系模式的主鍵就是高層實(shí)體的主鍵。

注意:如果低層實(shí)體是不相交的,并且每個高層實(shí)體至少屬于一個低層實(shí)體,那么還可以采用另一種表示方法。即不為高層實(shí)體創(chuàng)建任何關(guān)系模式,只為每個低層實(shí)體創(chuàng)建一個關(guān)系模式,此關(guān)系模式的屬性由低層實(shí)體中的各屬性和相對應(yīng)的高層實(shí)體的各屬性組成,關(guān)系模式的主鍵就是高層實(shí)體的主鍵。

①使用第一種方法進(jìn)行轉(zhuǎn)換。課程實(shí)體及其低層實(shí)體選修課和必修課間的IsA聯(lián)系可以轉(zhuǎn)換成以下的三個關(guān)系模式:

課程(課程號,課程名,學(xué)分,周學(xué)時);

選修課(課程號,人數(shù)上限,人數(shù)下限);

必修課(課程號,課程負(fù)責(zé)人)。

另外,對選修課實(shí)體及其低層實(shí)體共同限選課和專業(yè)選修課間的IsA聯(lián)系進(jìn)行轉(zhuǎn)換,還可以增加以下兩個關(guān)系模式:

共同限選課(課程號,模塊號);

共同限選課(課程號,模塊號);

專業(yè)選修課(課程號)。

②使用第二種方法進(jìn)行轉(zhuǎn)換。在如圖6.37所示的E-R模型中,與課程有關(guān)的所有低層實(shí)體都是不相交的,并且每個高層實(shí)體至少屬于一個低層實(shí)體,因此課程實(shí)體及其低層實(shí)體選修課和必修課間的IsA聯(lián)系可以轉(zhuǎn)換成以下兩個關(guān)系模式:

選修課(課程號,課程名,學(xué)分,周學(xué)時,人數(shù)上限,人數(shù)下限);

必修課(課程號,課程名,學(xué)分,周學(xué)時,課程負(fù)責(zé)人)。

而選修實(shí)體及其低層實(shí)體共同限選課和專業(yè)選修課間的IsA聯(lián)系則可以轉(zhuǎn)換成以下兩個關(guān)系模式:

共同限選課(課程號,課程名,學(xué)分,周學(xué)時,人數(shù)上限,人數(shù)下限,模塊號);

專業(yè)選修課(課程號,課程名,學(xué)分,周學(xué)時,人數(shù)上限,人數(shù)下限)。

前面的選修課關(guān)系模式已包含在共同限選課和專業(yè)選修課關(guān)系模式中,因此采用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論