




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、數(shù)據(jù)庫系統(tǒng)基礎(chǔ)教程(第2版),葉小平 湯 庸 湯 娜 潘 明 編著,普通高等教育“十一五”國家級規(guī)劃教材,清華大學(xué)出版社,2,數(shù)據(jù)模型是對現(xiàn)實世界中實體本身及其約束的抽象描述和實體間相互聯(lián)系的邏輯刻畫。以面向?qū)ο蠓椒橹笇?dǎo)對數(shù)據(jù)模型做語義解釋,就可構(gòu)建面向?qū)ο髷?shù)據(jù)模型(object oriented data model,OODM)。而按照OODM定義行為和聯(lián)系的數(shù)據(jù)對象構(gòu)成的數(shù)據(jù)庫稱為面向?qū)ο髷?shù)據(jù)庫(object oriented database,OODB)。,第10章 面向?qū)ο髷?shù)據(jù)庫,3,對OODB進(jìn)行有效管理的數(shù)據(jù)管理系統(tǒng)稱為面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)(object oriented da
2、tabase management system,OODBMS)。以O(shè)ODBMS為核心構(gòu)造的數(shù)據(jù)庫系統(tǒng)則稱為面向?qū)ο髷?shù)據(jù)庫系統(tǒng)(object oriented database system,OODBS)。面向?qū)ο髷?shù)據(jù)模型吸收了面向?qū)ο蟪绦蛟O(shè)計方法中的核心概念和基本方法,其要點是采用面向?qū)ο蟮挠^點來描述現(xiàn)實世界中的實體(對象)的邏輯結(jié)構(gòu)和對象之間的聯(lián)系與限制。,第10章 面向?qū)ο髷?shù)據(jù)庫,4,“對象”(object)可以解釋為客觀世界中的客體;“面向?qū)ο蠓椒ā保∣O方法)則可以理解為以客觀世界中的客體為觀察目標(biāo)的方法。OO方法出發(fā)點和基本目標(biāo)在于使得人們分析、設(shè)計和實現(xiàn)一個系統(tǒng)的方法盡可能接近于
3、人們認(rèn)識該系統(tǒng)的方法,即描述問題的客體空間和解決問題的方法空間在結(jié)構(gòu)上盡可能一致。,10.1 對象與類,10.1.1 對象,5,OO方法突出特點是通過可構(gòu)造手段表現(xiàn)客觀要求以及使用有限構(gòu)造手段與步驟建立客觀世界模型,從本質(zhì)上來說,面向?qū)ο蠓椒ㄋ鶚?gòu)造模型可在計算機(jī)上有效實現(xiàn),因此面向?qū)ο蠓椒ǔ蔀橛嬎銠C(jī)科學(xué)技術(shù)中一種廣泛使用的方法。,10.1 對象與類,10.1.1 對象,6,人們將客觀世界中所關(guān)注客體的抽象單位稱之為“對象”。對象是面向?qū)ο蠓椒ㄖ谢締挝?,需要作進(jìn)一步描述才能使其具體化與技術(shù)化,對象結(jié)構(gòu)就是這種技術(shù)化的描述。對象是由一組數(shù)據(jù)結(jié)構(gòu)以及其上的一組方法即程序代碼封裝起來的基本單位。由屬
4、性集合、方法集合和消息集合三部分加上對象標(biāo)識組成的對象封裝體稱為對象結(jié)構(gòu)。,10.1 對象與類,10.1.1 對象,7,對象具有封裝性、隱蔽性與穩(wěn)定性等重要特性。(1)封裝性 封裝(encapsulation)是使對象的外部界面與內(nèi)部實現(xiàn)之間實行清晰隔離的一種技術(shù),是OO模型的主要特征之一。封裝使得用戶只能看到對象外在的界面信息(正如規(guī)格說明等),而看不到對象內(nèi)部的信息(如方法實現(xiàn)細(xì)節(jié)),對象內(nèi)部信息對于用戶是屏蔽的。封裝的意義首先在于安全性保證,其次在于相關(guān)模塊的可擴(kuò)展性。,10.1 對象與類,10.1.1 對象,8,(2)隱蔽性 對象分為內(nèi)部表示和外部表示。內(nèi)部的屬性與行為的捆綁,封裝之后
5、對于外部用戶透明,用戶通過對象外部表示即界面(interface)認(rèn)識對象并與之通信聯(lián)系。對象界面實際上是若干個外部接口,它對外部開放并為外部所見,但屏蔽了內(nèi)部細(xì)節(jié),即具有隱蔽性(hiddening)。對象隱蔽的意義在于外部用戶只需掌握簡單的對象界面而不需了解復(fù)雜的內(nèi)部屬性與行為,復(fù)雜處理簡單化,方便了用戶關(guān)于對象的認(rèn)識與操作。,10.1 對象與類,10.1.1 對象,9,(3)穩(wěn)定性 對象內(nèi)部的對象行為建立在對象屬性之上,即行為服務(wù)于屬性或行為依賴于屬性,這中在對象內(nèi)部建立起的以屬性為核心并以行為為附屬的穩(wěn)定實體特性稱為對象的穩(wěn)定性(stationary)。如對于樹具有樹葉、樹干、樹莖和樹根
6、等屬性,只有對應(yīng)于這些屬性才會有吸收地面水分(樹根)、光合作用(樹葉)及輸送養(yǎng)分(樹莖)等行為,這些構(gòu)成了以樹的屬性為核心的穩(wěn)定實體。,10.1 對象與類,10.1.1 對象,10,消息(message)是對象之間的聯(lián)系信息。由于對象的封裝性和隱蔽性,對象的消息僅僅作用于對象界面,然后再通過界面進(jìn)一步作用于對象內(nèi)部。 消息的作用 請求對象為其服務(wù);向?qū)ο髠鬟f消息并對對象操作;反饋服務(wù)結(jié)果。 消息的組成 接收者:表示消息所施加作用的對象;操作要求:消息對對象的造作要求;操作參數(shù):消息行使操作時作需要的外部數(shù)據(jù)。,10.1 對象與類,10.1.2 消息,11, 消息發(fā)送與接收 每個對象都可以發(fā)送和
7、接收若干消息。面向?qū)ο髷?shù)據(jù)模型中的“消息”與計算機(jī)網(wǎng)絡(luò)中傳輸?shù)南⒑x不同。它是指對象之間的操作請求的傳遞,而不考慮操作實現(xiàn)細(xì)節(jié)。,10.1 對象與類,10.1.2 消息,12,消息中僅包含發(fā)送者的要求,它告訴接收者要完成哪些處理,但并不指示接收者如何完成。消息由接收者解釋,并選擇所需操作。一個對象可以接收不同形式與內(nèi)容的多個消息,同時,相同形式的消息也可發(fā)往不同對象。不同對象對形式相同的消息可有不同解釋并完成不同操作。消息在提供對象使用時應(yīng)規(guī)定的格式稱為消息協(xié)議。,10.1 對象與類,10.1.2 消息,13,例 設(shè)一個對象A要求對象B完成其中的某種操作,則只需向?qū)ο驜發(fā)送一個消息即可。B接
8、收到這個消息后,根據(jù)消息模式找到與之匹配的方法,執(zhí)行該方法后將執(zhí)行的結(jié)果又以消息的形式發(fā)送給對象A。,10.1 對象與類,10.1.2 消息,14,10.1 對象與類,10.1.2 消息,15,類(Class)是對具有共同屬性和方法的對象全體的概括描述,它相當(dāng)于關(guān)系模型中的關(guān)系模式。類給出了屬于其全部對象屬性與行為的抽象定義,類中對象僅是類定義中的一個實體,即對象實例。學(xué)生是一個類,一個具體學(xué)生,例如John就是學(xué)生類中一個對象實例。與關(guān)系模型需要首先描述關(guān)系模式類似,對象模型也首先需要抽象描述具有共同屬性的對象的類,按照類來定義屬性和方法,從而避免對每個對象一一重復(fù)定義。查詢操作等方法也定義
9、在類上。,10.1 對象與類,10.1.3 類,16,類概念簡化了人們對客觀世界的認(rèn)識,眾多復(fù)雜對象因為有了類而簡單清晰,人們可以對屬于類的全體對象進(jìn)行統(tǒng)一研究而不必對每個對象做個別重復(fù)討論。類可有統(tǒng)一界面,此時,消息不僅作為對象間通信工具,還可作為類之間通信工具。類也具有封裝性、隱蔽性和穩(wěn)定性,在原理分析上,類取代對象成為面向?qū)ο蠓椒ㄖ袑嶋H研究與討論的基本抽象單位。,10.1 對象與類,10.1.3 類,17,類間基本關(guān)系可分為繼承關(guān)系、組合關(guān)系和通信關(guān)系(消息)三種情形。繼承關(guān)系和組合關(guān)系是類之間的兩個基本關(guān)系,反映的是類與類之間靜態(tài)聯(lián)系;類之間類似于對象之間“消息”那樣的通信關(guān)系反映的是
10、類與類之間的動態(tài)聯(lián)系,下面主要討論類的繼承關(guān)系。,10.1 對象與類,10.1.3 類,18,(1)類繼承基本概念 類與類之間的層次結(jié)構(gòu)重要特點之一就是繼承(inheritance)。繼承反映一個類能夠自動繼承其它某些類所具有的屬性和方法。這是面向?qū)ο髷?shù)據(jù)模型中避免重復(fù)定義的一個重要機(jī)制。繼承性比較自然地體現(xiàn)了類之間的“A is B”聯(lián)系,它表示A中對象也是B中對象,但A中對象也具有B中對象所不具有的屬性或方法。,10.1 對象與類,10.1.3 類,19,此時,類A是類B的子類(subclass),類B是類A的超類(superclass).一個子類可以有一個或多個超類,一個超類也可以有一個或
11、多個子類,這樣形成了類與類之間一種基本層次結(jié)構(gòu)。,10.1 對象與類,10.1.3 類,20,如果子類僅限于繼承超類中的屬性和方法,則定義子類就失去了意義。子類除了能繼承超類中的屬性和方法外,還可用增加和取代的途徑定義子類所具有的特殊屬性和方法。所謂增加就是在子類中定義新的屬性和方法;所謂取代就是在子類中以新的內(nèi)容重新定義超類中已有的屬性和方法。,10.1 對象與類,10.1.3 類,21,抽象類(abstract class)是一種不能建立實例的類。抽象類將有關(guān)的類組織在一起,抽象出一個公共的超類,其它子類都從這個超類派生出來。通常一個抽象類只是描述了與這個類有關(guān)的方法接口或者方法的部分實現(xiàn)
12、,而具體的實現(xiàn)則在一個或幾個子類中定義。 抽象類一般用于定義一種協(xié)議或概念。,10.1 對象與類,10.1.3 類,22,(2)類繼承基本特性 類繼承通常具有下面的四個基本性質(zhì)。傳遞性 設(shè)有A,B,C三個類,其種類C繼承類B,而類B繼承類A,此時必有類C繼承類A。例如動物、哺乳動物與靈長類動物均為類,而其中靈長類動物繼承哺乳動物,哺乳動物繼承動物,此時必有靈長類動物繼承動物。,10.1 對象與類,10.1.3 類,23,單向性 設(shè)有類B繼承類A,則此時一定不能有類A繼承類B,如研究生類繼承學(xué)生類,但學(xué)生類必不繼承研究生類。傳遞性和單向性說明了類繼承具有單向?qū)哟涡浴?10.1 對象與類,10.1
13、.3 類,24,可重用性 可重用性(reuse)指得是子類可以重用超類的全部資源,同時根據(jù)繼承的傳遞性,它還可以重用繼承鏈上所有超類資源。包含性 繼承除了具有類之間一般與特殊關(guān)系之外,還可以有包含關(guān)系,即靈長類繼承哺乳動物類,此時靈長類必包含在哺乳動物中。類中繼承的包含關(guān)系一般是真包含關(guān)系。,10.1 對象與類,10.1.3 類,25,(3) 多態(tài)性與聯(lián)編 多態(tài)性與聯(lián)編是類繼承的重要技術(shù)特性 多態(tài)性 在類繼承過程中,超類屬性與方法在子類中可以有不同的實現(xiàn)形式、方法與語義,這就稱為多態(tài)性(polymophic)。如在圖2-12所示的類繼承當(dāng)中,動物均有吃食物的行為,但是人類吃食物的實現(xiàn)形式與一般
14、動物不同,人類用工具吃食物,動物則直接用爪子。另外,同是用工具吃食物的方式也有所不同,東方人使用筷子方式,而西方人使用刀叉。,10.1 對象與類,10.1.3 類,26,10.1 對象與類,10.1.3 類,27,多態(tài)性實際上反映了“一名多義”,即一個名字可以具有多種語義。在“圖形”類中,可以定義一個打印(print)方法用于打印圖形。對圖形類中不同實例,其打印過程可以不同。只有當(dāng)消息送到具體對象時,才能確定采用什么打印過程。這即是“打印”方法的多態(tài)性。多態(tài)性的意義在于可以為系統(tǒng)需求分析和設(shè)計帶來帶來方便,提高效率。,10.1 對象與類,10.1.3 類,28, 聯(lián)編 多態(tài)性為對象與屬性、方法
15、之間的復(fù)雜關(guān)系提供處理的方便與靈活性,但在計算機(jī)軟件中實現(xiàn)多態(tài)性需要有聯(lián)編(binding)等功能的支撐。聯(lián)編是將一個程序經(jīng)過編譯而成為可以運行目標(biāo)代碼的過程,即將執(zhí)行代碼聚束在一起的聯(lián)編過程。用傳統(tǒng)語言寫的程序在運行之前即可完成此過程,故稱為靜態(tài)聯(lián)編(static binding)。,10.1 對象與類,10.1.3 類,29,面向?qū)ο笳Z言在程序運行時也可發(fā)生聯(lián)編,稱為動態(tài)聯(lián)編(dynamic binding)。動態(tài)聯(lián)編的意義在于增加程序的簡單性和可擴(kuò)充性,使程序增刪自如,不易出錯,但效率略低于靜態(tài)聯(lián)編。另外,靜態(tài)聯(lián)編運行效率高但修改和維護(hù)工作量大。,10.1 對象與類,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ù)模式 由對象結(jié)構(gòu)以及類間繼承和組合關(guān)系建立起來的數(shù)據(jù)間的組織結(jié)構(gòu)關(guān)系,這種模式結(jié)構(gòu)的語義表示能力遠(yuǎn)比ER方法與EER方法要強(qiáng)。,10.2 數(shù)據(jù)模型,10.2.1 基本概念,31, 數(shù)據(jù)操作 由對象與類中方法建構(gòu)對象數(shù)據(jù)模式上的數(shù)據(jù)操作,這種操作語義強(qiáng)于傳統(tǒng)數(shù)據(jù)模型,如可以構(gòu)做一個圓形類,它的操作可以除查詢、修改外,還可以有圖形的放大/縮小,圖形的移動、圖形的拼接等。在面向?qū)ο髷?shù)據(jù)操作分為兩個部分,一個部分封裝在類之中稱之為方法,另一部分是類之間相互溝通的操作稱之為消息。
17、,10.2 數(shù)據(jù)模型,10.2.1 基本概念,32, 數(shù)據(jù)約束 數(shù)據(jù)約束也是一種方法,即是一種邏輯表示式,可以用類中方法表示模式約束。面向?qū)ο髷?shù)據(jù)一般使用方法或消息表示完整性約束條件,稱為完整性約束方法與完整性約束消息,并在其之前標(biāo)有特殊標(biāo)識。,10.2 數(shù)據(jù)模型,10.2.1 基本概念,33,面向?qū)ο髷?shù)據(jù)模型直觀描述就是面向?qū)ο蠓椒ㄖ械念悓哟谓Y(jié)構(gòu)圖。面向?qū)ο髷?shù)據(jù)模型中的對象由一組變量、一組方法和一組消息組成,其中描述對象自身特性的“屬性”和描述對象間相互關(guān)聯(lián)的“聯(lián)系”也常常統(tǒng)稱為“狀態(tài)”(state),方法就是施加到對象的操作。一個對象的屬性可以另一個對象,另一個對象的屬性還可以同其他對象描
18、述,以此模擬現(xiàn)實世界中復(fù)雜實體。在面向?qū)ο髷?shù)據(jù)模型中,對象的操作通過調(diào)用其自身包含的方法實現(xiàn)。,10.2 數(shù)據(jù)模型,10.2.1 基本概念,34,任何一個對象及屬性都有一種類型,OODM的類型系統(tǒng)有一組自身定義的基本類型和一些用來遞歸地構(gòu)造復(fù)雜類型的構(gòu)成器組成。,10.2 數(shù)據(jù)模型,10.2.2 數(shù)據(jù)類型,35,1)基本類型 主要是基礎(chǔ)類型與“類”類型兩種情形。 基礎(chǔ)類型 通常意義下的系統(tǒng)“內(nèi)置”數(shù)據(jù)類型,如整型、實型、字符串和布爾型等。“類”類型 一個類本身可看做下述構(gòu)造型的一種,是復(fù)雜類型,但仍可將其作為一個整體看成一個基礎(chǔ)型,從而可以像上述型一樣對待和使用。,10.2 數(shù)據(jù)模型,10.2
19、.2 數(shù)據(jù)類型,36,(2)構(gòu)造類型 通過基礎(chǔ)型和“類”型可以使用構(gòu)造器形成數(shù)組(array)、列表(list)、包(bag)、集合(set)各種復(fù)雜型(構(gòu)造型)。需要指出的是,基礎(chǔ)型對象(屬性)的值是“自我定義”的,而構(gòu)造型對象的值是由其部件對象的Oid的相應(yīng)組合確定。,10.2 數(shù)據(jù)模型,10.2.2 數(shù)據(jù)類型,37,例 類“公司”的說明: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,這里有四個屬性和四個方法,例如最后一個方法的名稱為Addsubsidiary,參數(shù)為NC,就是要使之成為目標(biāo)對象公司的子公司的一個Company實例,結(jié)果為插入NCo公司到目標(biāo)對象公司的子公司Subsidiaries中,若不存在NC公司,即它不是Company的一個實例,則啟動觸發(fā)器NoSuchComp進(jìn)行例外處理。這里省略了接收參數(shù),因為它就是本Company類的實例。,10.2 數(shù)據(jù)模型,10.2.2 數(shù)據(jù)類型,39,設(shè)子公司由一個NumSubsi項(當(dāng)前項數(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ā)給本類的一個消息(為另一方法調(diào)用),它檢驗NC是否是類Company中的一個公司。若是,則返回“真”,否則就返回“假”。NC為該方法的形式參數(shù),C為直接接受者(目標(biāo)對象)參數(shù),NumSubsi為存儲當(dāng)前子公司數(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)形式,具有豐富語義,能夠表達(dá)客觀世界復(fù)雜的結(jié)構(gòu)形式。 OODM將數(shù)據(jù)與操作封裝于一體的結(jié)構(gòu)方式,使得OODM中的類具有獨立運作能力的實體,擴(kuò)大了傳統(tǒng)數(shù)據(jù)模型中實體集僅僅是單一數(shù)據(jù)集的不足。,10.2 數(shù)據(jù)模型,10.2.3 與關(guān)系模型比較,42, OODM具有構(gòu)做多種復(fù)雜抽象數(shù)據(jù)類型的能力。數(shù)據(jù)類型是一種類,如實型就是一種類,特式實數(shù)結(jié)構(gòu)與實數(shù)操作所組成的類,因此可用構(gòu)做類的方法構(gòu)做數(shù)據(jù)類型,從而構(gòu)造出實際所需的各種
23、復(fù)雜數(shù)據(jù)類型。例如可用類的方法構(gòu)造元組(tupple)、數(shù)組、隊列、包和集合等,也可以用類的方法構(gòu)造向量空間等類型使數(shù)據(jù)類型大為擴(kuò)充。,10.2 數(shù)據(jù)模型,10.2.3 與關(guān)系模型比較,43, OODM中類層次結(jié)構(gòu)是一種結(jié)構(gòu)化形式,可根據(jù)需要隨時改變結(jié)構(gòu)從而使OODM具有不斷更新結(jié)構(gòu)的能力,這種能力稱為模式演化(schema evaluation)能力。需要說明的是,面向?qū)ο箢悓哟谓Y(jié)構(gòu)圖既是概念模型又是邏輯模型,它將抽象概念與具體數(shù)據(jù)庫實現(xiàn)有機(jī)地融合為一體,這也構(gòu)成了OODM的獨特性質(zhì)。,10.2 數(shù)據(jù)模型,10.2.3 與關(guān)系模型比較,44,10.2 數(shù)據(jù)模型,10.2.3 與關(guān)系模型比較,
24、45,前面已經(jīng)簡要介紹了面向?qū)ο髷?shù)據(jù)庫系統(tǒng)中的基本概念。為了在技術(shù)開發(fā)和實際應(yīng)用中有效使用這些概念,還需要一種數(shù)據(jù)庫語言進(jìn)行必要的表述與刻畫。面向?qū)ο髷?shù)據(jù)庫語言構(gòu)建的基本思路是對現(xiàn)有面向?qū)ο蟪绦蛟O(shè)計語言如C+、Smalltalk等進(jìn)行擴(kuò)展,使之支持相應(yīng)數(shù)據(jù)庫操作。20世紀(jì)80年代成立的ODMG(object data management group),在1993年形成工業(yè)化的OODB標(biāo)準(zhǔn)ODMG1.0,完成了對面面向?qū)ο蟪绦蛟O(shè)計語言C+的數(shù)據(jù)庫功能擴(kuò)充。,10.3 ODMG數(shù)據(jù)操作,46,1997年推出的ODMG2.0, 內(nèi)容涉及到對象模型和對象查詢語言與C+、Smalltalk以及Java
25、之間綁定。2000年再次推出ODMG3.0,對先前版本做了一些修改和補(bǔ)充,基本框架和基本概念未變。,10.3 ODMG數(shù)據(jù)操作,47,ODMG工業(yè)標(biāo)準(zhǔn)對C+的擴(kuò)展主要包括C+對象定義語言(object definition language,ODL)和C+對象操作語言(object Manipulate language,OML),其中,OML又分為對象查詢語言(OQL)和對象控制語言(OCL)。ODMG工業(yè)標(biāo)準(zhǔn)中的對象數(shù)據(jù)模型主要包括有下述5個核心概念:,10.3 ODMG數(shù)據(jù)操作,48, 對象和文字 對象和文字是面向?qū)ο髷?shù)據(jù)建模的基本原語。每個對象有一個唯一標(biāo)識符,文字(literal)沒
26、有標(biāo)識符。對象標(biāo)識符在對象整個生命周期中都有效,即無論對象是存儲在外存中還是在內(nèi)存中,標(biāo)識符都始終有效。對象作為基本數(shù)據(jù)結(jié)構(gòu),是存儲和操作的基礎(chǔ)單元。,10.3 ODMG數(shù)據(jù)操作,49, 類型 對象和文字都可以被劃分為類型,同一類型(type)的對象或文字具有相同的狀態(tài),對象可以稱為類型的實例。 狀態(tài) 對象的狀態(tài)可以通過一組性質(zhì)定義。性質(zhì)(property)可以分為兩種:對象屬性(attribute)和對象之間聯(lián)系(relationship)。,10.3 ODMG數(shù)據(jù)操作,50, 操作 對象行為可以通過一組操作來定義。操作(operation)具有輸入和輸出參數(shù),并且可以返回特定類型的結(jié)果。
27、ODL 利用ODL定義對象數(shù)據(jù)管理系統(tǒng)的模式,它所存儲的對象都是模式中定義類型的實例,即對象,這些對象可以供多個應(yīng)用程序共享。,10.3 ODMG數(shù)據(jù)操作,51,另外需要說明的是,由于對象本身是狀態(tài)(屬性和對象間聯(lián)系)與行為(操作或方法)的封裝體,因此在ODMG框架內(nèi),相應(yīng)數(shù)據(jù)操作主要是數(shù)據(jù)的查詢,而數(shù)據(jù)更新(插入、刪除和修改)由于屬于對象行為范疇,并不顯式的表現(xiàn)出來,而是通過類型創(chuàng)建中的行為定義完成。下面主要介紹面向?qū)ο蟮臄?shù)據(jù)定義和數(shù)據(jù)查詢。,10.3 ODMG數(shù)據(jù)操作,52,1)接口和類的創(chuàng)建例2-3 下述語句創(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,說明 在上述類型說明的定義語句中,接口employee中定義了操作calculate-paycheck,類salaried-employee和類h
30、ourly-employee,可以根據(jù)具體情況對接口employee中操作calculate-paycheck進(jìn)行修改。另外,也允許對行為進(jìn)行多重繼承,即一個子類型可以從不同的超類型中繼承多個具有相同名稱、不同參數(shù)的操作。,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,56,ODMG標(biāo)準(zhǔn)規(guī)定,一個接口和其所有實現(xiàn)的結(jié)合稱為類型,而一個接口和其某種實現(xiàn)的結(jié)合稱為類。因此,“類型”是獨立于實現(xiàn)的,而“類”是依賴于實現(xiàn)的,即類型的抽象級別要比類高。只有當(dāng)一個類型只有一種實現(xiàn)時,類型和類才是等同的。正是由于類型包含類,所以在ODL和OQL中,類型使用很普遍,而類只用于特定情況。,10.3 ODM
31、G數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,57,在ODMG ODL中,面向?qū)ο髷?shù)據(jù)庫模式被定義為一系列類(class)的集合。對于每一個類可以說明類的外延(extent),外延的意義在于表示當(dāng)前對象集合的一個名稱,面向?qū)ο髷?shù)據(jù)模型種的“類”與“外延”類似于關(guān)系數(shù)據(jù)模型中“關(guān)系模式”和“關(guān)系實例”。,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,58,2)對象的創(chuàng)建類和接口創(chuàng)建類似于關(guān)系模式創(chuàng)建;而對象創(chuàng)建則類似于關(guān)系模式中數(shù)據(jù)創(chuàng)建。在ODMG中,對象可以分為聚集對象和原子對象。原子對象就是“用戶自定義對象”,具有各種不同的復(fù)雜情形,需要用戶通過接口定義、類定義等完成創(chuàng)建過程;而聚集對象相對比較
32、整齊,根據(jù)ODMG標(biāo)準(zhǔn),通常是使用為不同聚集了類型定義的一種特殊接口類型工廠對象(factory object)來創(chuàng)建聚集對象,即是說通過“工廠對象”接口定義中的生成函數(shù)來創(chuàng)建聚集對象。,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,59,例10-4 設(shè)有下述語句表示的ODMG標(biāo)準(zhǔn)中一個工廠對象接口。Interface ObjectFactoryObject new();通過該工廠對象接口,可以為用戶創(chuàng)建聚集對象如下: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,說明 上述工廠接口“ObjectFactory”只有一個操作new(),它返回一個帶有對象標(biāo)識OID的新對象。新創(chuàng)建的“DateFactory”接口繼承該接口生成函數(shù)“new()”,就可以為每個用戶定義的原子對象創(chuàng)建它們自己的工廠接口,并且可以針對每種新對象實現(xiàn)不同的new()操作。例如,給
34、定一個DateFactory接口,它還可以有其他一些操作:calendar-date用來創(chuàng)建一個新的日期,current用來創(chuàng)建一個值為當(dāng)前日期的對象。,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,62,對象查詢語言O(shè)QL是以面向?qū)ο竽P蜑榛A(chǔ)的類SQL查詢語言,允許使用傳統(tǒng)SELCET查詢語句來書寫表達(dá)式。OQL沒有提供顯式刪除和修改操作,這些基本數(shù)據(jù)操作由類型定義中的操作完成。在“collection”和“structure”中,如果是由類型組成,則用“”表示,如果是用文字組成,則用“()”表示。,10.3 ODMG數(shù)據(jù)操作,10.3.1 數(shù)據(jù)創(chuàng)建,63,例 10-5 在大學(xué)數(shù)據(jù)庫
35、中,用OQL的SELECT語句可以得到如下查詢操作:查詢大學(xué)中授課門數(shù)超過2門的教師,要求顯示學(xué)校名稱和教師姓名,顯示時屬性名為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é)中教師開設(shè)課程的課程名:SELECT DISTINCT C.cnameFROM universities U,U.staff F,F(xiàn).teach CWHERE U.city = guangzhou;說明 關(guān)鍵字DISTINCT消除了結(jié)果中重復(fù)部分,此時查詢結(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,說
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 文化旅游產(chǎn)品市場的開發(fā)與銷售策略探討
- 個人信息安全及網(wǎng)絡(luò)保護(hù)知識普及
- 2025至2030中國彈簧式無針噴油器行業(yè)項目調(diào)研及市場前景預(yù)測評估報告
- 學(xué)生看衛(wèi)國戍邊英雄紀(jì)錄片心得體會
- 2025至2030中國自動鋼化玻璃行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國自動揀選機(jī)行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國腿部定位墊行業(yè)市場深度研究及發(fā)展前景投資可行性分析報告
- 2025至2030中國脫鹽塔行業(yè)發(fā)展趨勢分析與未來投資戰(zhàn)略咨詢研究報告
- 2025至2030中國脂肪醇烷氧基化物行業(yè)市場占有率及投資前景評估規(guī)劃報告
- 2025至2030中國膠輪地鐵行業(yè)產(chǎn)業(yè)運行態(tài)勢及投資規(guī)劃深度研究報告
- 軍標(biāo)類型整理文檔
- 山東中醫(yī)藥大學(xué)2020-2021學(xué)年內(nèi)科護(hù)理學(xué)試題及答案1
- 公司制成檢驗記錄表
- DB32T 4174-2021 城市居住區(qū)和單位綠化標(biāo)準(zhǔn)
- 基本原理與性能特點多自由度電磁軸承課件
- Q∕SY 1836-2015 鍋爐 加熱爐燃油(氣)燃燒器及安全聯(lián)鎖保護(hù)裝置檢測規(guī)范
- 北京輸變電工程標(biāo)準(zhǔn)工藝應(yīng)用圖冊(圖文并茂)
- 儀器使用記錄表
- 石河子大學(xué)化學(xué)化工學(xué)院學(xué)院綜合測評方案-理學(xué)院
- 《汽車電工電子技術(shù)》全套教案(完整版)
- 國家職業(yè)技能標(biāo)準(zhǔn) (2021年版) 嬰幼兒發(fā)展引導(dǎo)員
評論
0/150
提交評論