




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)庫(kù)及其接口設(shè)計(jì)第一頁,共一百零五頁,2022年,8月28日數(shù)據(jù)管理系統(tǒng),包括文件系統(tǒng)和數(shù)據(jù)庫(kù)管理系統(tǒng)兩大類。采用關(guān)系模型的數(shù)據(jù)庫(kù)稱做關(guān)系數(shù)據(jù)庫(kù)(relational
database)。與層次和網(wǎng)狀的DBMS相比,RDBMS所采用的數(shù)據(jù)模型以二維表的形式而不是人為地設(shè)置指針(或?qū)Ш芥湥﹣韺?shí)現(xiàn)實(shí)體數(shù)據(jù)之間的聯(lián)系,從而使用戶可以直接從數(shù)據(jù)庫(kù)中獲取表示事物之間聯(lián)系的信息,而不必借助軟件專家的幫助。第二頁,共一百零五頁,2022年,8月28日15.1
數(shù)據(jù)管理系統(tǒng)及其選擇有效地實(shí)現(xiàn)數(shù)據(jù)在永久性存儲(chǔ)空間的存儲(chǔ)與管理需要特定的軟件系統(tǒng)支持。這些實(shí)現(xiàn)數(shù)據(jù)存儲(chǔ)、檢索、管理、維護(hù)的系統(tǒng)稱做數(shù)據(jù)管理系統(tǒng),包括文件系統(tǒng)和數(shù)據(jù)庫(kù)管理系統(tǒng)兩大類。第三頁,共一百零五頁,2022年,8月28日文件系統(tǒng)文件系統(tǒng)(file
system)通常被作為操作系統(tǒng)的一部分。它采用統(tǒng)一、標(biāo)準(zhǔn)的方法對(duì)輔助存儲(chǔ)器上的用戶文件和系統(tǒng)文件的數(shù)據(jù)進(jìn)行管理,提供存儲(chǔ)、檢索、更新、共享和保護(hù)等功能。它有如下的局限性:第四頁,共一百零五頁,2022年,8月28日(1)各個(gè)文件中的數(shù)據(jù)是相互分離和獨(dú)立的,不易直接體現(xiàn)數(shù)據(jù)之間的關(guān)系。容易產(chǎn)生數(shù)據(jù)冗余,并因此給數(shù)據(jù)完整性的維護(hù)帶來很大困難。應(yīng)用程序依賴于文件結(jié)構(gòu),當(dāng)文件結(jié)構(gòu)發(fā)生變化時(shí),應(yīng)用程序也必須變化.第五頁,共一百零五頁,2022年,8月28日(4)不同的編程語言(或其他軟件產(chǎn)品)產(chǎn)生的文件格式互異,互不兼容。(5)難以按用戶視圖表示數(shù)據(jù)。第六頁,共一百零五頁,2022年,8月28日數(shù)據(jù)庫(kù)管理系統(tǒng)數(shù)據(jù)庫(kù)的建立、使用和維護(hù)必須有DBMS的支持,DBMS提供的功能包括:模式翻譯應(yīng)用程序的編譯第七頁,共一百零五頁,2022年,8月28日(3)交互式查詢數(shù)據(jù)的組織與存取事物運(yùn)行管理數(shù)據(jù)庫(kù)的維護(hù)第八頁,共一百零五頁,2022年,8月28日數(shù)據(jù)庫(kù)管理系統(tǒng)克服了文件系統(tǒng)的許多局限性,它使數(shù)據(jù)庫(kù)中的數(shù)據(jù)具有如下特點(diǎn):(1)數(shù)據(jù)是集成的,數(shù)據(jù)庫(kù)不但保存各種數(shù)據(jù),也保存它們之間的關(guān)系,并由DBMS提供方便、
高效的檢索功能。第九頁,共一百零五頁,2022年,8月28日(2)數(shù)據(jù)冗余度較小,并由DBMS保證數(shù)據(jù)的完整性。程序與數(shù)據(jù)相互獨(dú)立。易于按用戶視圖表示數(shù)據(jù)。第十頁,共一百零五頁,2022年,8月28日關(guān)系數(shù)據(jù)庫(kù)和關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(1)采用關(guān)系模型的數(shù)據(jù)庫(kù)稱做關(guān)系數(shù)據(jù)庫(kù)。關(guān)系模型用二維表來表示各類數(shù)據(jù),二維表中有行,有列。第十一頁,共一百零五頁,2022年,8月28日(2)基于關(guān)系模型的數(shù)據(jù)庫(kù)管理系統(tǒng)叫做關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。RDBMS所采用的數(shù)據(jù)模型以二維表的形式而不是人為地設(shè)置指針(或曰導(dǎo)航鏈)來實(shí)現(xiàn)實(shí)體數(shù)據(jù)之間的聯(lián)系,從而使用戶可以直接從數(shù)據(jù)庫(kù)中獲取表示事物之間聯(lián)系的信息,而不必借助軟件專家的幫助。第十二頁,共一百零五頁,2022年,8月28日面向?qū)ο髷?shù)據(jù)庫(kù)和面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)(1)采用面向?qū)ο髷?shù)據(jù)模型的數(shù)據(jù)庫(kù)稱做面向?qū)ο髷?shù)據(jù)庫(kù)(OODB);相應(yīng)的數(shù)據(jù)庫(kù)管理系統(tǒng)稱做面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)(OODBMS),有時(shí)稱做對(duì)象數(shù)據(jù)庫(kù)管理系統(tǒng)(ODBMS)。第十三頁,共一百零五頁,2022年,8月28日(2)面向?qū)ο髷?shù)據(jù)管理系統(tǒng)應(yīng)具備兩方面的特征:一方面它是面向?qū)ο蟮?,另一方面它又具有?shù)據(jù)庫(kù)管理系統(tǒng)應(yīng)有的特點(diǎn)和功能。第十四頁,共一百零五頁,2022年,8月28日數(shù)據(jù)管理系統(tǒng)的選擇對(duì)許多項(xiàng)目而言,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)和文件系統(tǒng)都可能成為最合適的選擇。決定采用何種數(shù)據(jù)管理系統(tǒng),要綜合考慮技術(shù)和非技術(shù)兩方面的因素:第十五頁,共一百零五頁,2022年,8月28日1)非技術(shù)因素?cái)?shù)據(jù)管理系統(tǒng)的成熟程度和先進(jìn)性。價(jià)格。開發(fā)隊(duì)伍的技術(shù)背景。與其他系統(tǒng)的關(guān)系。第十六頁,共一百零五頁,2022年,8月28日2)技術(shù)因素文件系統(tǒng)。關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)。第十七頁,共一百零五頁,2022年,8月28日15.2
數(shù)據(jù)庫(kù)系統(tǒng)數(shù)據(jù)庫(kù)管理在應(yīng)用上扮演了集中的角色。它使大量持續(xù)性集合的數(shù)據(jù)被組織和維持,并且由以計(jì)算機(jī)為基礎(chǔ)的數(shù)據(jù)系統(tǒng)來支持,數(shù)據(jù)庫(kù)應(yīng)用在許多不同的領(lǐng)域,已經(jīng)被開發(fā)。第十八頁,共一百零五頁,2022年,8月28日數(shù)據(jù)庫(kù)系統(tǒng)包括軟件、數(shù)據(jù)庫(kù)管理系統(tǒng)和一個(gè)或多個(gè)數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)管理系統(tǒng)是在計(jì)算機(jī)主存儲(chǔ)器中執(zhí)行,并且由個(gè)別的操作所控制的程序系統(tǒng)。數(shù)據(jù)庫(kù)是一群數(shù)據(jù)的集合,它是有關(guān)真實(shí)世界應(yīng)用的代表信息。第十九頁,共一百零五頁,2022年,8月28日數(shù)據(jù)庫(kù)與數(shù)據(jù)庫(kù)管理系統(tǒng)之間的區(qū)別是兩種對(duì)數(shù)據(jù)庫(kù)系統(tǒng)的觀點(diǎn)與方式:由用戶的觀點(diǎn)由開發(fā)者的觀點(diǎn)第二十頁,共一百零五頁,2022年,8月28日對(duì)概觀數(shù)據(jù)庫(kù)的一般性描述,有四個(gè)主要的領(lǐng)域:數(shù)據(jù)模型數(shù)據(jù)庫(kù)語言交易與并行控制數(shù)據(jù)結(jié)構(gòu)第二十一頁,共一百零五頁,2022年,8月28日以下針對(duì)各數(shù)據(jù)庫(kù)結(jié)構(gòu)簡(jiǎn)要地說明其特點(diǎn):(1)文件管理系統(tǒng)。一般而言,文件管理系統(tǒng)的程序結(jié)構(gòu)在處理導(dǎo)向的模型上,并依分類順序或是以邏輯上的關(guān)鍵值來作索引。文件管理系統(tǒng)的缺點(diǎn)主要包括有數(shù)據(jù)重復(fù)、矛盾、缺乏彈性、不易分享、沒有標(biāo)準(zhǔn)、程序產(chǎn)量低,以及需要大量的程序維護(hù)工作等。第二十二頁,共一百零五頁,2022年,8月28日(2)層次式數(shù)據(jù)庫(kù)管理系統(tǒng)。由于“單一雙親法則”的特性,使得該數(shù)據(jù)模型會(huì)產(chǎn)生重復(fù)且過量的數(shù)據(jù)和結(jié)構(gòu)。因此,浪費(fèi)保存空間是其最大的缺點(diǎn)。但在薪資系統(tǒng)上仍適合使用。第二十三頁,共一百零五頁,2022年,8月28日(3)網(wǎng)絡(luò)式數(shù)據(jù)庫(kù)管理系統(tǒng)。雖然網(wǎng)狀式數(shù)據(jù)庫(kù)結(jié)構(gòu)可將相鄰或共同的要素加以結(jié)合,以節(jié)省
保存空間,但因其采用“環(huán)式指示碼結(jié)構(gòu)”來
表示復(fù)雜現(xiàn)象的拓?fù)浣Y(jié)構(gòu),所以當(dāng)有數(shù)據(jù)需編
輯或更新時(shí),則必須改變?cè)邢噙B的數(shù)據(jù)結(jié)構(gòu),此為其最大缺點(diǎn)。第二十四頁,共一百零五頁,2022年,8月28日(4)關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。關(guān)系型數(shù)據(jù)模型在某方面有其使用限制,這是為了使數(shù)據(jù)模型簡(jiǎn)
單化所加的限制。雖然如此,但與其前身比較,該數(shù)據(jù)模型則具備了一些非常重要的特點(diǎn)。例
如,數(shù)據(jù)獨(dú)立、聲明式處理、去除重復(fù)、簡(jiǎn)單
及以表單作為表達(dá)形式,以上優(yōu)點(diǎn)不僅使程序
開發(fā)更為快速,也使得程序的維護(hù)更加容易。第二十五頁,共一百零五頁,2022年,8月28日(5)面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)。面向?qū)ο髷?shù)據(jù)庫(kù)將數(shù)據(jù)與操作方法集合成為對(duì)象的概念,并且也支持復(fù)合對(duì)象及一般化關(guān)系的直接表示,這是傳統(tǒng)數(shù)據(jù)庫(kù)所不能達(dá)到的。面向?qū)ο髷?shù)據(jù)庫(kù)在傳統(tǒng)數(shù)據(jù)庫(kù)中加入了抽象,擴(kuò)充類型定義、用戶定義操作與數(shù)據(jù)類型、繼承機(jī)制、數(shù)據(jù)定義語言與數(shù)據(jù)操作語言的集成,以及支持版本與模型演變等概念與功能,消除了傳統(tǒng)數(shù)據(jù)對(duì)數(shù)據(jù)定義的一致性限制。第二十六頁,共一百零五頁,2022年,8月28日15.2.1
面向?qū)ο蠹夹g(shù)面向?qū)ο蠹夹g(shù)的特點(diǎn):面向?qū)ο蟮乃伎挤绞奖冉Y(jié)構(gòu)化分析及設(shè)計(jì)的技術(shù),對(duì)人類更自然。系統(tǒng)通常由已存在的對(duì)象所構(gòu)成。對(duì)象的復(fù)雜度可以一直成長(zhǎng),因?yàn)閷?duì)象是由別的對(duì)象所組成,以此類推。第二十七頁,共一百零五頁,2022年,8月28日(4)計(jì)算機(jī)輔助軟件工程(CASE)保存庫(kù)應(yīng)該包含有持續(xù)成長(zhǎng)的對(duì)象類別鏈接庫(kù),某些是購(gòu)買的,某些是建立的。用面向?qū)ο蠹夹g(shù)來生成功能良好的系統(tǒng)比較容易,原因是由于類又包含著類。面向?qū)ο蠹夹g(shù)與CASE工具很自然地結(jié)合。第二十八頁,共一百零五頁,2022年,8月28日面向?qū)ο蠓治雠c設(shè)計(jì)。面向?qū)ο蠓治鍪抢孟到y(tǒng)結(jié)構(gòu)及操作概念,以對(duì)象來反映系統(tǒng)連續(xù)的處理過程,其主要特點(diǎn)歸納如下:面向?qū)ο竽P团c真實(shí)世界的差距很小。以對(duì)象為基礎(chǔ),可做局部的修改。有助于理解問題空間。第二十九頁,共一百零五頁,2022年,8月28日(4)改進(jìn)分析人員與用戶間的交互方式。增加分析結(jié)果內(nèi)部的一致性。共同性質(zhì)明顯表示。分析結(jié)果可重復(fù)使用。第三十頁,共一百零五頁,2022年,8月28日面向?qū)ο笤O(shè)計(jì)是將分析模型所得轉(zhuǎn)換成解答模型的過程,其主要特性有:模塊化信息隱藏弱耦合力第三十一頁,共一百零五頁,2022年,8月28日(4)強(qiáng)內(nèi)聚力抽象可擴(kuò)充性整合性第三十二頁,共一百零五頁,2022年,8月28日面向?qū)ο蠓治雠c設(shè)計(jì)的主要目標(biāo)如下;確 企業(yè)運(yùn)作過程中的各項(xiàng)重要角色,然后確定各角色的責(zé)任。定義軟件對(duì)象來表達(dá)各項(xiàng)角色。進(jìn)行面向?qū)ο蠓纸?,即將?duì)象分類或分解更小的對(duì)象。第三十三頁,共一百零五頁,2022年,8月28日15.2.2
面向?qū)ο髷?shù)據(jù)庫(kù)的應(yīng)用面向?qū)ο蠹夹g(shù)被視為能夠帶來更可靠和較高品質(zhì)的軟件,因?yàn)樗軌蚪柚褂枚x好的接口與隱藏實(shí)現(xiàn)細(xì)節(jié),建立更模塊化的軟件。第三十四頁,共一百零五頁,2022年,8月28日對(duì)象數(shù)據(jù)庫(kù)技術(shù)在其他工業(yè)部門也變得很受歡迎,對(duì)象數(shù)據(jù)庫(kù)技術(shù)已明顯地移向非工業(yè)方面的應(yīng)用。第三十五頁,共一百零五頁,2022年,8月28日由于面向?qū)ο蠹夹g(shù)在觀察、分析問題時(shí)更接近人類的思維方式,所以模型中的對(duì)象與真實(shí)世界的實(shí)體或概念有自然的對(duì)應(yīng),并可隨環(huán)境的變動(dòng),修正系統(tǒng)中的對(duì)象屬性或方法,以適應(yīng)復(fù)雜多變的產(chǎn)品開發(fā)類型。第三十六頁,共一百零五頁,2022年,8月28日15.2.3
應(yīng)用程序設(shè)計(jì)程序越來越強(qiáng)調(diào)流程的整合是迫使采用面向?qū)ο髷?shù)據(jù)庫(kù)的原由。面向?qū)ο髷?shù)據(jù)庫(kù)的應(yīng)用領(lǐng)域非常廣泛,而它的特質(zhì)就是具有非常復(fù)雜而有效的信息,面向?qū)ο竽芤愿匀患案琢私獾姆椒▉沓尸F(xiàn)問題的解決。第三十七頁,共一百零五頁,2022年,8月28日面向?qū)ο髷?shù)據(jù)庫(kù)引入面向?qū)ο蟮男赂拍钣跀?shù)據(jù)庫(kù)中,同樣使用面向?qū)ο蟮姆椒ǚ抡鎮(zhèn)鹘y(tǒng)數(shù)據(jù)庫(kù)的功能。因此,其優(yōu)點(diǎn)為比傳統(tǒng)數(shù)據(jù)庫(kù)多了
“面向?qū)ο蟆钡墓δ?。面向?qū)ο蟮墓δ苁窃趯?duì)象與對(duì)象之間擁有多樣化的關(guān)系。第三十八頁,共一百零五頁,2022年,8月28日通常面向?qū)ο髷?shù)據(jù)庫(kù)下列的優(yōu)點(diǎn)勝過關(guān)系型數(shù)據(jù)庫(kù):一個(gè)更真實(shí),更有力的數(shù)據(jù)模型。處理更復(fù)雜的對(duì)象。在實(shí)體之間的繼承關(guān)聯(lián)。第三十九頁,共一百零五頁,2022年,8月28日(4)在模式層之內(nèi)結(jié)合對(duì)象的行為與對(duì)象的定義。在集合繼承之間的內(nèi)隱連接以對(duì)象識(shí)別碼為基礎(chǔ)。版本的機(jī)制。第四十頁,共一百零五頁,2022年,8月28日(7)較好的交易與并行管理。表達(dá)更佳的查詢語言。對(duì)合作的工作有較好的支持。第四十一頁,共一百零五頁,2022年,8月28日15.2.4
面向?qū)ο髷?shù)據(jù)庫(kù)的最佳化面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)將保證大部分的最佳化責(zé)任,允許用戶規(guī)范高層以外的陳述,指引什么樣的最佳化需被執(zhí)行。面向?qū)ο髷?shù)據(jù)庫(kù)的演進(jìn),如圖15-1所示。第四十二頁,共一百零五頁,2022年,8月28日?qǐng)D15-1第四十三頁,共一百零五頁,2022年,8月28日15.3
技術(shù)整合在整合面向?qū)ο蠛蛿?shù)據(jù)庫(kù)的技術(shù)時(shí),首先要考慮的問題是:對(duì)象在什么時(shí)候該被保存起來,未來將如何取用這些對(duì)象。第四十四頁,共一百零五頁,2022年,8月28日解決了保存對(duì)象的問題之后,接下來要處理的是對(duì)象共享時(shí)所產(chǎn)生的管理問題。在一般的數(shù)據(jù)文件中,并無法做到對(duì)象保密及安全性的控制,數(shù)據(jù)文件中的對(duì)象可隨意讓人使用。第四十五頁,共一百零五頁,2022年,8月28日通過數(shù)據(jù)庫(kù)管理系統(tǒng)的使用,程序設(shè)計(jì)者可以將應(yīng)用程序產(chǎn)生的數(shù)據(jù)放到數(shù)據(jù)庫(kù)里,而不需要操心如何將這些數(shù)據(jù)存放在存儲(chǔ)器中。當(dāng)需要任何數(shù)據(jù)時(shí),只要跟數(shù)據(jù)庫(kù)系統(tǒng)說明,系統(tǒng)便能快速地把你所需要的數(shù)據(jù)取出來。第四十六頁,共一百零五頁,2022年,8月28日面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng),最大的特點(diǎn)之一就
是:能直接記錄復(fù)雜的數(shù)據(jù)結(jié)構(gòu),而不需將之
拆成一個(gè)個(gè)的片段。使用面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng),可以讓應(yīng)用程序直接、緊密地與數(shù)據(jù)庫(kù)結(jié)合,
使得應(yīng)用程序無需花太多額外的力氣在數(shù)據(jù)庫(kù)
系統(tǒng)的溝通及數(shù)據(jù)轉(zhuǎn)換的工作上。第四十七頁,共一百零五頁,2022年,8月28日基于以上的因素,一個(gè)要求具備下列條件的數(shù)據(jù)庫(kù)便應(yīng)運(yùn)而生:能提供豐富的數(shù)據(jù)類型。能直接處理復(fù)雜對(duì)象而沒有數(shù)據(jù)格式轉(zhuǎn)換的問題。能提供與傳統(tǒng)數(shù)據(jù)庫(kù)相同的管理及服務(wù)。能兼顧系統(tǒng)的彈性。第四十八頁,共一百零五頁,2022年,8月28日15.4
數(shù)據(jù)接口數(shù)據(jù)接口部分是OOD模型中負(fù)責(zé)與具體的數(shù)據(jù)管理系統(tǒng)銜接的外圍組成部分,它為系統(tǒng)中需要長(zhǎng)久存儲(chǔ)的對(duì)象提供了在選定的數(shù)據(jù)管理系統(tǒng)中進(jìn)行數(shù)據(jù)存儲(chǔ)與恢復(fù)的功能。第四十九頁,共一百零五頁,2022年,8月28日OOD模型中的數(shù)據(jù)接口部分就是這樣一個(gè)組成部分:它負(fù)責(zé)將應(yīng)用系統(tǒng)中的對(duì)象在選定的數(shù)據(jù)管理系統(tǒng)中進(jìn)行存儲(chǔ),并將存儲(chǔ)結(jié)果恢復(fù)到應(yīng)用系統(tǒng)。它所要解決的問題,可以通過以下的討論而明確范圍。第五十頁,共一百零五頁,2022年,8月28日對(duì)象在內(nèi)存空間的存儲(chǔ)是由編程語言自動(dòng)解決的,不需要設(shè)計(jì)者做什么事。只需考慮對(duì)象屬性值的存儲(chǔ)。并非所有的對(duì)象都需要長(zhǎng)期保存。如果使用的面向?qū)ο缶幊陶Z言能夠支持永久對(duì)象的表示和存儲(chǔ)管理,不需要設(shè)計(jì)者做更多的工作。第五十一頁,共一百零五頁,2022年,8月28日數(shù)據(jù)接口部分的設(shè)計(jì)所瞄準(zhǔn)的問題可以歸結(jié)為:在選用的編程語言和數(shù)據(jù)管理系統(tǒng)不能直接支
持對(duì)象永久存儲(chǔ)的情況下,通過一個(gè)專門設(shè)計(jì)
的模型組成部分,實(shí)現(xiàn)應(yīng)用系統(tǒng)與數(shù)據(jù)管理系
統(tǒng)的接口,以解決應(yīng)用系統(tǒng)中需要長(zhǎng)期保存的
對(duì)象的屬性值在外存空間的保存問題。第五十二頁,共一百零五頁,2022年,8月28日15.5
對(duì)象存儲(chǔ)方案和數(shù)據(jù)接口的設(shè)計(jì)策略本節(jié)針對(duì)文件系統(tǒng)、RDBMS和OODBMS三種不同的數(shù)據(jù)管理系統(tǒng),分別討論相應(yīng)的對(duì)象存儲(chǔ)方案和數(shù)據(jù)接口部分的設(shè)計(jì)策略。第五十三頁,共一百零五頁,2022年,8月28日15.5.1
針對(duì)文件系統(tǒng)的設(shè)計(jì)對(duì)象在內(nèi)存空間和文件空間的映像。由于應(yīng)用系統(tǒng)的具體要求和實(shí)現(xiàn)策略不同,對(duì)象實(shí)例在內(nèi)存空間和文件空間的存儲(chǔ)映像也有不同的映射方式:第五十四頁,共一百零五頁,2022年,8月28日(1)每個(gè)需要永久存儲(chǔ)的對(duì)象,都在內(nèi)存空間建立一個(gè)對(duì)象實(shí)例,同時(shí)又在文件中保存一個(gè)記錄。(2)一個(gè)類的每個(gè)對(duì)象都在文件中對(duì)應(yīng)著一個(gè)記錄,但是在內(nèi)存空間卻只根據(jù)算法的需要?jiǎng)?chuàng)建一個(gè)或少量幾個(gè)對(duì)象實(shí)例。第五十五頁,共一百零五頁,2022年,8月28日對(duì)象存放策略。用文件系統(tǒng)存放對(duì)象的基本策略是:把由每個(gè)類直接定義,并需要永久存儲(chǔ)的全部對(duì)象實(shí)例,存放在一個(gè)文件中;其中每個(gè)對(duì)象實(shí)例的全部屬性作為一個(gè)存儲(chǔ)單元,占用該文件的一個(gè)記錄。第五十六頁,共一百零五頁,2022年,8月28日為了在文件中高效地存儲(chǔ)和檢索數(shù)據(jù),一個(gè)重要的問題是努力在對(duì)象實(shí)例和文件記錄之間建立一種有規(guī)律的映射關(guān)系。在以下情況下,這種努力將取得明顯的效果:第五十七頁,共一百零五頁,2022年,8月28日(1)對(duì)象名稱呈線性規(guī)律的情況對(duì)象關(guān)鍵字呈線性規(guī)律的情況對(duì)象名稱或關(guān)鍵字可以比較和排序的情況第五十八頁,共一百零五頁,2022年,8月28日一個(gè)類使用一個(gè)文件,一個(gè)對(duì)象對(duì)應(yīng)文件中的一個(gè)記錄是基本策略。進(jìn)一步的決策要根據(jù)應(yīng)用系統(tǒng)的具體特點(diǎn)與要求,考慮以下問題:第五十九頁,共一百零五頁,2022年,8月28日一個(gè)類是否有大批量的對(duì)象實(shí)例需要永久存儲(chǔ)?對(duì)象名稱或關(guān)鍵字是否呈現(xiàn)某種規(guī)律?應(yīng)用系統(tǒng)經(jīng)常需要按照什么條件進(jìn)行檢索?是否需要經(jīng)常地插入或刪除對(duì)象?第六十頁,共一百零五頁,2022年,8月28日設(shè)計(jì)數(shù)據(jù)接口部分的對(duì)象類。一個(gè)最主要的對(duì)
象類是為所有(需要在文件中存儲(chǔ)數(shù)據(jù)的)其他對(duì)象提供基本保存與恢復(fù)功能的對(duì)象類,可
將它命名為“對(duì)象存取器”。應(yīng)用系統(tǒng)中各個(gè)
類的對(duì)象是按關(guān)鍵字存取,還是按對(duì)象名稱存
取,還是二者兼而有之,這將對(duì)“對(duì)象存取器”類的設(shè)計(jì)提出不同的要求。第六十一頁,共一百零五頁,2022年,8月28日?qǐng)D15-2中的三個(gè)特殊類照原樣繼承了“對(duì)象存取器”的屬性,但繼承來的服務(wù)是多態(tài)的,算法各不相同。第六十二頁,共一百零五頁,2022年,8月28日?qǐng)D15-2第六十三頁,共一百零五頁,2022年,8月28日問題域部分的修改。由于每個(gè)需要長(zhǎng)久保存其對(duì)象實(shí)例的類都需要上述屬性和服務(wù),因此可以增加一個(gè)一般類來定義它們,作為共同協(xié)議,供所有這樣的類繼承。第六十四頁,共一百零五頁,2022年,8月28日以上策略可能使問題域部分的某些類由原先的單繼承變?yōu)槎嗬^承,所以對(duì)不支持多繼承的編程語言可能不適應(yīng)。解決辦法是:第六十五頁,共一百零五頁,2022年,8月28日(1)在較高的層次繼承“存儲(chǔ)協(xié)議”。在出現(xiàn)問題的類中自己定義所需的屬性與服務(wù)。采用化解多繼承的策略。第六十六頁,共一百零五頁,2022年,8月28日系統(tǒng)至少在以下幾種時(shí)刻需要保存或恢復(fù)對(duì)象:系統(tǒng)每次啟動(dòng)時(shí)要恢復(fù)所有需要預(yù)先恢復(fù)的永久對(duì)象。系統(tǒng)停止運(yùn)行之前要保存在本次運(yùn)行期間曾經(jīng)使用而未曾保存過的永久對(duì)象。第六十七頁,共一百零五頁,2022年,8月28日(3)自系統(tǒng)啟動(dòng)以來首次使用一個(gè)未曾恢復(fù)過的永對(duì)象時(shí)要首先恢復(fù)。(4)在與其他應(yīng)用系統(tǒng)共享對(duì)象數(shù)據(jù)的情況下,要根據(jù)共享機(jī)制的數(shù)據(jù)一致性保證策略所要求
的時(shí)刻保存或恢復(fù)對(duì)象。第六十八頁,共一百零五頁,2022年,8月28日15.5.2 針對(duì)RDBMS的設(shè)計(jì)對(duì)象及其對(duì)數(shù)據(jù)庫(kù)的使用。使用RDBMS和使用文件系統(tǒng)相比,有以下幾點(diǎn)不同:對(duì)象可能非映射式地使用庫(kù)中的數(shù)據(jù)可能需要數(shù)據(jù)格式轉(zhuǎn)換第六十九頁,共一百零五頁,2022年,8月28日對(duì)象在數(shù)據(jù)庫(kù)中的存放策略。用關(guān)系數(shù)據(jù)庫(kù)存放對(duì)象的基本策略是:把由每個(gè)類直接定義并需要永久存儲(chǔ)的全部對(duì)象實(shí)例存放在一個(gè)數(shù)據(jù)庫(kù)表中。第七十頁,共一百零五頁,2022年,8月28日1)對(duì)象數(shù)據(jù)的規(guī)范化關(guān)系數(shù)據(jù)庫(kù)要求存入其中的數(shù)據(jù)符合一定的規(guī)范,并且用范式來衡量規(guī)范化程度的高低。第七十一頁,共一百零五頁,2022年,8月28日(1)第一范式(1NF):關(guān)系(表)的每個(gè)屬性都必須是原子的。就是說,關(guān)系的每個(gè)屬性都是單值的,它不包含內(nèi)部的數(shù)據(jù)結(jié)構(gòu)。(2)第二范式(2NF):如果一個(gè)關(guān)系的所有非關(guān)鍵字屬性都只能依靠整個(gè)關(guān)鍵字(而不是依賴關(guān)鍵字的一部分屬性),則該關(guān)系在第二范式中。第七十二頁,共一百零五頁,2022年,8月28日第三范式(3NF):如果一個(gè)關(guān)系在第二范式中,而且沒有傳遞依賴,則該關(guān)系在第三范式中。Boyce-Godd
范式(BCNF):如果一個(gè)關(guān)系的每個(gè)決定因素都是候選關(guān)鍵字,則該關(guān)系在
BCNF中。(5)第四范式(4NF):如果一個(gè)關(guān)系在BCNF中,而且沒有多值依賴,則該關(guān)系在第四范式中。第七十三頁,共一百零五頁,2022年,8月28日為了表示某種事實(shí)已經(jīng)不存在而刪除一個(gè)元組,可能導(dǎo)致體現(xiàn)另一種事實(shí)的信息被同時(shí)刪除(這是刪除異常);或者,由于一種事實(shí)尚未
發(fā)生,導(dǎo)致體現(xiàn)另一種事實(shí)的數(shù)據(jù)無法插入到
表中(這是插入異常)。如圖15-3所示的例子。第七十四頁,共一百零五頁,2022年,8月28日?qǐng)D15-3(a)第七十五頁,共一百零五頁,2022年,8月28日?qǐng)D15-3(b)第七十六頁,共一百零五頁,2022年,8月28日?qǐng)D15-3(a)是一個(gè)數(shù)據(jù)庫(kù)表(關(guān)系)。該表符合2NF,但是它不符合3NF,因?yàn)橛袀鬟f依賴,即Fee依賴Building,而Building又依賴SID。這種傳遞依賴所帶來的更新異常問題是:當(dāng)一座建筑物中的最后一位房客(例如表中的150號(hào)學(xué)生)退房時(shí),刪除相應(yīng)的元組將導(dǎo)致反映這座建筑物收費(fèi)多少的信息從表中消失;反之,在一座建筑物無人入住之前,關(guān)于它收費(fèi)多少的數(shù)據(jù)也無法插入到表中。第七十七頁,共一百零五頁,2022年,8月28日這個(gè)表進(jìn)行規(guī)范化的辦法是把它分解成如圖15-3(b)所示的兩個(gè)表,一個(gè)反映每學(xué)生住在哪
座建筑物,另一個(gè)反映每座建筑物的收費(fèi)標(biāo)準(zhǔn)。這樣一來,以上兩種信息的插入和刪除不再相
互制約了。第七十八頁,共一百零五頁,2022年,8月28日總結(jié)以上的討論,可得到以下幾點(diǎn)認(rèn)識(shí):OOA得到的類其屬性很可能是非原子的。運(yùn)用面向?qū)ο蠹夹g(shù),可以在很大程度上解決2NF、3NF、BCNF以及4NF所要解決的更新異常和數(shù)據(jù)冗余問題,但是不能保證在任何情況下都能解決上述問題。遺留的問題可通過常規(guī)的規(guī)范化策略解決,但是未必規(guī)范程度越高越好。第七十九頁,共一百零五頁,2022年,8月28日2)修改類圖。規(guī)范化意味著,從類圖中原有的類到數(shù)據(jù)庫(kù)表,數(shù)據(jù)格式發(fā)生了變化。現(xiàn)在的問題是如何在設(shè)計(jì)中體現(xiàn)這種變化。有以下兩種策略
:第八十頁,共一百零五頁,2022年,8月28日(1)保持原先的類圖不變,只是按規(guī)范化的結(jié)果定義數(shù)據(jù)庫(kù)表。(2)按照規(guī)范化的要求修改類圖,無論是各個(gè)類內(nèi)部的屬性變化,還是把一個(gè)類分解成兩個(gè)類,都體現(xiàn)為對(duì)類圖的修改。第八十一頁,共一百零五頁,2022年,8月28日3)確定關(guān)鍵字。對(duì)每個(gè)需要在數(shù)據(jù)庫(kù)中存儲(chǔ)其對(duì)象實(shí)例的類都要確定一個(gè)關(guān)鍵字。第八十二頁,共一百零五頁,2022年,8月28日個(gè)例圖討4)從類圖到數(shù)據(jù)庫(kù)的映射。以下通過論幾種典型情況的處理:第八十三頁,共一百零五頁,2022年,8月28日(1)對(duì)一般-特殊結(jié)構(gòu)的處理。如圖15-4所示的一般-特殊結(jié)構(gòu)中,假定A是一個(gè)不用于創(chuàng)建對(duì)象實(shí)例的類(稱做抽象類),B、C和D都要?jiǎng)?chuàng)建對(duì)象實(shí)例。第八十四頁,共一百零五頁,2022年,8月28日?qǐng)D15-4第八十五頁,共一百零五頁,2022年,8月28日(2)對(duì)關(guān)聯(lián)的處理。對(duì)關(guān)聯(lián)的一般實(shí)現(xiàn)策略是,在連接線一端的類中定義一個(gè)(或一組)屬性,它的值表明另一端類的哪個(gè)對(duì)象實(shí)例與本端的
對(duì)象實(shí)例相關(guān)聯(lián)。第八十六頁,共一百零五頁,2022年,8月28日對(duì)于一對(duì)一的關(guān)聯(lián),無論在哪一端的類(以及它所對(duì)應(yīng)的表)中設(shè)置這樣的屬性均無不可。但是在哪一端設(shè)置更好些還值得進(jìn)一步考慮。如圖15-5所示的情況,設(shè)置在A端比設(shè)置在B端更便于實(shí)現(xiàn)。第八十七頁,共一百零五頁,2022年,8月28日?qǐng)D15-5第八十八頁,共一百零五頁,2022年,8月28日對(duì)于一對(duì)多的關(guān)聯(lián),沒有別的選擇,只能從多
重性約束為“*”的一端指向多重性約束為“1”的一端。例如在圖15-6中,應(yīng)該在A類定義指向
B類對(duì)象的屬性。第八十九頁,共一百零五頁,2022年,8月28日?qǐng)D15-6第九十頁,共一百零五頁,2022年,8月28日多對(duì)多的關(guān)聯(lián)可化為兩個(gè)一對(duì)多的關(guān)聯(lián),例如圖15-7(a)可以化為圖15-7(b)。這種轉(zhuǎn)化應(yīng)該在類圖中完成。第九十一頁,共一百零五頁,2022年,8月28日?qǐng)D15-7(a)第九十二頁,共一百零五頁,2022年,8月28日?qǐng)D15-7(b)第九十三頁,共一百零五頁,2022年,8月28日(3)對(duì)整體-部分結(jié)構(gòu)的處理。當(dāng)應(yīng)用系統(tǒng)永遠(yuǎn)不可能把整體對(duì)象和它的部分對(duì)象分開并進(jìn)行重新組合時(shí),通??梢圆捎镁o密、固定的實(shí)現(xiàn)方式。但是在實(shí)踐中即使對(duì)這種情況也可以采用松散、靈活的實(shí)現(xiàn)方式。第九十四頁,共一百零五頁,2022年,8月28日數(shù)據(jù)接口部分對(duì)象類的設(shè)計(jì)和問題域部分的修改。在采用RDBMS的情況下,系統(tǒng)需要經(jīng)常執(zhí)行的操
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 淋浴間防滑工程施工方案
- 太陽能曝氣設(shè)施施工方案
- 取水 引水接入施工方案
- 9 2025年?duì)I養(yǎng)學(xué)與疾病預(yù)防試題
- 破損道路切割施工方案
- 授權(quán)使用協(xié)議書
- 荒山菱形鋼絲網(wǎng)施工方案
- 公墓磚砌焚燒爐施工方案
- 冷水機(jī)組水泵拆除施工方案
- 高中開學(xué)典禮發(fā)言稿
- 2024年全國(guó)職業(yè)院校技能大賽高職組(社區(qū)服務(wù)實(shí)務(wù)賽項(xiàng))考試題庫(kù)(含答案)
- 中醫(yī)治療男科疾病的方法
- 2025年度花卉產(chǎn)業(yè)大數(shù)據(jù)服務(wù)平臺(tái)建設(shè)合同2篇
- 2025年度花卉產(chǎn)業(yè)大數(shù)據(jù)平臺(tái)建設(shè)合同3篇
- YY 0790-2024血液灌流設(shè)備
- 魚骨圖培訓(xùn)課件
- 《基于STM32的公交車智能終端設(shè)計(jì)與實(shí)現(xiàn)》
- 護(hù)理禮儀與人文關(guān)懷
- 護(hù)-學(xué)-崗-簽-到-簿
- 運(yùn)維服務(wù)體系建立實(shí)施方案(5篇)
- 路面基層(級(jí)配碎石)施工方案
評(píng)論
0/150
提交評(píng)論