版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、數(shù)據(jù)庫(kù)系統(tǒng)基礎(chǔ)教程(第2版),葉小平 湯 庸 湯 娜 潘 明 編著,普通高等教育“十一五”國(guó)家級(jí)規(guī)劃教材,清華大學(xué)出版社,2,數(shù)據(jù)模型是對(duì)現(xiàn)實(shí)世界中實(shí)體本身及其約束的抽象描述和實(shí)體間相互聯(lián)系的邏輯刻畫(huà)。以面向?qū)ο蠓椒橹笇?dǎo)對(duì)數(shù)據(jù)模型做語(yǔ)義解釋,就可構(gòu)建面向?qū)ο髷?shù)據(jù)模型(object oriented data model,OODM)。而按照OODM定義行為和聯(lián)系的數(shù)據(jù)對(duì)象構(gòu)成的數(shù)據(jù)庫(kù)稱為面向?qū)ο髷?shù)據(jù)庫(kù)(object oriented database,OODB)。,第10章 面向?qū)ο髷?shù)據(jù)庫(kù),3,對(duì)OODB進(jìn)行有效管理的數(shù)據(jù)管理系統(tǒng)稱為面向?qū)ο髷?shù)據(jù)庫(kù)管理系統(tǒng)(object oriented da
2、tabase management system,OODBMS)。以O(shè)ODBMS為核心構(gòu)造的數(shù)據(jù)庫(kù)系統(tǒng)則稱為面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)(object oriented database system,OODBS)。面向?qū)ο髷?shù)據(jù)模型吸收了面向?qū)ο蟪绦蛟O(shè)計(jì)方法中的核心概念和基本方法,其要點(diǎn)是采用面向?qū)ο蟮挠^點(diǎn)來(lái)描述現(xiàn)實(shí)世界中的實(shí)體(對(duì)象)的邏輯結(jié)構(gòu)和對(duì)象之間的聯(lián)系與限制。,第10章 面向?qū)ο髷?shù)據(jù)庫(kù),4,“對(duì)象”(object)可以解釋為客觀世界中的客體;“面向?qū)ο蠓椒ā保∣O方法)則可以理解為以客觀世界中的客體為觀察目標(biāo)的方法。OO方法出發(fā)點(diǎn)和基本目標(biāo)在于使得人們分析、設(shè)計(jì)和實(shí)現(xiàn)一個(gè)系統(tǒng)的方法盡可能接近于
3、人們認(rèn)識(shí)該系統(tǒng)的方法,即描述問(wèn)題的客體空間和解決問(wèn)題的方法空間在結(jié)構(gòu)上盡可能一致。,10.1 對(duì)象與類,10.1.1 對(duì)象,5,OO方法突出特點(diǎn)是通過(guò)可構(gòu)造手段表現(xiàn)客觀要求以及使用有限構(gòu)造手段與步驟建立客觀世界模型,從本質(zhì)上來(lái)說(shuō),面向?qū)ο蠓椒ㄋ鶚?gòu)造模型可在計(jì)算機(jī)上有效實(shí)現(xiàn),因此面向?qū)ο蠓椒ǔ蔀橛?jì)算機(jī)科學(xué)技術(shù)中一種廣泛使用的方法。,10.1 對(duì)象與類,10.1.1 對(duì)象,6,人們將客觀世界中所關(guān)注客體的抽象單位稱之為“對(duì)象”。對(duì)象是面向?qū)ο蠓椒ㄖ谢締挝?,需要作進(jìn)一步描述才能使其具體化與技術(shù)化,對(duì)象結(jié)構(gòu)就是這種技術(shù)化的描述。對(duì)象是由一組數(shù)據(jù)結(jié)構(gòu)以及其上的一組方法即程序代碼封裝起來(lái)的基本單位。由屬
4、性集合、方法集合和消息集合三部分加上對(duì)象標(biāo)識(shí)組成的對(duì)象封裝體稱為對(duì)象結(jié)構(gòu)。,10.1 對(duì)象與類,10.1.1 對(duì)象,7,對(duì)象具有封裝性、隱蔽性與穩(wěn)定性等重要特性。(1)封裝性 封裝(encapsulation)是使對(duì)象的外部界面與內(nèi)部實(shí)現(xiàn)之間實(shí)行清晰隔離的一種技術(shù),是OO模型的主要特征之一。封裝使得用戶只能看到對(duì)象外在的界面信息(正如規(guī)格說(shuō)明等),而看不到對(duì)象內(nèi)部的信息(如方法實(shí)現(xiàn)細(xì)節(jié)),對(duì)象內(nèi)部信息對(duì)于用戶是屏蔽的。封裝的意義首先在于安全性保證,其次在于相關(guān)模塊的可擴(kuò)展性。,10.1 對(duì)象與類,10.1.1 對(duì)象,8,(2)隱蔽性 對(duì)象分為內(nèi)部表示和外部表示。內(nèi)部的屬性與行為的捆綁,封裝之后
5、對(duì)于外部用戶透明,用戶通過(guò)對(duì)象外部表示即界面(interface)認(rèn)識(shí)對(duì)象并與之通信聯(lián)系。對(duì)象界面實(shí)際上是若干個(gè)外部接口,它對(duì)外部開(kāi)放并為外部所見(jiàn),但屏蔽了內(nèi)部細(xì)節(jié),即具有隱蔽性(hiddening)。對(duì)象隱蔽的意義在于外部用戶只需掌握簡(jiǎn)單的對(duì)象界面而不需了解復(fù)雜的內(nèi)部屬性與行為,復(fù)雜處理簡(jiǎn)單化,方便了用戶關(guān)于對(duì)象的認(rèn)識(shí)與操作。,10.1 對(duì)象與類,10.1.1 對(duì)象,9,(3)穩(wěn)定性 對(duì)象內(nèi)部的對(duì)象行為建立在對(duì)象屬性之上,即行為服務(wù)于屬性或行為依賴于屬性,這中在對(duì)象內(nèi)部建立起的以屬性為核心并以行為為附屬的穩(wěn)定實(shí)體特性稱為對(duì)象的穩(wěn)定性(stationary)。如對(duì)于樹(shù)具有樹(shù)葉、樹(shù)干、樹(shù)莖和樹(shù)根
6、等屬性,只有對(duì)應(yīng)于這些屬性才會(huì)有吸收地面水分(樹(shù)根)、光合作用(樹(shù)葉)及輸送養(yǎng)分(樹(shù)莖)等行為,這些構(gòu)成了以樹(shù)的屬性為核心的穩(wěn)定實(shí)體。,10.1 對(duì)象與類,10.1.1 對(duì)象,10,消息(message)是對(duì)象之間的聯(lián)系信息。由于對(duì)象的封裝性和隱蔽性,對(duì)象的消息僅僅作用于對(duì)象界面,然后再通過(guò)界面進(jìn)一步作用于對(duì)象內(nèi)部。 消息的作用 請(qǐng)求對(duì)象為其服務(wù);向?qū)ο髠鬟f消息并對(duì)對(duì)象操作;反饋服務(wù)結(jié)果。 消息的組成 接收者:表示消息所施加作用的對(duì)象;操作要求:消息對(duì)對(duì)象的造作要求;操作參數(shù):消息行使操作時(shí)作需要的外部數(shù)據(jù)。,10.1 對(duì)象與類,10.1.2 消息,11, 消息發(fā)送與接收 每個(gè)對(duì)象都可以發(fā)送和
7、接收若干消息。面向?qū)ο髷?shù)據(jù)模型中的“消息”與計(jì)算機(jī)網(wǎng)絡(luò)中傳輸?shù)南⒑x不同。它是指對(duì)象之間的操作請(qǐng)求的傳遞,而不考慮操作實(shí)現(xiàn)細(xì)節(jié)。,10.1 對(duì)象與類,10.1.2 消息,12,消息中僅包含發(fā)送者的要求,它告訴接收者要完成哪些處理,但并不指示接收者如何完成。消息由接收者解釋,并選擇所需操作。一個(gè)對(duì)象可以接收不同形式與內(nèi)容的多個(gè)消息,同時(shí),相同形式的消息也可發(fā)往不同對(duì)象。不同對(duì)象對(duì)形式相同的消息可有不同解釋并完成不同操作。消息在提供對(duì)象使用時(shí)應(yīng)規(guī)定的格式稱為消息協(xié)議。,10.1 對(duì)象與類,10.1.2 消息,13,例 設(shè)一個(gè)對(duì)象A要求對(duì)象B完成其中的某種操作,則只需向?qū)ο驜發(fā)送一個(gè)消息即可。B接
8、收到這個(gè)消息后,根據(jù)消息模式找到與之匹配的方法,執(zhí)行該方法后將執(zhí)行的結(jié)果又以消息的形式發(fā)送給對(duì)象A。,10.1 對(duì)象與類,10.1.2 消息,14,10.1 對(duì)象與類,10.1.2 消息,15,類(Class)是對(duì)具有共同屬性和方法的對(duì)象全體的概括描述,它相當(dāng)于關(guān)系模型中的關(guān)系模式。類給出了屬于其全部對(duì)象屬性與行為的抽象定義,類中對(duì)象僅是類定義中的一個(gè)實(shí)體,即對(duì)象實(shí)例。學(xué)生是一個(gè)類,一個(gè)具體學(xué)生,例如John就是學(xué)生類中一個(gè)對(duì)象實(shí)例。與關(guān)系模型需要首先描述關(guān)系模式類似,對(duì)象模型也首先需要抽象描述具有共同屬性的對(duì)象的類,按照類來(lái)定義屬性和方法,從而避免對(duì)每個(gè)對(duì)象一一重復(fù)定義。查詢操作等方法也定義
9、在類上。,10.1 對(duì)象與類,10.1.3 類,16,類概念簡(jiǎn)化了人們對(duì)客觀世界的認(rèn)識(shí),眾多復(fù)雜對(duì)象因?yàn)橛辛祟惗?jiǎn)單清晰,人們可以對(duì)屬于類的全體對(duì)象進(jìn)行統(tǒng)一研究而不必對(duì)每個(gè)對(duì)象做個(gè)別重復(fù)討論。類可有統(tǒng)一界面,此時(shí),消息不僅作為對(duì)象間通信工具,還可作為類之間通信工具。類也具有封裝性、隱蔽性和穩(wěn)定性,在原理分析上,類取代對(duì)象成為面向?qū)ο蠓椒ㄖ袑?shí)際研究與討論的基本抽象單位。,10.1 對(duì)象與類,10.1.3 類,17,類間基本關(guān)系可分為繼承關(guān)系、組合關(guān)系和通信關(guān)系(消息)三種情形。繼承關(guān)系和組合關(guān)系是類之間的兩個(gè)基本關(guān)系,反映的是類與類之間靜態(tài)聯(lián)系;類之間類似于對(duì)象之間“消息”那樣的通信關(guān)系反映的是
10、類與類之間的動(dòng)態(tài)聯(lián)系,下面主要討論類的繼承關(guān)系。,10.1 對(duì)象與類,10.1.3 類,18,(1)類繼承基本概念 類與類之間的層次結(jié)構(gòu)重要特點(diǎn)之一就是繼承(inheritance)。繼承反映一個(gè)類能夠自動(dòng)繼承其它某些類所具有的屬性和方法。這是面向?qū)ο髷?shù)據(jù)模型中避免重復(fù)定義的一個(gè)重要機(jī)制。繼承性比較自然地體現(xiàn)了類之間的“A is B”聯(lián)系,它表示A中對(duì)象也是B中對(duì)象,但A中對(duì)象也具有B中對(duì)象所不具有的屬性或方法。,10.1 對(duì)象與類,10.1.3 類,19,此時(shí),類A是類B的子類(subclass),類B是類A的超類(superclass).一個(gè)子類可以有一個(gè)或多個(gè)超類,一個(gè)超類也可以有一個(gè)或
11、多個(gè)子類,這樣形成了類與類之間一種基本層次結(jié)構(gòu)。,10.1 對(duì)象與類,10.1.3 類,20,如果子類僅限于繼承超類中的屬性和方法,則定義子類就失去了意義。子類除了能繼承超類中的屬性和方法外,還可用增加和取代的途徑定義子類所具有的特殊屬性和方法。所謂增加就是在子類中定義新的屬性和方法;所謂取代就是在子類中以新的內(nèi)容重新定義超類中已有的屬性和方法。,10.1 對(duì)象與類,10.1.3 類,21,抽象類(abstract class)是一種不能建立實(shí)例的類。抽象類將有關(guān)的類組織在一起,抽象出一個(gè)公共的超類,其它子類都從這個(gè)超類派生出來(lái)。通常一個(gè)抽象類只是描述了與這個(gè)類有關(guān)的方法接口或者方法的部分實(shí)現(xiàn)
12、,而具體的實(shí)現(xiàn)則在一個(gè)或幾個(gè)子類中定義。 抽象類一般用于定義一種協(xié)議或概念。,10.1 對(duì)象與類,10.1.3 類,22,(2)類繼承基本特性 類繼承通常具有下面的四個(gè)基本性質(zhì)。傳遞性 設(shè)有A,B,C三個(gè)類,其種類C繼承類B,而類B繼承類A,此時(shí)必有類C繼承類A。例如動(dòng)物、哺乳動(dòng)物與靈長(zhǎng)類動(dòng)物均為類,而其中靈長(zhǎng)類動(dòng)物繼承哺乳動(dòng)物,哺乳動(dòng)物繼承動(dòng)物,此時(shí)必有靈長(zhǎng)類動(dòng)物繼承動(dòng)物。,10.1 對(duì)象與類,10.1.3 類,23,單向性 設(shè)有類B繼承類A,則此時(shí)一定不能有類A繼承類B,如研究生類繼承學(xué)生類,但學(xué)生類必不繼承研究生類。傳遞性和單向性說(shuō)明了類繼承具有單向?qū)哟涡浴?10.1 對(duì)象與類,10.1
13、.3 類,24,可重用性 可重用性(reuse)指得是子類可以重用超類的全部資源,同時(shí)根據(jù)繼承的傳遞性,它還可以重用繼承鏈上所有超類資源。包含性 繼承除了具有類之間一般與特殊關(guān)系之外,還可以有包含關(guān)系,即靈長(zhǎng)類繼承哺乳動(dòng)物類,此時(shí)靈長(zhǎng)類必包含在哺乳動(dòng)物中。類中繼承的包含關(guān)系一般是真包含關(guān)系。,10.1 對(duì)象與類,10.1.3 類,25,(3) 多態(tài)性與聯(lián)編 多態(tài)性與聯(lián)編是類繼承的重要技術(shù)特性 多態(tài)性 在類繼承過(guò)程中,超類屬性與方法在子類中可以有不同的實(shí)現(xiàn)形式、方法與語(yǔ)義,這就稱為多態(tài)性(polymophic)。如在圖2-12所示的類繼承當(dāng)中,動(dòng)物均有吃食物的行為,但是人類吃食物的實(shí)現(xiàn)形式與一般
14、動(dòng)物不同,人類用工具吃食物,動(dòng)物則直接用爪子。另外,同是用工具吃食物的方式也有所不同,東方人使用筷子方式,而西方人使用刀叉。,10.1 對(duì)象與類,10.1.3 類,26,10.1 對(duì)象與類,10.1.3 類,27,多態(tài)性實(shí)際上反映了“一名多義”,即一個(gè)名字可以具有多種語(yǔ)義。在“圖形”類中,可以定義一個(gè)打?。╬rint)方法用于打印圖形。對(duì)圖形類中不同實(shí)例,其打印過(guò)程可以不同。只有當(dāng)消息送到具體對(duì)象時(shí),才能確定采用什么打印過(guò)程。這即是“打印”方法的多態(tài)性。多態(tài)性的意義在于可以為系統(tǒng)需求分析和設(shè)計(jì)帶來(lái)帶來(lái)方便,提高效率。,10.1 對(duì)象與類,10.1.3 類,28, 聯(lián)編 多態(tài)性為對(duì)象與屬性、方法
15、之間的復(fù)雜關(guān)系提供處理的方便與靈活性,但在計(jì)算機(jī)軟件中實(shí)現(xiàn)多態(tài)性需要有聯(lián)編(binding)等功能的支撐。聯(lián)編是將一個(gè)程序經(jīng)過(guò)編譯而成為可以運(yùn)行目標(biāo)代碼的過(guò)程,即將執(zhí)行代碼聚束在一起的聯(lián)編過(guò)程。用傳統(tǒng)語(yǔ)言寫(xiě)的程序在運(yùn)行之前即可完成此過(guò)程,故稱為靜態(tài)聯(lián)編(static binding)。,10.1 對(duì)象與類,10.1.3 類,29,面向?qū)ο笳Z(yǔ)言在程序運(yùn)行時(shí)也可發(fā)生聯(lián)編,稱為動(dòng)態(tài)聯(lián)編(dynamic binding)。動(dòng)態(tài)聯(lián)編的意義在于增加程序的簡(jiǎn)單性和可擴(kuò)充性,使程序增刪自如,不易出錯(cuò),但效率略低于靜態(tài)聯(lián)編。另外,靜態(tài)聯(lián)編運(yùn)行效率高但修改和維護(hù)工作量大。,10.1 對(duì)象與類,10.1.3 類,3
16、0,面向?qū)ο髷?shù)據(jù)模型是依據(jù)面向?qū)ο蠓椒ㄋ⒌臄?shù)據(jù)模型,其中包括數(shù)據(jù)模式(數(shù)據(jù)結(jié)構(gòu))、建立在模式上的數(shù)據(jù)操作和數(shù)據(jù)約束。 數(shù)據(jù)模式 由對(duì)象結(jié)構(gòu)以及類間繼承和組合關(guān)系建立起來(lái)的數(shù)據(jù)間的組織結(jié)構(gòu)關(guān)系,這種模式結(jié)構(gòu)的語(yǔ)義表示能力遠(yuǎn)比ER方法與EER方法要強(qiáng)。,10.2 數(shù)據(jù)模型,10.2.1 基本概念,31, 數(shù)據(jù)操作 由對(duì)象與類中方法建構(gòu)對(duì)象數(shù)據(jù)模式上的數(shù)據(jù)操作,這種操作語(yǔ)義強(qiáng)于傳統(tǒng)數(shù)據(jù)模型,如可以構(gòu)做一個(gè)圓形類,它的操作可以除查詢、修改外,還可以有圖形的放大/縮小,圖形的移動(dòng)、圖形的拼接等。在面向?qū)ο髷?shù)據(jù)操作分為兩個(gè)部分,一個(gè)部分封裝在類之中稱之為方法,另一部分是類之間相互溝通的操作稱之為消息。
17、,10.2 數(shù)據(jù)模型,10.2.1 基本概念,32, 數(shù)據(jù)約束 數(shù)據(jù)約束也是一種方法,即是一種邏輯表示式,可以用類中方法表示模式約束。面向?qū)ο髷?shù)據(jù)一般使用方法或消息表示完整性約束條件,稱為完整性約束方法與完整性約束消息,并在其之前標(biāo)有特殊標(biāo)識(shí)。,10.2 數(shù)據(jù)模型,10.2.1 基本概念,33,面向?qū)ο髷?shù)據(jù)模型直觀描述就是面向?qū)ο蠓椒ㄖ械念悓哟谓Y(jié)構(gòu)圖。面向?qū)ο髷?shù)據(jù)模型中的對(duì)象由一組變量、一組方法和一組消息組成,其中描述對(duì)象自身特性的“屬性”和描述對(duì)象間相互關(guān)聯(lián)的“聯(lián)系”也常常統(tǒng)稱為“狀態(tài)”(state),方法就是施加到對(duì)象的操作。一個(gè)對(duì)象的屬性可以另一個(gè)對(duì)象,另一個(gè)對(duì)象的屬性還可以同其他對(duì)象描
18、述,以此模擬現(xiàn)實(shí)世界中復(fù)雜實(shí)體。在面向?qū)ο髷?shù)據(jù)模型中,對(duì)象的操作通過(guò)調(diào)用其自身包含的方法實(shí)現(xiàn)。,10.2 數(shù)據(jù)模型,10.2.1 基本概念,34,任何一個(gè)對(duì)象及屬性都有一種類型,OODM的類型系統(tǒng)有一組自身定義的基本類型和一些用來(lái)遞歸地構(gòu)造復(fù)雜類型的構(gòu)成器組成。,10.2 數(shù)據(jù)模型,10.2.2 數(shù)據(jù)類型,35,1)基本類型 主要是基礎(chǔ)類型與“類”類型兩種情形。 基礎(chǔ)類型 通常意義下的系統(tǒng)“內(nèi)置”數(shù)據(jù)類型,如整型、實(shí)型、字符串和布爾型等?!邦悺鳖愋?一個(gè)類本身可看做下述構(gòu)造型的一種,是復(fù)雜類型,但仍可將其作為一個(gè)整體看成一個(gè)基礎(chǔ)型,從而可以像上述型一樣對(duì)待和使用。,10.2 數(shù)據(jù)模型,10.2
19、.2 數(shù)據(jù)類型,36,(2)構(gòu)造類型 通過(guò)基礎(chǔ)型和“類”型可以使用構(gòu)造器形成數(shù)組(array)、列表(list)、包(bag)、集合(set)各種復(fù)雜型(構(gòu)造型)。需要指出的是,基礎(chǔ)型對(duì)象(屬性)的值是“自我定義”的,而構(gòu)造型對(duì)象的值是由其部件對(duì)象的Oid的相應(yīng)組合確定。,10.2 數(shù)據(jù)模型,10.2.2 數(shù)據(jù)類型,37,例 類“公司”的說(shuō)明:CLASS CompanyATTRIBUTES(Name:string,Address:string,Employees:SET,Subsidiaries:SET)METHOD(GetName()GetSubsidiaries(),Addsubsidia
20、ry(NC:Company),Trigger(NoSuchComp),10.2 數(shù)據(jù)模型,10.2.2 數(shù)據(jù)類型,38,這里有四個(gè)屬性和四個(gè)方法,例如最后一個(gè)方法的名稱為Addsubsidiary,參數(shù)為NC,就是要使之成為目標(biāo)對(duì)象公司的子公司的一個(gè)Company實(shí)例,結(jié)果為插入NCo公司到目標(biāo)對(duì)象公司的子公司Subsidiaries中,若不存在NC公司,即它不是Company的一個(gè)實(shí)例,則啟動(dòng)觸發(fā)器NoSuchComp進(jìn)行例外處理。這里省略了接收參數(shù),因?yàn)樗褪潜綜ompany類的實(shí)例。,10.2 數(shù)據(jù)模型,10.2.2 數(shù)據(jù)類型,39,設(shè)子公司由一個(gè)NumSubsi項(xiàng)(當(dāng)前項(xiàng)數(shù))數(shù)組實(shí)現(xiàn),
21、AddSubsidiary的方法可定義為:AddSubsidiary(C:Company,NC:Company)IF Checkcomp(NC)THEN C.SubsidiaryNumSubsi:=NC,Numsubsi:=NumSubsi + 1ENDIF,10.2 數(shù)據(jù)模型,10.2.2 數(shù)據(jù)類型,40,這里,Checkcomp(NC)為發(fā)給本類的一個(gè)消息(為另一方法調(diào)用),它檢驗(yàn)NC是否是類Company中的一個(gè)公司。若是,則返回“真”,否則就返回“假”。NC為該方法的形式參數(shù),C為直接接受者(目標(biāo)對(duì)象)參數(shù),NumSubsi為存儲(chǔ)當(dāng)前子公司數(shù)的實(shí)例變量。若發(fā)送消息:AddSubsidi
22、ary(IBM,ABC)則NC聯(lián)編到ABC,10.2 數(shù)據(jù)模型,10.2.2 數(shù)據(jù)類型,41,OODM是一種層次式的結(jié)構(gòu)模型,以類為基本單元,以繼承和組合為結(jié)構(gòu)方式,從而組成圖結(jié)構(gòu)形式,具有豐富語(yǔ)義,能夠表達(dá)客觀世界復(fù)雜的結(jié)構(gòu)形式。 OODM將數(shù)據(jù)與操作封裝于一體的結(jié)構(gòu)方式,使得OODM中的類具有獨(dú)立運(yùn)作能力的實(shí)體,擴(kuò)大了傳統(tǒng)數(shù)據(jù)模型中實(shí)體集僅僅是單一數(shù)據(jù)集的不足。,10.2 數(shù)據(jù)模型,10.2.3 與關(guān)系模型比較,42, OODM具有構(gòu)做多種復(fù)雜抽象數(shù)據(jù)類型的能力。數(shù)據(jù)類型是一種類,如實(shí)型就是一種類,特式實(shí)數(shù)結(jié)構(gòu)與實(shí)數(shù)操作所組成的類,因此可用構(gòu)做類的方法構(gòu)做數(shù)據(jù)類型,從而構(gòu)造出實(shí)際所需的各種
23、復(fù)雜數(shù)據(jù)類型。例如可用類的方法構(gòu)造元組(tupple)、數(shù)組、隊(duì)列、包和集合等,也可以用類的方法構(gòu)造向量空間等類型使數(shù)據(jù)類型大為擴(kuò)充。,10.2 數(shù)據(jù)模型,10.2.3 與關(guān)系模型比較,43, OODM中類層次結(jié)構(gòu)是一種結(jié)構(gòu)化形式,可根據(jù)需要隨時(shí)改變結(jié)構(gòu)從而使OODM具有不斷更新結(jié)構(gòu)的能力,這種能力稱為模式演化(schema evaluation)能力。需要說(shuō)明的是,面向?qū)ο箢悓哟谓Y(jié)構(gòu)圖既是概念模型又是邏輯模型,它將抽象概念與具體數(shù)據(jù)庫(kù)實(shí)現(xiàn)有機(jī)地融合為一體,這也構(gòu)成了OODM的獨(dú)特性質(zhì)。,10.2 數(shù)據(jù)模型,10.2.3 與關(guān)系模型比較,44,10.2 數(shù)據(jù)模型,10.2.3 與關(guān)系模型比較,
24、45,前面已經(jīng)簡(jiǎn)要介紹了面向?qū)ο髷?shù)據(jù)庫(kù)系統(tǒng)中的基本概念。為了在技術(shù)開(kāi)發(fā)和實(shí)際應(yīng)用中有效使用這些概念,還需要一種數(shù)據(jù)庫(kù)語(yǔ)言進(jìn)行必要的表述與刻畫(huà)。面向?qū)ο髷?shù)據(jù)庫(kù)語(yǔ)言構(gòu)建的基本思路是對(duì)現(xiàn)有面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言如C+、Smalltalk等進(jìn)行擴(kuò)展,使之支持相應(yīng)數(shù)據(jù)庫(kù)操作。20世紀(jì)80年代成立的ODMG(object data management group),在1993年形成工業(yè)化的OODB標(biāo)準(zhǔn)ODMG1.0,完成了對(duì)面面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言C+的數(shù)據(jù)庫(kù)功能擴(kuò)充。,10.3 ODMG數(shù)據(jù)操作,46,1997年推出的ODMG2.0, 內(nèi)容涉及到對(duì)象模型和對(duì)象查詢語(yǔ)言與C+、Smalltalk以及Java
25、之間綁定。2000年再次推出ODMG3.0,對(duì)先前版本做了一些修改和補(bǔ)充,基本框架和基本概念未變。,10.3 ODMG數(shù)據(jù)操作,47,ODMG工業(yè)標(biāo)準(zhǔn)對(duì)C+的擴(kuò)展主要包括C+對(duì)象定義語(yǔ)言(object definition language,ODL)和C+對(duì)象操作語(yǔ)言(object Manipulate language,OML),其中,OML又分為對(duì)象查詢語(yǔ)言(OQL)和對(duì)象控制語(yǔ)言(OCL)。ODMG工業(yè)標(biāo)準(zhǔn)中的對(duì)象數(shù)據(jù)模型主要包括有下述5個(gè)核心概念:,10.3 ODMG數(shù)據(jù)操作,48, 對(duì)象和文字 對(duì)象和文字是面向?qū)ο髷?shù)據(jù)建模的基本原語(yǔ)。每個(gè)對(duì)象有一個(gè)唯一標(biāo)識(shí)符,文字(literal)沒(méi)
26、有標(biāo)識(shí)符。對(duì)象標(biāo)識(shí)符在對(duì)象整個(gè)生命周期中都有效,即無(wú)論對(duì)象是存儲(chǔ)在外存中還是在內(nèi)存中,標(biāo)識(shí)符都始終有效。對(duì)象作為基本數(shù)據(jù)結(jié)構(gòu),是存儲(chǔ)和操作的基礎(chǔ)單元。,10.3 ODMG數(shù)據(jù)操作,49, 類型 對(duì)象和文字都可以被劃分為類型,同一類型(type)的對(duì)象或文字具有相同的狀態(tài),對(duì)象可以稱為類型的實(shí)例。 狀態(tài) 對(duì)象的狀態(tài)可以通過(guò)一組性質(zhì)定義。性質(zhì)(property)可以分為兩種:對(duì)象屬性(attribute)和對(duì)象之間聯(lián)系(relationship)。,10.3 ODMG數(shù)據(jù)操作,50, 操作 對(duì)象行為可以通過(guò)一組操作來(lái)定義。操作(operation)具有輸入和輸出參數(shù),并且可以返回特定類型的結(jié)果。
27、ODL 利用ODL定義對(duì)象數(shù)據(jù)管理系統(tǒng)的模式,它所存儲(chǔ)的對(duì)象都是模式中定義類型的實(shí)例,即對(duì)象,這些對(duì)象可以供多個(gè)應(yīng)用程序共享。,10.3 ODMG數(shù)據(jù)操作,51,另外需要說(shuō)明的是,由于對(duì)象本身是狀態(tài)(屬性和對(duì)象間聯(lián)系)與行為(操作或方法)的封裝體,因此在ODMG框架內(nèi),相應(yīng)數(shù)據(jù)操作主要是數(shù)據(jù)的查詢,而數(shù)據(jù)更新(插入、刪除和修改)由于屬于對(duì)象行為范疇,并不顯式的表現(xiàn)出來(lái),而是通過(guò)類型創(chuàng)建中的行為定義完成。下面主要介紹面向?qū)ο蟮臄?shù)據(jù)定義和數(shù)據(jù)查詢。,10.3 ODMG數(shù)據(jù)操作,52,1)接口和類的創(chuàng)建例2-3 下述語(yǔ)句創(chuàng)建了ODMG中的接口和類。Interface Employee;Interfa
28、ce Professor:Employee;Interface Associate_Professor:Professor ;Class Salaried_Employee:Employee;Class Hourly_Employee:Employee;,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,53,Class Personattribute string name;attribute date birthday;class Employeeperson extends Person:Employeeattribute Date hireDate;attribute Currenc
29、y payRate;relationship Manager boss inverse Manager:subordinates;,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,54,class ManagerPerson extends EmployeePerson:Managerrelationship set subordinates inverse Employee:boss;,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,55,說(shuō)明 在上述類型說(shuō)明的定義語(yǔ)句中,接口employee中定義了操作calculate-paycheck,類salaried-employee和類h
30、ourly-employee,可以根據(jù)具體情況對(duì)接口employee中操作calculate-paycheck進(jìn)行修改。另外,也允許對(duì)行為進(jìn)行多重繼承,即一個(gè)子類型可以從不同的超類型中繼承多個(gè)具有相同名稱、不同參數(shù)的操作。,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,56,ODMG標(biāo)準(zhǔn)規(guī)定,一個(gè)接口和其所有實(shí)現(xiàn)的結(jié)合稱為類型,而一個(gè)接口和其某種實(shí)現(xiàn)的結(jié)合稱為類。因此,“類型”是獨(dú)立于實(shí)現(xiàn)的,而“類”是依賴于實(shí)現(xiàn)的,即類型的抽象級(jí)別要比類高。只有當(dāng)一個(gè)類型只有一種實(shí)現(xiàn)時(shí),類型和類才是等同的。正是由于類型包含類,所以在ODL和OQL中,類型使用很普遍,而類只用于特定情況。,10.3 ODM
31、G數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,57,在ODMG ODL中,面向?qū)ο髷?shù)據(jù)庫(kù)模式被定義為一系列類(class)的集合。對(duì)于每一個(gè)類可以說(shuō)明類的外延(extent),外延的意義在于表示當(dāng)前對(duì)象集合的一個(gè)名稱,面向?qū)ο髷?shù)據(jù)模型種的“類”與“外延”類似于關(guān)系數(shù)據(jù)模型中“關(guān)系模式”和“關(guān)系實(shí)例”。,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,58,2)對(duì)象的創(chuàng)建類和接口創(chuàng)建類似于關(guān)系模式創(chuàng)建;而對(duì)象創(chuàng)建則類似于關(guān)系模式中數(shù)據(jù)創(chuàng)建。在ODMG中,對(duì)象可以分為聚集對(duì)象和原子對(duì)象。原子對(duì)象就是“用戶自定義對(duì)象”,具有各種不同的復(fù)雜情形,需要用戶通過(guò)接口定義、類定義等完成創(chuàng)建過(guò)程;而聚集對(duì)象相對(duì)比較
32、整齊,根據(jù)ODMG標(biāo)準(zhǔn),通常是使用為不同聚集了類型定義的一種特殊接口類型工廠對(duì)象(factory object)來(lái)創(chuàng)建聚集對(duì)象,即是說(shuō)通過(guò)“工廠對(duì)象”接口定義中的生成函數(shù)來(lái)創(chuàng)建聚集對(duì)象。,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,59,例10-4 設(shè)有下述語(yǔ)句表示的ODMG標(biāo)準(zhǔn)中一個(gè)工廠對(duì)象接口。Interface ObjectFactoryObject new();通過(guò)該工廠對(duì)象接口,可以為用戶創(chuàng)建聚集對(duì)象如下:interface DateFactory:ObjectFactoryexception InvalidDate;,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,60
33、,Date calendar-date(in unsigned short year,In unsigned short month,In unsigned short day)raises(InvalidDate);Date current();,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,61,說(shuō)明 上述工廠接口“ObjectFactory”只有一個(gè)操作new(),它返回一個(gè)帶有對(duì)象標(biāo)識(shí)OID的新對(duì)象。新創(chuàng)建的“DateFactory”接口繼承該接口生成函數(shù)“new()”,就可以為每個(gè)用戶定義的原子對(duì)象創(chuàng)建它們自己的工廠接口,并且可以針對(duì)每種新對(duì)象實(shí)現(xiàn)不同的new()操作。例如,給
34、定一個(gè)DateFactory接口,它還可以有其他一些操作:calendar-date用來(lái)創(chuàng)建一個(gè)新的日期,current用來(lái)創(chuàng)建一個(gè)值為當(dāng)前日期的對(duì)象。,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,62,對(duì)象查詢語(yǔ)言O(shè)QL是以面向?qū)ο竽P蜑榛A(chǔ)的類SQL查詢語(yǔ)言,允許使用傳統(tǒng)SELCET查詢語(yǔ)句來(lái)書(shū)寫(xiě)表達(dá)式。OQL沒(méi)有提供顯式刪除和修改操作,這些基本數(shù)據(jù)操作由類型定義中的操作完成。在“collection”和“structure”中,如果是由類型組成,則用“”表示,如果是用文字組成,則用“()”表示。,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,63,例 10-5 在大學(xué)數(shù)據(jù)庫(kù)
35、中,用OQL的SELECT語(yǔ)句可以得到如下查詢操作:查詢大學(xué)中授課門(mén)數(shù)超過(guò)2門(mén)的教師,要求顯示學(xué)校名稱和教師姓名,顯示時(shí)屬性名為university_uname和faculty_name:SELECT university_name:F.works_for.uname,faculty_name:F.nameFROM faculties FWHERE F.num_teach()2;,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,64,例10-6 查詢廣州地區(qū)大學(xué)中教師開(kāi)設(shè)課程的課程名:SELECT DISTINCT C.cnameFROM universities U,U.staff F,F(xiàn).teach CWHERE U.city = guangzhou;說(shuō)明 關(guān)鍵字DISTINCT消除了結(jié)果中重復(fù)部分,此時(shí)查詢結(jié)果為集合,否則為包。,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,65,例10-7 上述查詢也可以用子查詢表示,但查詢出現(xiàn)在FROM中:SELECT DISTINCT C.cnameFROM (SELECT UFROM universities UWHERE U.city = guangzhou)D1(SELECT FFROM D1.staff F)D2D2.teach C;,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,66,說(shuō)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高考物理一輪復(fù)習(xí)-第八章-恒定電流-第5講-測(cè)定電源的電動(dòng)勢(shì)和內(nèi)阻
- 高考生物總復(fù)習(xí)-精彩三十三天(二十)生物技術(shù)實(shí)踐2
- DB34-T 4193-2022 養(yǎng)老機(jī)構(gòu)旅居養(yǎng)老服務(wù)指南
- 楊梅人設(shè)介紹
- 李煜虞美人課件
- 機(jī)箱廠制圖培訓(xùn)課件內(nèi)容
- 機(jī)電安裝安全培訓(xùn)計(jì)劃課件
- 2026年海南工商職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能筆試模擬試題帶答案解析
- 2026年甘肅工業(yè)職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能考試模擬試題帶答案解析
- 2026年廣西演藝職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能筆試模擬試題帶答案解析
- 《機(jī)修工基礎(chǔ)培訓(xùn)》課件
- 鑄件項(xiàng)目可行性研究報(bào)告
- 中國(guó)胃食管反流病診療規(guī)范(2023版)解讀
- 數(shù)字經(jīng)濟(jì)前沿八講
- 膿毒癥免疫功能紊亂
- 廣東江南理工高級(jí)技工學(xué)校
- 斜弱視眼科學(xué)
- 眼底熒光造影護(hù)理配合
- 2023年電大會(huì)計(jì)本人力資源管理復(fù)習(xí)資料
- GB/T 25146-2010工業(yè)設(shè)備化學(xué)清洗質(zhì)量驗(yàn)收規(guī)范
- 相關(guān)控規(guī)-申花單元
評(píng)論
0/150
提交評(píng)論