第7章面向?qū)ο笙到y(tǒng)設(shè)計(jì)_第1頁
第7章面向?qū)ο笙到y(tǒng)設(shè)計(jì)_第2頁
第7章面向?qū)ο笙到y(tǒng)設(shè)計(jì)_第3頁
第7章面向?qū)ο笙到y(tǒng)設(shè)計(jì)_第4頁
第7章面向?qū)ο笙到y(tǒng)設(shè)計(jì)_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章面向?qū)ο笙到y(tǒng)設(shè)計(jì)

第7章面向?qū)ο笙到y(tǒng)設(shè)計(jì)7.1系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)

7.2子系統(tǒng)耦合度與聚合度7.3子系統(tǒng)與功能模塊設(shè)計(jì)

7.4系統(tǒng)數(shù)據(jù)管理設(shè)計(jì)

7.5系統(tǒng)界面設(shè)計(jì)7.1系統(tǒng)體系結(jié)構(gòu)設(shè)計(jì)

7.1.1系統(tǒng)邏輯體系結(jié)構(gòu)設(shè)計(jì)7.1.2系統(tǒng)物理體系結(jié)構(gòu)設(shè)計(jì)7.1.1系統(tǒng)邏輯體系結(jié)構(gòu)設(shè)計(jì)1.設(shè)計(jì)原則面向?qū)ο笙到y(tǒng)設(shè)計(jì)的第一步就是確定系統(tǒng)邏輯體系結(jié)構(gòu),它決定了各子系統(tǒng)如何組織以及如何協(xié)調(diào)工作。在面向?qū)ο笙到y(tǒng)設(shè)計(jì)過程中,利用系統(tǒng)分層技術(shù)將整個(gè)系統(tǒng)進(jìn)行分層,每個(gè)層完成自身的功能,最后,所有的層整合起來構(gòu)成一個(gè)完整的系統(tǒng)邏輯體系結(jié)構(gòu)。

2.邏輯體系結(jié)構(gòu)建模:包圖設(shè)計(jì)

在UML中,一般采用包圖對系統(tǒng)邏輯體系結(jié)構(gòu)進(jìn)行建模,一個(gè)包相當(dāng)于一個(gè)子系統(tǒng),一個(gè)包也可以向下劃分為更小的包。根據(jù)設(shè)計(jì)原則和信息系統(tǒng)原理,將信息系統(tǒng)中比較關(guān)心的對象分層.用戶界面層、業(yè)務(wù)處理層、數(shù)據(jù)訪問層各層中的一些公共部分提出來:權(quán)限管理、異常處理。包圖設(shè)計(jì)用戶界面業(yè)務(wù)處理數(shù)據(jù)訪問權(quán)限管理錯(cuò)誤處理圖7.2系統(tǒng)邏輯體系結(jié)構(gòu)建模:包圖1)用戶界面包如圖7.3(a)所示,用戶界面層的職責(zé)是:(1)與用戶的交互,接收用戶的各種輸入以及輸出各種提示信息或處理結(jié)果。(2)對于輸入的數(shù)據(jù)進(jìn)行數(shù)據(jù)校驗(yàn),過濾非法數(shù)據(jù)。(3)向業(yè)務(wù)處理對象發(fā)送處理請求。用戶界面包含的類如圖7.3(b)所示。用戶界面輸入、輸出數(shù)據(jù)校驗(yàn)發(fā)送業(yè)務(wù)處理請求圖7.3(a)用戶界面包用戶界面類輸入輸出元素業(yè)務(wù)處理對象數(shù)據(jù)校驗(yàn)()業(yè)務(wù)處理()輸入界面輸出界面圖7.3(b)用戶界面包含的類2)業(yè)務(wù)處理包如圖7.4(a)所示,業(yè)務(wù)處理層的職責(zé)是:(1)實(shí)現(xiàn)各種業(yè)務(wù)處理邏輯或處理算法;(2)驗(yàn)證請求者的權(quán)限;(3)向數(shù)據(jù)訪問對象發(fā)送數(shù)據(jù)持久化操作的請求;(4)向用戶界面層返回處理結(jié)果。業(yè)務(wù)處理包含的類如圖7.4(b)所示。業(yè)務(wù)處理實(shí)現(xiàn)各種業(yè)務(wù)邏輯實(shí)現(xiàn)各種處理算法權(quán)限管理圖7.4(a)業(yè)務(wù)處理包業(yè)務(wù)處理類權(quán)限管理對象業(yè)務(wù)對象業(yè)務(wù)處理()圖7.4(b)業(yè)務(wù)處理包含的類業(yè)務(wù)類數(shù)據(jù)庫連接對象數(shù)據(jù)庫訪問對象業(yè)務(wù)處理()3)數(shù)據(jù)訪問包如圖7.5(a)所示,數(shù)據(jù)訪問層的職責(zé)是:(1)實(shí)現(xiàn)數(shù)據(jù)的持久化操作;(2)實(shí)現(xiàn)事務(wù)處理。數(shù)據(jù)訪問包含的類如圖7.5(b)所示。

數(shù)據(jù)訪問實(shí)現(xiàn)數(shù)據(jù)的持久化操作實(shí)現(xiàn)事務(wù)處理圖7.5(a)數(shù)據(jù)訪問包數(shù)據(jù)庫訪問類數(shù)據(jù)庫連接對象讀?。ǎ懭耄ǎ﹫D7.5(b)數(shù)據(jù)訪問包含的類業(yè)務(wù)數(shù)據(jù)庫連接類開始事務(wù)()提交事務(wù)()回滾事務(wù)()Instance()4)權(quán)限管理包如圖7.6(a)所示,權(quán)限管理的主要職責(zé)是:(1)驗(yàn)證請求者的請求權(quán)限;(2)提供請求者的權(quán)限列表。權(quán)限管理包含的類如圖7.6(b)所示。權(quán)限管理驗(yàn)證請求者的請求權(quán)限提供請求者的權(quán)限列表圖7.6(a)數(shù)據(jù)訪問包權(quán)限管理類操作員對象驗(yàn)證權(quán)限()獲取權(quán)限列表()操作員類操作員代碼操作員名稱角色對象表權(quán)限列表登陸()退出()是否構(gòu)建權(quán)限表()構(gòu)建權(quán)限列表()角色類角色名構(gòu)建權(quán)限列表圖7.6(b)權(quán)限訪問包含的類5)異常處理包如圖7.7(a)所示,異常處理的主要是:(1)匯報(bào)運(yùn)行時(shí)的詳細(xì)異常信息;(2)記錄異常處理日志。異常處理匯報(bào)運(yùn)行時(shí)的詳細(xì)異常信息記錄異常處理日志圖7.7(a)異常處理包異常處理包含的類如圖7.7(b)所示異常處理類異常處理實(shí)現(xiàn)對象異常處理實(shí)現(xiàn)類異常處理實(shí)現(xiàn)類系統(tǒng)異常數(shù)據(jù)庫異常業(yè)務(wù)邏輯異常系統(tǒng)異常實(shí)現(xiàn)數(shù)據(jù)庫異常實(shí)現(xiàn)業(yè)務(wù)邏輯異常實(shí)現(xiàn)圖7.7(b)異常處理包含的類包圖設(shè)計(jì)舉例

在圖書管理系統(tǒng)邏輯體系設(shè)計(jì)中,其系統(tǒng)包圖如圖7.8所示,一共有3個(gè)包:“圖書業(yè)務(wù)處理”包、“用戶界面”包和“數(shù)據(jù)庫”包。在“圖書業(yè)務(wù)處理”包中包含了實(shí)現(xiàn)圖書館管理的所有類;在“用戶界面”包中包含了該系統(tǒng)的全部界面類;在“數(shù)據(jù)庫”包中包含了與實(shí)現(xiàn)數(shù)據(jù)庫服務(wù)有關(guān)的全部類。用戶界面圖書業(yè)務(wù)處理數(shù)據(jù)庫圖7.8圖書管理系統(tǒng)包圖7.1.2系統(tǒng)物理體系結(jié)構(gòu)設(shè)計(jì)系統(tǒng)物理體系結(jié)構(gòu)設(shè)計(jì),不僅包括:(1)不同的節(jié)點(diǎn)和這些節(jié)點(diǎn)之間的連接方式(2)表示了邏輯體系結(jié)構(gòu)和物理結(jié)構(gòu)的依賴關(guān)系。在UML中,一般采用構(gòu)件圖和部署圖來對系統(tǒng)物理體系結(jié)構(gòu)進(jìn)行建模。構(gòu)件圖和部署圖可以描述出系統(tǒng)中的類和對象涉及的具體程序或進(jìn)程,并表明程序或進(jìn)程使用的硬件設(shè)備及它們之間的相互連接。1.系統(tǒng)構(gòu)件圖構(gòu)件是程序代碼的實(shí)際物理模塊,系統(tǒng)的構(gòu)件圖用來顯示代碼模塊間的關(guān)系。在圖書管理系統(tǒng)物理體系設(shè)計(jì)中,其系統(tǒng)構(gòu)件圖如圖7.9所示。系統(tǒng)包含3個(gè)類包,即界面包、圖書業(yè)務(wù)包和數(shù)據(jù)庫包,以及1個(gè)圖書管理系統(tǒng)包。

圖書管理系統(tǒng)exe界面包圖書業(yè)務(wù)包數(shù)據(jù)庫圖7.9圖書管理系統(tǒng)構(gòu)件圖在圖7.9所示圖書管理系統(tǒng)構(gòu)件圖中,圖書業(yè)務(wù)包包含5個(gè)構(gòu)件部分,如圖7.10所示。

人文書刊.java

借閱記錄.java

借閱者信息.java

技術(shù)書刊.java

預(yù)定記錄.java圖7.10圖書業(yè)務(wù)構(gòu)件圖2.系統(tǒng)部署圖部署圖用來描述系統(tǒng)硬件的物理拓?fù)浣Y(jié)構(gòu)以及在此結(jié)構(gòu)上執(zhí)行的軟件。在圖書管理系統(tǒng)物理體系設(shè)計(jì)中,圖書管理系統(tǒng)的各個(gè)部分可以部署在不同的節(jié)點(diǎn)上,通過網(wǎng)絡(luò)相互通信。圖書管理系統(tǒng)是一個(gè)客戶機(jī)/服務(wù)器結(jié)構(gòu)的分布式系統(tǒng),它的數(shù)據(jù)庫放置在圖書館的數(shù)據(jù)庫服務(wù)器上,圖書館服務(wù)器向用戶提供了借書管理服務(wù)和信息管理服務(wù),借閱者和圖書管理員可以通過客戶端借閱、預(yù)定、返還書籍并進(jìn)行各種信息的維護(hù)?;诖耍L制圖書管理系統(tǒng)部署圖如圖7.11所示。客戶端圖書館服務(wù)器數(shù)據(jù)庫服務(wù)器圖7.11圖書管理系統(tǒng)部署圖7.2子系統(tǒng)耦合度與聚合度

1.子系統(tǒng)之間耦合度耦合度描述了兩個(gè)子系統(tǒng)之間依賴關(guān)系的程度。耦合度越低,表明兩個(gè)子系統(tǒng)之間的依賴關(guān)系越松散,它們之間相互獨(dú)立性越強(qiáng),那么當(dāng)其中一個(gè)子系統(tǒng)發(fā)生變化時(shí)對另外一個(gè)子系統(tǒng)產(chǎn)生的影響很小。耦合度越高,表明兩個(gè)子系統(tǒng)之間的依賴關(guān)系越緊密,那么當(dāng)其中一個(gè)子系統(tǒng)發(fā)生變化時(shí)可能對另外一個(gè)子系統(tǒng)產(chǎn)生很大影響。2.子系統(tǒng)內(nèi)部聚合度聚合度描述了子系統(tǒng)內(nèi)部的依賴程度。如果某個(gè)子系統(tǒng)含有多個(gè)彼此相關(guān)的對象,并且它們執(zhí)行類似的任務(wù),它們的相關(guān)性就比較高,那么子系統(tǒng)內(nèi)部聚合度就高。聚合度越高,子系統(tǒng)獨(dú)立性越強(qiáng),反之亦然。要堅(jiān)持低耦合、高聚合的原則,從而保證子系統(tǒng)與功能模塊的獨(dú)立性。通常在聚合度和耦合度之間存在一個(gè)平衡,將系統(tǒng)不斷分解成子系統(tǒng)可以提高系統(tǒng)的聚合度,但是,隨著子系統(tǒng)之間接口數(shù)量的增加,也會(huì)提高耦合度。7.3子系統(tǒng)與功能模塊設(shè)計(jì)在系統(tǒng)設(shè)計(jì)的過程中,系統(tǒng)設(shè)計(jì)人員將系統(tǒng)分解成能由單個(gè)團(tuán)隊(duì)實(shí)現(xiàn)的較小的子系統(tǒng),又稱為功能模塊,這些子系統(tǒng)的設(shè)計(jì)要遵循“低耦合、高聚合、強(qiáng)獨(dú)立”的原則,主要的設(shè)計(jì)活動(dòng)包括服務(wù)與子系統(tǒng)接口設(shè)計(jì)、分層與分區(qū)等。7.3.1子系統(tǒng)分解與功能模塊學(xué)籍管理系統(tǒng)6個(gè)子系統(tǒng),即用戶管理子系統(tǒng)、學(xué)生檔案管理子系統(tǒng)、班級管理子系統(tǒng)、交費(fèi)管理子系統(tǒng)、課程管理子系統(tǒng)和成績管理子系統(tǒng)。交費(fèi)管理子系統(tǒng)可以細(xì)分為如圖7.12所示的包圖。設(shè)置收費(fèi)類型和收費(fèi)標(biāo)準(zhǔn):frmTuitionSet,收取學(xué)費(fèi)、學(xué)費(fèi)類型明細(xì)及查詢、學(xué)生個(gè)人收費(fèi)情況、學(xué)生收費(fèi)明細(xì)、學(xué)生收費(fèi)查詢分別設(shè)計(jì)為frmTuitionCollect,frmTuitionSetBrow,frmTuitionStu,frmTuitionDetail,frmTuitionSetQry。<<MDIForm>>frmMain(from登陸及主控程序包)<<Form>>frmTuitionSet<<Form>>frmTuitionCollect<<Form>>frmTuitionDetail<<Form>>frmTuitionStu<<Form>>frmTuitionSetQry<<Form>>frmTuitionSetBrow交費(fèi)管理包<<DataReport>>DataReportTuitionDetail(from報(bào)表包)學(xué)費(fèi)Info(from系統(tǒng)實(shí)體類包)<<DataReport>>DataReportTuition(from報(bào)表包)圖7.12學(xué)籍管理交費(fèi)管理子系統(tǒng)分解

學(xué)費(fèi)信息實(shí)體類分解

從圖7.12可以看出,學(xué)籍管理交費(fèi)子系統(tǒng)表示為UML包,該子系統(tǒng)的分解包括包的組成和其與主界面的構(gòu)成關(guān)系,子系統(tǒng)虛線箭頭說明子系統(tǒng)與其他子系統(tǒng)或類之間的依賴關(guān)系。其中,學(xué)費(fèi)信息實(shí)體類可以進(jìn)一步劃分為學(xué)費(fèi)類型和交費(fèi)明細(xì)兩部分,相當(dāng)于數(shù)據(jù)庫中的兩個(gè)表,如圖7.13所示。學(xué)費(fèi)Info(from系統(tǒng)實(shí)體類包)學(xué)費(fèi)類型(fromdbo)年級:STRING專業(yè):STRING年制:STRING學(xué)期:STRING學(xué)費(fèi):MONEY交費(fèi)明細(xì)(fromdbo)學(xué)號:STRING學(xué)期:STRING交費(fèi):MONEY日期:DATETIME操作員:STRING圖7.13學(xué)費(fèi)信息實(shí)體類分解7.3.2服務(wù)與子系統(tǒng)接口設(shè)計(jì)服務(wù)指的是一組有著共同目標(biāo)的相關(guān)操作,就是通過為其他子系統(tǒng)提供服務(wù)來確定其特點(diǎn)的,從而形成子系統(tǒng)與子系統(tǒng)之間的接口,稱為子系統(tǒng)接口。子系統(tǒng)接口也稱為應(yīng)用程序接口(ApplicationProgrammingInterface,API),包括操作的名稱、參數(shù)、類型和返回值。子系統(tǒng)提供的服務(wù)在系統(tǒng)設(shè)計(jì)集中進(jìn)行定義,包括列舉操作、參數(shù)和它們的高層行為;子系統(tǒng)接口設(shè)計(jì)在對象集中進(jìn)行定義,包括參數(shù)的類型和每個(gè)操作的返回值,也包括應(yīng)用軟件調(diào)用操作系統(tǒng)的函數(shù)接口。在學(xué)籍管理系統(tǒng)的服務(wù)與子系統(tǒng)接口設(shè)計(jì)中,系統(tǒng)公用模塊就是為所有子系統(tǒng)提供服務(wù)的一個(gè)子系統(tǒng),它主要提供訪問數(shù)據(jù)層的接口,定義公用訪問數(shù)據(jù)庫的連接,定義全局性的變量和方法供各子系統(tǒng)使用,如圖7.14所示。班級管理包(fromUseCaseView)課程管理包(fromUseCaseView)<<Module>>ModuleExecuteSQL()ConnString()ExecuteCheck()成績管理包(fromUseCaseView)學(xué)生檔案管理包(fromUseCaseView)交費(fèi)管理包(fromUseCaseView)用戶管理包(fromUseCaseView)圖7.14學(xué)籍管理系統(tǒng)的服務(wù)與子系統(tǒng)接口設(shè)計(jì)

7.3.3子系統(tǒng)分解與確定

1.子系統(tǒng)分解子系統(tǒng)分解指得是利用分層與分區(qū)的方法,將系統(tǒng)循環(huán)地分解成可管理的較小的、簡單的部分,直到能讓一個(gè)人或者一個(gè)小組處理為止。系統(tǒng)地使用這個(gè)方法就可以得到結(jié)構(gòu)化的分解,其中每個(gè)子系統(tǒng)或者每一層可以根據(jù)低層子系統(tǒng)提供的服務(wù)為其高層服務(wù),每一層還可以訪問其下一層。在面向?qū)ο蟮南到y(tǒng)設(shè)計(jì)過程中,系統(tǒng)的分解可以分為3個(gè)層次:(1)頂層的登錄管理和主控界面;(2)中間層為各業(yè)務(wù)處理子系統(tǒng);(3)底層為實(shí)體類層和報(bào)表層。就學(xué)籍管理系統(tǒng)而言,其系統(tǒng)分解分為3個(gè)層次,如圖7.15所示,頂層是登錄及主控程序包;中間層是6個(gè)業(yè)務(wù)處理包,即用戶管理包、學(xué)生檔案管理包、班級管理包、交費(fèi)管理包、課程管理包和成績管理包;底層是系統(tǒng)實(shí)體類包和報(bào)表包。用戶管理包學(xué)生檔案管理包班級管理包交費(fèi)管理包課程管理包登陸及主控程序包系統(tǒng)實(shí)體類包報(bào)表包成績管理包頂層中間層底層圖7.15學(xué)籍管理系統(tǒng)的分層設(shè)計(jì)2.子系統(tǒng)確定

最初的子系統(tǒng)分解來自功能性需求,隨著這種需求的不斷變化,子系統(tǒng)的分解也隨之不斷修改和完善:若干簡單的子系統(tǒng)合并到一個(gè)子系統(tǒng)中,復(fù)雜的子系統(tǒng)分解成多個(gè)部分,為了實(shí)現(xiàn)新的功能而增加子系統(tǒng)等。確定子系統(tǒng)的方法就是將功能相關(guān)的對象放在一起,作為獨(dú)立的功能或共享的模塊,被多個(gè)子系統(tǒng)所共享;或者把復(fù)雜的子系統(tǒng)分解為較為簡單的子系統(tǒng)。確定子系統(tǒng)的方法可歸納為以下幾個(gè)方面:(1)將一個(gè)用例中確定的對象分配到同一個(gè)子系統(tǒng)中;(2)為兩個(gè)以上子系統(tǒng)傳遞數(shù)據(jù)或提供服務(wù)的對象創(chuàng)建一個(gè)專用的子系統(tǒng);(3)將子系統(tǒng)與子系統(tǒng)之間的關(guān)聯(lián)關(guān)系降到最小;(4)同一個(gè)子系統(tǒng)內(nèi)的所有對象必須功能相關(guān),業(yè)務(wù)處理配合緊密。7.4系統(tǒng)數(shù)據(jù)管理設(shè)計(jì)

7.4.1數(shù)據(jù)模型數(shù)據(jù)模型是嚴(yán)格定義的一組概念的集合,這些概念精確地描述了系統(tǒng)的靜態(tài)、動(dòng)態(tài)特性和完整性約束條件。1.?dāng)?shù)據(jù)模型的組成要素

數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束三部分組成,這三部分稱為數(shù)據(jù)模型的三要素。1)數(shù)據(jù)結(jié)構(gòu)是對系統(tǒng)靜態(tài)特性的描述,它分為層狀結(jié)構(gòu)、網(wǎng)狀結(jié)構(gòu)和關(guān)系結(jié)構(gòu)。數(shù)據(jù)結(jié)構(gòu)是刻畫數(shù)據(jù)模型性質(zhì)最重要的方面,因此數(shù)據(jù)庫系統(tǒng)中通常按照數(shù)據(jù)結(jié)構(gòu)類型來命名數(shù)據(jù)模型,如層次模型、網(wǎng)狀模型和關(guān)系模型。2)數(shù)據(jù)操作是對系統(tǒng)動(dòng)態(tài)特性的描述,它主要包括對數(shù)據(jù)庫的兩大類操作:即檢索和更新。檢索是指對數(shù)據(jù)的篩選、統(tǒng)計(jì)和讀取等操作;更新是指對數(shù)據(jù)的插入、刪除和修改操作。3)數(shù)據(jù)的完整性約束條件是一組完整性規(guī)則的集合。完整性規(guī)則是給定數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則,這些規(guī)則的作用是保證數(shù)據(jù)的正確、有效和相容性。比如,本科生年齡不大于30歲,研究生年齡不大于38歲,學(xué)生累計(jì)成績不得有三門以上不及格,屬于數(shù)據(jù)的完整性約束條件。2.常用的數(shù)據(jù)模型

數(shù)據(jù)庫領(lǐng)域最常用的數(shù)據(jù)模型有四種:層次模型(HierarchicalModel)網(wǎng)狀模型(NetworkModel)關(guān)系模型(RelationalModel)面向?qū)ο竽P停∣bjectOrientedModel)7.4.2關(guān)系數(shù)據(jù)模型1.關(guān)系表在用戶看來,關(guān)系模型中數(shù)據(jù)結(jié)構(gòu)就是一張二維表,如表7.1和表7.2所示。學(xué)號姓名性別年齡系號年級980104王小明女190198980206黃大鵬男200298980508張文斌女180598………………系號系名辦公室主任電話01計(jì)算機(jī)教209張立558502102物理教501李可2334102……………05地質(zhì)工程教301陳鵬5585206表7.1學(xué)生登記表

表7.2系信息表

2.關(guān)系數(shù)據(jù)模型中的一些術(shù)語1)關(guān)系(Relation):一個(gè)關(guān)系對應(yīng)通常所說的一張二維表;2)元組(Tuple):表中的一行即為一個(gè)元組;3)屬性(Attribute):表中的一列即為一個(gè)屬性,給每一個(gè)屬性起一個(gè)名稱即屬性名。表7.1中有六列,對應(yīng)六個(gè)屬性(學(xué)號,姓名,性別,年齡,系號和年級);4)域(Domain):屬性的取值范圍,所以又稱“值域”;5)分量:元組中的一個(gè)屬性值;6)關(guān)系模式:對關(guān)系的描述,一般表示為:關(guān)系名(屬性1,屬性2,…,屬性n);7)關(guān)鍵字或碼(Key):表中用來唯一確定(標(biāo)識)一個(gè)元組的某個(gè)屬性或?qū)傩越M合。如表中學(xué)號;關(guān)鍵字必須唯一,但它的唯一性不是只對關(guān)系的當(dāng)前元組構(gòu)成來確定的。還要考慮元組構(gòu)成的將來可能性。3.關(guān)系數(shù)據(jù)模型的操縱

1)操作:查詢、插入、刪除、修改。前一種為檢索,后三種為更新,2)關(guān)系數(shù)據(jù)操作的理論標(biāo)準(zhǔn)為關(guān)系代數(shù)或關(guān)系演算。其中,關(guān)系演算又分為元組關(guān)系演算和域關(guān)系演算兩種。關(guān)系代數(shù)、元組關(guān)系演算和域關(guān)系演算三種抽象語言在表達(dá)能力上是完全等價(jià)的。3)介于關(guān)系代數(shù)和關(guān)系演算之間的實(shí)用的代表性的關(guān)系操縱語言是SQL(StructuredQueryLanguage)。4.數(shù)據(jù)的完整性約束條件包括:實(shí)體完整性、參照完整性、用戶定義的完整性。1)實(shí)體完整性(EntityIntegrity)。若屬性A是基本關(guān)系R的一個(gè)主屬性,則任何元組在A上的分量都不能為空。實(shí)體完整性規(guī)定主碼的任何屬性都不能為空。這是因?yàn)椋?)參照完整性(ReferentialIntegrity)。參照完整性是對關(guān)系間引用數(shù)據(jù)的一種限制。若屬性組A是基本關(guān)系R1的外碼,它與基本關(guān)系R2主碼K相對應(yīng),則R1中每個(gè)元組在A上的值必須為以下兩種情況之一.3)用戶定義的完整性。實(shí)體完整性和參照完整性是關(guān)系模型必須滿足的兩個(gè)完整性約束條件,任何關(guān)系系統(tǒng)都必須自動(dòng)維護(hù)之。5.關(guān)系數(shù)據(jù)模型的規(guī)范化

符合某一種級別的關(guān)系模式的集合稱為范式。關(guān)系數(shù)據(jù)模型規(guī)范化的基本思想就是:逐步消除不合理的數(shù)據(jù)依賴,使范式中的各個(gè)關(guān)系模式達(dá)到某種程度的“分離”,這種規(guī)范化遵循如下三種范式:(1)第一范式:每個(gè)分量必須是不可分的數(shù)據(jù)項(xiàng);(2)第二范式:每個(gè)非主屬性完全依賴于主屬性;(3)第三范式:任何一個(gè)非關(guān)鍵字?jǐn)?shù)據(jù)項(xiàng)都不傳遞依賴于它的關(guān)鍵字。其中,第一范式到第二范式消除了非主屬性對候選鍵的局部依賴;第二范式到第三范式消除了非主屬性對候選鍵的傳遞依賴。7.4.3從UML映射到關(guān)系數(shù)據(jù)模型1.映射原則(1)基礎(chǔ)類可以采用一類一表制或一類多表制的映射原則;(2)當(dāng)類之間有一對多關(guān)系時(shí),一個(gè)表也可以對應(yīng)多個(gè)類;(3)存在繼承關(guān)系的類可以映射為一個(gè)表,用屬性來區(qū)別不同的子類,也可以是不同的子類分別映射一個(gè)表;(4)類屬性映射為表字段,類之間的關(guān)聯(lián)也用表字段來表示;(5)按關(guān)系數(shù)據(jù)模型規(guī)范化原則來調(diào)整表結(jié)構(gòu)。2.映射實(shí)體類實(shí)體類到關(guān)系表的映射必須符合列是不可再分的。不過,在UML分析模型中的類屬性(對立于類關(guān)系)已經(jīng)是符合這個(gè)條件,這一點(diǎn)簡化了這個(gè)映射。對于每個(gè)實(shí)體類來說,可以映射成一個(gè)表,類中的屬性和表中的屬性相同。在圖書管理系統(tǒng)中,借閱者實(shí)體類映射實(shí)例如圖7.16所示。Loan(userID,bookID,borrowdata,returndata,state)圖7.16圖書管理系統(tǒng)借閱者實(shí)體類映射3.映射關(guān)聯(lián)

1)一對多關(guān)系。在一對多關(guān)聯(lián)中,一個(gè)對象可以與多個(gè)對象相鏈接。一種方法是將關(guān)系的“1”端對象的關(guān)鍵字附加到“多”端的一個(gè)列(或多列)。另一種方法是用一個(gè)獨(dú)立表來存儲(chǔ)一對多關(guān)系,在圖書管理系統(tǒng)中,一對多的映射實(shí)例如圖7.17所示。Item(bookID,bookno,state…)圖7.17圖書管理系統(tǒng)中一對多的映射實(shí)例2)多對多關(guān)系。對于多對多關(guān)系,需要增加一個(gè)表,這個(gè)表由具有鏈接關(guān)系的表的關(guān)鍵字組成,在圖書管理系統(tǒng)中,多對多的映射實(shí)例如圖7.18所示。Reservation(userID,bookno,date…)圖7.18圖書管理系統(tǒng)中多對多的映射實(shí)例3)一對一關(guān)系。零或一對一關(guān)聯(lián),把“l(fā)”端的主鍵添加到“0或l”表。其他一對一關(guān)聯(lián),可以把一個(gè)對象的主鍵添加到另一個(gè)對象中,在圖書管理系統(tǒng)中,多對多的映射實(shí)例如圖7.19所示。Fine(userID,bookID,date,…)圖7.19圖書管理系統(tǒng)中一對一的映射實(shí)例4.映射聚集和組合對于一對一的組合,可以將子類與超類建立成一個(gè)表;對于一對多的情況,無論聚集還是組合,對子類必須建立一個(gè)獨(dú)立的表,將父類主鍵屬性加入子類的表中。例如,Office類和OfficeMember類之間存在著聚集關(guān)系,將該關(guān)系映射到關(guān)系數(shù)據(jù)庫中,這種聚集的映射實(shí)例如圖7.20所示。Office(officeID,…)OfficeMember(OfficeMemberID,officeID,…)圖7.20聚集的映射實(shí)例5.映射泛化

泛化的映射策略有三種:(1)父類與子類可各自映射成表,將父類的主鍵屬性加入子類中,建立外鍵關(guān)聯(lián)。在關(guān)系數(shù)據(jù)模型中用外鍵參照關(guān)系來表示繼承關(guān)系。(2)將子類表的屬性添加到父類表的屬性中,而不建立子類表。通過這種方式,可以使關(guān)系數(shù)據(jù)模型支持繼承關(guān)系和多態(tài)。(3)不建立父類表,而只建立子類表。將子類繼承的父類的屬性加入子類中。在圖書館管理系統(tǒng)中,對于Book類來說,選擇第二種方案,在Book表中添加書的類別屬性,泛化的映射實(shí)例如圖7.21所示。Book(bookID,…,t

溫馨提示

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

評論

0/150

提交評論