對象數(shù)據(jù)庫系統(tǒng)詳述_第1頁
對象數(shù)據(jù)庫系統(tǒng)詳述_第2頁
對象數(shù)據(jù)庫系統(tǒng)詳述_第3頁
對象數(shù)據(jù)庫系統(tǒng)詳述_第4頁
對象數(shù)據(jù)庫系統(tǒng)詳述_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第23章 對象數(shù)據(jù)庫系統(tǒng)23.1 研究動機示例23.2 ORDBMS23.3 OODBMS23.4 OODBMS和ORDBMS的比較第23章 對象數(shù)據(jù)庫系統(tǒng)n對象數(shù)據(jù)庫系統(tǒng)兩個發(fā)展方向面向?qū)ο蟮臄?shù)據(jù)庫系統(tǒng)目標(biāo)是針對復(fù)雜對象扮演核心角色的應(yīng)用領(lǐng)域,這種方法受面向?qū)ο蟮木幊陶Z言的影響。對象數(shù)據(jù)庫管理組開發(fā)了新的標(biāo)準:對象數(shù)據(jù)模型(ODM)和對象查詢語言(OQL)。對象關(guān)系數(shù)據(jù)庫系統(tǒng)擴展的關(guān)系型數(shù)據(jù)庫系統(tǒng)。SQL:1999擴展了SQL標(biāo)準以支持數(shù)據(jù)的對象關(guān)系模型。nRDBMSnOODBMSnORDBMS23.1 研究動機示例23.1.1 新的數(shù)據(jù)類型SQL:1999 DDL語句描述的部分Dinky的

2、ORDBMS模式,與傳統(tǒng)關(guān)系系統(tǒng)的DDL有一些重要差別,它們突出了ORDBMS的新的數(shù)據(jù)建模能力。CREAT TABLE Frames(framno integer,image jpeg-image,category integer);(2)CREAT TABLE Categories(cid integer ,name text,lease-price float,comments text);(3)CREAT TYPE theater-t ASROW(tno integer,name text,address text,phone text) ;(4)CREAT TABLE Theater

3、s OF theater-t(5)CREAT TABLE Nowshowing(film integer,theater ref(theater-t) with scope theaters,start date,end date);(6) CREAT TABLE Films(filmno integer,title text,stars setof(text),director text,budget float );(7)CREAT TABLE Countries(name text, boundary polygon,population integer,language text);這

4、一列值只能引用第4行定義的theaters表中的行(一個給定的REF類型必須與一個特定的表相關(guān)聯(lián))23.1.2 操縱新數(shù)據(jù)類型例1(P574) Clog 公司想租用一個Herbet 和日出圖案的圖像,并組合成包裝盒。 類SQL語法描述形式,一個用于查找可能需要的圖像和它們的租借價格的查詢。SELECT F.frameno, thumbnail(F.image), C.lease-priceFROM Frames F, Categories CWHERE F.category=C.cid AND is-sunrise(F.image) AND Is-herbert(F.image) thumbn

5、ail方法產(chǎn)生一個輸入圖像的縮略圖。 Is-sunrises方法是一個分析圖像的布爾函數(shù),如果圖像包含一個日出圖案返回真。 Is-herbert方法圖像包含Herbert的圖形時返回真。結(jié)果產(chǎn)生一個圖形禎的代碼號,圖像縮略圖和所有包含Herbert和日出圖形的價格。23.1.2 操縱新數(shù)據(jù)類型例2(P575) 在Andorra方圓100公里內(nèi)正在放映Herbert電影的電影院名字。SELECT N.theatername, N.theateraddress,F.titleFROM Nowshowing N, Film F, Countries CWHERE N.film=F.filmno AN

6、D Overlaps(C.boundary,radius(N.theateraddress,100) AND C.name=Andorra AND HerbertF.stars(5)行 Nowshowing表中的theater屬性是對另一個表中的一個對象的引用,包含屬性name,address和phone.這個對象引用支持符號N.theatername和N.theateraddress.每個符號都指Nowshowing表中行N引用的theater-t對象的屬性。(6)Films表的stars屬性是每個電影中明星名字的集合Radius方法返回的第一參數(shù)為圓心,第二參數(shù)為半徑的圓。 overlap

7、 測試空間重疊關(guān)系。23.2 對象關(guān)系數(shù)據(jù)庫系統(tǒng)23.2.1 面向?qū)ο髷?shù)據(jù)模型面向?qū)ο髷?shù)據(jù)模型23.2.2 對象對象-關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫23.2.3 小結(jié)小結(jié)23.2.1 面向?qū)ο髷?shù)據(jù)模型 OO模型的核心概念模型的核心概念 類層次類層次(結(jié)構(gòu)結(jié)構(gòu)) 繼承繼承 對象的嵌套對象的嵌套 OO模型的核心概念1.對象n定義:對象是由一組數(shù)據(jù)結(jié)構(gòu)和在這組數(shù)據(jù)結(jié)構(gòu)上的操作的程序代碼封裝起來的基本單位。n組成部分n屬性(Attribute)集合n屬性描述對象的狀態(tài)、組成和特性n方法(Method)集合n描述了對象的行為特性O(shè)O模

8、型的核心概念(續(xù))2. 對象標(biāo)識OID(Object IDentifier)n概念:面向?qū)ο髷?shù)據(jù)庫中的每個對象都有一個唯一的不變的標(biāo)識稱為對象標(biāo)識(OID) n特點:n永久持久性 n獨立于值的、系統(tǒng)全局唯一的OO模型的核心概念(續(xù))3. 封裝(Encapsulation)n每一個對象是其狀態(tài)與行為的封裝 n封裝是對象的外部界面與內(nèi)部實現(xiàn)之間實行清晰隔離的一種抽象,DBMS不需要知道一個ADT的數(shù)據(jù)是如何存儲的,也不需要知道ADT的方法是如何工作的。只需要知道能獲得什么方法,以及方法的輸入輸出類型。這種隱藏ADT內(nèi)部細節(jié)的方法稱為封裝。n對象封裝之后查詢屬性值必須通過調(diào)用方法 OO模型的核心概念

9、(續(xù))4. 類(Class)n對象類對象類(簡稱類):共享同樣屬性和方法集的所有對象構(gòu)成了一個對象類n實例實例:一個對象是某一類的一個實例(instance)23.2.1 面向?qū)ο髷?shù)據(jù)模型 OO模型的核心概念模型的核心概念 類層次類層次(結(jié)構(gòu)結(jié)構(gòu)) 繼承繼承 對象的嵌套對象的嵌套類層次(結(jié)構(gòu))(續(xù))n教員、行政人員、工人中只有本身的特殊屬性和方法n同時它們又繼承教職員工類和人的所有屬性和方法n邏輯上它們具有人、教職員工和本身的所有屬性和方法 圖15.1 學(xué)校數(shù)據(jù)庫的類層次結(jié)構(gòu)圖 類層次(結(jié)構(gòu))(續(xù))n超類/子類之間的關(guān)系體現(xiàn)了“I

10、S A”的語義n超類是子類的抽象(Generalization)或概括n子類是超類的特殊化(Specialization)或具體化n類層次可以動態(tài)擴展,一個新的子類能從一個或多個已有類導(dǎo)出 23.2.1 面向?qū)ο髷?shù)據(jù)模型 OO模型的核心概念模型的核心概念 類層次類層次(結(jié)構(gòu)結(jié)構(gòu)) 繼承繼承 對象的嵌套對象的嵌套 繼承n單繼承:一個子類只能繼承一個超類的特性(包括屬性和方法)n層次結(jié)構(gòu)圖是一棵樹 n多重繼承:一個子類能繼承多個超類的特性n層次結(jié)構(gòu)圖是一個帶根的有向無回路圖 繼承(續(xù))n多重繼承 具有多繼承的類層次結(jié)構(gòu)

11、圖 繼承(續(xù))n繼承性的優(yōu)點n第一,建模的有力工具,提供了對現(xiàn)實世界簡明而精確的描述n第二,提供了信息重用機制 n子類與超類的沖突n子類在定義自己特殊屬性和方法時可能與繼承下來的超類的屬性和方法發(fā)生沖突n由系統(tǒng)解決23.2.1 面向?qū)ο髷?shù)據(jù)模型 OO模型的核心概念模型的核心概念 類層次類層次(結(jié)構(gòu)結(jié)構(gòu)) 繼承繼承 對象的嵌套對象的嵌套 對象的嵌套n對象嵌套:n一個對象的屬性可以是一個對象,這樣對象之間產(chǎn)生一個嵌套層次結(jié)構(gòu) n設(shè)Obj1和Obj2是兩個對象。如果Obj2是Obj1的某個屬性的值,稱Obj2屬于Obj1

12、,或Obj1包含Obj2。n復(fù)雜對象 Obj1n子對象 Obj2n嵌套層次結(jié)構(gòu)對象的嵌套(續(xù))汽車的嵌套層次圖 對象的嵌套(續(xù))n對象嵌套層次結(jié)構(gòu)和類層次結(jié)構(gòu)形成了對象橫向和縱向的復(fù)雜結(jié)構(gòu)n各種類之間具有層次結(jié)構(gòu)n某一個類內(nèi)部也具有嵌套層次結(jié)構(gòu) 關(guān)系模型與OO模型的比較表15.1 關(guān)系數(shù)據(jù)模型與OO模型的比較內(nèi)容關(guān)系數(shù)據(jù)模型面向?qū)ο髷?shù)據(jù)模型基本數(shù)據(jù)結(jié)構(gòu)二維表類數(shù)據(jù)標(biāo)識符碼OID靜態(tài)性質(zhì)屬性屬性動態(tài)行為關(guān)系操作方法抽象數(shù)據(jù)類型無有封裝性無有數(shù)據(jù)間關(guān)系主外碼聯(lián)系,數(shù)據(jù)依賴 繼承、組合模式演化能力弱強23.2 對象關(guān)系數(shù)據(jù)庫系統(tǒng)23.2.1 面向?qū)ο髷?shù)據(jù)模型面向?qū)ο髷?shù)據(jù)模型23.2.2 對象對象-關(guān)

13、系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫23.2.3 小結(jié)小結(jié)23.2.2 對象-關(guān)系數(shù)據(jù)庫 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的關(guān)系數(shù)據(jù)類型對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的關(guān)系數(shù)據(jù)類型 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的對象類型及其定義對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的對象類型及其定義 23.2.2.引用類型引用類型(Reference Type) 繼承性繼承性 子表和超表子表和超表對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的關(guān)系數(shù)據(jù)類型n擴展的類型:nLOBnBOOLEANn集合類型ARRAYn用戶定義的DISTINCT類型等n面向?qū)ο蟮臄?shù)據(jù)類型n行類型ROW TYPEn抽象數(shù)據(jù)類型(Abstra

14、ct Data Type) ORDBS中擴展的關(guān)系數(shù)據(jù)類型(續(xù))1.大對象LOB(Large OBject )類型nLOB可存儲多達十億字節(jié)的串。nLOB分類n二進制大對象BLOB(Binary Large OBject)nBLOB用于存儲音頻、圖像數(shù)據(jù)n字符串大對象CLOB(Character Large OBject)。nCLOB用于存儲長字符串?dāng)?shù)據(jù) ORDBS中擴展的關(guān)系數(shù)據(jù)類型(續(xù))2. BOOLEAN類型 n布爾類型,支持3個真值:true、false和unknownn操作符:NOT、AND、OR、EVERY、ANY 例如 WHERE EVERY(QTY200) 或WHERE ANY

15、(QTY200)nQTY列為空值:返回unknown;nQTY列為非空:n當(dāng)該列的每一個值都使(QTY200)為true時,EVERY返回true,否則為false;n當(dāng)該列的每一個值都使(QTY200)為false時,ANY返回false,否則為true。ORDBS中擴展的關(guān)系數(shù)據(jù)類型(續(xù))3.集合類型(Collection Type)ARRAY n相同類型元素的有序集合稱為數(shù)組ARRAYnSQL3新增的集合類型n允許在數(shù)據(jù)庫的一列中存儲數(shù)組nSQL3的數(shù)組只能是一維的n數(shù)組中的元素不能再是數(shù)組ORDBS中擴展的關(guān)系數(shù)據(jù)類型(續(xù))例2CREATE TABLE SALES(ITEM_NO CH

16、AR(20),/*商品號*/QTY INTEGER ARRAY12, /*整數(shù)數(shù)組,存放銷售額*/PRIMARY KEY(ITEM_NO) );ORDBS中擴展的關(guān)系數(shù)據(jù)類型(續(xù))n向SALES表插入一個元組: INSERT INTO SALES(ITEM_NO,QTY)VALUES (T-shirt2000,ARRAY200,150,200,100,50,70, 80,200,10,20,100,200);n查找三月份銷售額大于100的商品號: SELECT ITEM_NO FROM SALES WHERE QTY3100;ORDBS中擴展的關(guān)系數(shù)據(jù)類型(續(xù))4. DISTINCT類型 nS

17、QL3新加了一種DISTINCT類型 n定義DISTINCT數(shù)據(jù)類型語法 CREAT TYPE AS FINAL ;ORDBS中擴展的關(guān)系數(shù)據(jù)類型(續(xù))n沒有使用DISTINCT類型n例如,職工的智商字段(IQ)和鞋號字段(SHOE_SIZE)定義成INTEGER類型nWHERE SHOE_SIZE IQORDBS中擴展的關(guān)系數(shù)據(jù)類型(續(xù))n使用DISTINCT類型n重新定義這兩字段類型nCREAT TYPE SHOE_SIZE_TYPE AS INTEGER FINAL;nCREAT TYPE IQ_TYPE AS INTEGER FINAL;nSHOE_SIZE_TYPE和IQ _TYPE

18、成為兩種不同的數(shù)據(jù)類型 表達式:WHERE SHOE_SIZE IQ 是非法的n如果在定義類型時設(shè)置了選項, 下面用法也是合法的: WHERE MY_SHOE_SIZE CAST (MY_IQ AS SHOE_SIZE) 23.2.2 對象-關(guān)系數(shù)據(jù)庫 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的關(guān)系數(shù)據(jù)類型對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的關(guān)系數(shù)據(jù)類型 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的對象類型及其定義對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的對象類型及其定義 參照類型參照類型(Reference Type) 繼承性繼承性 子表和超表子表和超表ORDBS中擴展

19、的對象類型及其定義n在ORDBMS中,類型(TYPE)具有類(CLASS)的特征,可以看成類1.行對象與行類型行對象與行類型n定義行類型(ROW TYPE) : CREATE ROW TYPE ();ORDBS中擴展的對象類型及其定義(續(xù))n創(chuàng)建行類型例3 CREATE ROW TYPE Person_type (pnoNUMBER, nameVARCHAR2(100), addressVARCHAR2(100) ); ORDBS中擴展的對象類型及其定義(續(xù))n創(chuàng)建基于行類型的表 CREATE TABLE OF ;例4 CREATE TABLE person_extent OF Person_

20、type (pno PRIMARY KEY );ORDBS中擴展的對象類型及其定義(續(xù))2.列對象與對象類型列對象與對象類型 n可以創(chuàng)建一個對象類型,表的屬性可以是該對象類型。n創(chuàng)建列對象語句如下: CREATE TYPE AS OBJECT ();ORDBS中擴展的對象類型及其定義(續(xù))例5 CREATE TYPE address_objtyp AS OBJECT (streetVARCHAR2(50), cityVARCHAR2(50) ); CREATE TYPE name_objtyp AS OBJECT (first_nameVARCHAR2(30), last_nameVARCHA

21、R2(30) ) ;ORDBS中擴展的對象類型及其定義(續(xù))n創(chuàng)建表,定義其中的屬性是對象類型例6 CREATE TABLE people_reltab (Id NUMBER(10), name_obj name_objtyp, address_obj address_objtyp); ORDBS中擴展的對象類型及其定義(續(xù))3. 抽象數(shù)據(jù)類型(Abastract Data Type,ADT)n概念:SQL3允許用戶創(chuàng)建指定的帶有自身行為說明和內(nèi)部結(jié)構(gòu)的用戶定義類型稱為抽象數(shù)據(jù)類型 n定義ADT的一般形式為 CREATE TYPE ( 所有屬性名及其類型說明, 定義該類型函數(shù)(方法);ADT的

22、特點(1) ADT的屬性定義和行類型的屬性定義類同。(2) 在創(chuàng)建ADT的語句中,通過用戶定義的函數(shù)比較對象的值。(3) ADT的行為通過方法(methods)、函數(shù)(functions)實現(xiàn)。(4) SQL3要求抽象數(shù)據(jù)類型是封裝的,而行類型則不要求封裝。(5) ADT可以參與類型繼承23.2.2 對象-關(guān)系數(shù)據(jù)庫 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的關(guān)系數(shù)據(jù)類型對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的關(guān)系數(shù)據(jù)類型 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的對象類型及其定義對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的對象類型及其定義 參照類型參照類型(Reference Type)

23、繼承性繼承性 子表和超表子表和超表 參照類型(Reference Type)nREF類型(參照類型、引用類型)n引入的原因: 類型之間可能具有相互參照的聯(lián)系n形式 REF n特點:nREF類型總是和某個特定的類型相聯(lián)系。n它的值是OID參照類型(續(xù))n創(chuàng)建兩個表:Employee和Company,兩表之間存在相互參照關(guān)系,即某個職工在某個公司工作n(1)創(chuàng)建行類型例7 CREATE ROW TYPE employee_type( name VARCHAR(35), age INTEGER ); CREATE ROW TYPE Comp_ type( compna

24、me VARCHAR(20), location VARCHAR(20) ); 參照類型(續(xù))n(2)創(chuàng)建基于行類型的表: CREATE TABLE Employee OF employee_type; CREATE TABLE Company OF Comp_ typen(3)描述參照關(guān)系 CREATE ROW TYPE Employment _type ( employee REF (employee_type), company REF (Comp_ type) ); CREATE TABLE Employment OF Employment _type n表Employment中某一個

25、元組的employee屬性值是某個職工的OIDncompany屬性值是該職工所在公司的OID 23.2.2 對象-關(guān)系數(shù)據(jù)庫 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的關(guān)系數(shù)據(jù)類型對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的關(guān)系數(shù)據(jù)類型 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的對象類型及其定義對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的對象類型及其定義 參照類型參照類型(Reference Type) 繼承性繼承性 子表和超表子表和超表 繼承性nORDBMS應(yīng)該支持繼承性n一般是單繼承性n例14 CREATE TYPE emp_type UNDER person

26、_type AS( emp_id INTEGER, salary REAL ) NOT FINAL;nNOT FINAL:表示不是類層次結(jié)構(gòu)中最后的“葉結(jié)點”nFINAL:該類型是類層次結(jié)構(gòu)的葉結(jié)點23.2.2 對象-關(guān)系數(shù)據(jù)庫 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的關(guān)系數(shù)據(jù)類型對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的關(guān)系數(shù)據(jù)類型 對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的對象類型及其定義對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的對象類型及其定義 參照類型參照類型(Reference Type) 繼承性繼承性 子表和超表子表和超表 子表和超表n超表、子表

27、、子表的子表構(gòu)成一個表層次結(jié)構(gòu)n表層次和類型層次的概念十分相似子表和超表(續(xù))例15 對于下面的類型層次,先定義這些類型TYPE,然后創(chuàng)建基于這些類型的表 類型層次示例 子表和超表(續(xù))CREATE TYPE person /*創(chuàng)建person 類型,根類型*/ (id INTEGER, name VARCHAR(20), birthyear INTEGER, address VARCHAR(40) NOT FINAL; /*NOT FINAL表示可以有子類型*/CREATE TYPE employee /*創(chuàng)建person的子類型employee*/ UNDER person /*類型emp

28、loyee繼承person的屬性*/ (salary INTEGER) /* employee定義自己的屬性*/ NOT FINAL;子表和超表(續(xù))CREATE TYPE executive /*創(chuàng)建employee的子類型executive*/ UNDER employee (bonus INTEGER) FINAL;CREATE TYPE student/*創(chuàng)建person的子類型student */ UNDER person (major VARCHAR(10),wage DECIMAL) FINAL子表和超表(續(xù))例16Department類型和employee具有相互參照的聯(lián)系,使

29、用REF來表示這種聯(lián)系 CREATE TYPE department (ID INTEGER, manager REF(employee), Budget INTEGER); ALTER TYPE employee ADD ATTRIBUTE dept REF(department);子表和超表(續(xù))n定義基于這些類型的基本表和表層次:nCREATE TABLE person_table OF person (name WITH OPTIONS NOT NULL);employee_table是person_table的子表nCREATE TABLE exec_table of executi

30、ve UNDER employee_tablenCREATE TABLE employee_table OF employee UNDER person_table;子表和超表(續(xù))CREATE TABLE student_table OF student UNDER person_table;CREATE TABLE dept_table OF department (manager SCOPE IS employee_table);/ SCOPE IS 用來限定所引用的對象在一個確定的表employee_table的范圍內(nèi)ALTER TABLE employee_table ALTER C

31、OLUMN dept ADD SCOPE IS dept_table;子表和超表(續(xù))n查詢例16所創(chuàng)建的表例17 SELECT name,address FROM person_table WHERE birthyear =1970;/查詢結(jié)果包括了person_table、employee_table、exec_table、student_table表上的所有人子表和超表(續(xù))n關(guān)閉子表的檢索例18 SELECT name,address FROM ONLY person_table WHERE birthyear =1970;/ONLY將檢索的對象限制為指定表中的對象,而不是該表和它的子

32、表中的對象子表和超表(續(xù))nINSERT、DELETE、UPDATE對子表和超表的操作規(guī)則nINSERT:向子表插入一行時一般會在該子表的超表上也插入一行。nDELETE:從表刪除一行時一般會在該表的超表和子表上也刪除相應(yīng)的一行 23.2 對象關(guān)系數(shù)據(jù)庫系統(tǒng)23.2.1 面向?qū)ο髷?shù)據(jù)模型面向?qū)ο髷?shù)據(jù)模型23.2.2 對象對象-關(guān)系數(shù)據(jù)庫關(guān)系數(shù)據(jù)庫23.2.3 小結(jié)小結(jié)23.2.3 小結(jié)nOO模型的基本概念n對象n對象標(biāo)識OIDn封裝n類n對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的關(guān)系數(shù)據(jù)類型n大對象LOBnBOOLEAN類型n集合類型ARRAYnDISTINCT類型小結(jié)(續(xù))n對象關(guān)系數(shù)據(jù)庫系統(tǒng)中擴展的對象類

33、型n行對象與行類型n列對象與對象類型n抽象數(shù)據(jù)類型n關(guān)系對象數(shù)據(jù)庫系統(tǒng)支持n繼承n子表和超表23.3 OODBMS23.3.1 ODMG數(shù)據(jù)模型和ODL nODMG對象數(shù)據(jù)模型對象數(shù)據(jù)庫管理組ODMG標(biāo)準中定義的對象數(shù)據(jù)庫模型,借鑒了面向?qū)ο蟪绦蛟O(shè)計語言和抽象數(shù)據(jù)類型的思想,表達了對象數(shù)據(jù)庫管理系統(tǒng)中的各種語義,以描述對象的特征和行為。該對象模型可以在模式中顯示地說明對象的數(shù)據(jù)成員、對象之間的聯(lián)系、以及對象的操作方法。nODMG對象模型是一種可擴充性很強的數(shù)據(jù)模型,具有繼承性、多態(tài)性以及很強的實體特征的抽象能力,能夠捕捉和描述現(xiàn)實世界中更加豐富的語義。23.3.1 ODMG數(shù)據(jù)模型和ODL n

34、ODMG對象模型主要支持以下概念:數(shù)據(jù)模型的最基本的建模結(jié)構(gòu)是對象。每個對象有一個唯一的標(biāo)示符。Object對象都有一個類型,同一類型的對象具有相同的狀態(tài)狀態(tài)(特征集)和共同的行為行為(操作集)。一個對象是某個類型的實例。(Type)一個對象的狀態(tài)由該對象的特征集來定義和描述,對象的特征可以是對象本身的屬性或與其它對象之間的聯(lián)系。(Property Attribute Relationship)一個對象的行為由一組操作來定義,這些操作可以輸入、輸出參數(shù),并且可以返回特定類型的結(jié)果。利用ODL定義對象數(shù)據(jù)管理系統(tǒng)的模式。它存儲的對象都是模式中定義的類型的實例,即對象,這些對象可以供多個用戶和應(yīng)用

35、共享。23.3.1 ODMG數(shù)據(jù)模型和ODLn對象:n對象標(biāo)示符: n類:數(shù)據(jù)類中具有相同屬性的對象的集合。n類的外延(Extent):類的所有實例構(gòu)成的集合。 如果對象O是類型A的實例,那么它一定是類型A的外延中的元素。 如果對象A是類型B的子類型,A的外延是B的外延的子集。n類層次和繼承:類與類之間的繼承關(guān)系構(gòu)成類的層次結(jié)構(gòu)。子類繼承超類的屬性和方法。n父 B person p1n子 A student st1 A外延是B外延的子集23.3.1 ODMG數(shù)據(jù)模型和ODL屬性 原子類型 結(jié)構(gòu)的類型 ROW ARRAY List of Set of Bag of聯(lián) 系 -聯(lián)系描述對象與同一類或

36、不同類的一個或多個對象的關(guān)系。 逆聯(lián)系-直觀上它是“另一方向”的聯(lián)系。 狀態(tài)23.3.1 ODMG數(shù)據(jù)模型和ODL行為方法方法 應(yīng)用到類的對象上的函數(shù)。 接口(接口(interface) 定義一個類,每個接口可以聲明一個區(qū)間(extent)它是該類的當(dāng)前對象集合的名稱。如果只操作單個對象,則區(qū)間聲明可以省略。例:Interface Movie (extent Movies key movieName) /沒有兩個對象有相同的movieName值 attribute date start; attribute date end; attribute date movieName; relatio

37、nship set ShownAt inverse Theater:nowshowing;/ 一部電影在多個電影院放映nMovie類的數(shù)據(jù)庫對象集合稱為Movies。n“Key”Movie中沒有兩個對象有相同的MovieName值。Interface Theater (extent Theaters key theaterName) /沒有兩個對象有相同的movieName值 attribute string TheaterName; attribute string address; attribute integer ticketPrice; relationship set nowsho

38、wing inverse Movie:shownAt; /一個電影院正在放映多個電影 int numshowing() /該電影院正在放映多少部電影nMovie 的shownAt和Theater的nowshowing聯(lián)系的聲明彼此是互逆的。定義一個聯(lián)系 可通過遍歷路徑的說明來顯示地定義一個聯(lián)系。 遍歷路徑描述了參加聯(lián)系的兩個對象實例間的邏輯連接。 遍歷路徑的是成對進行的,分別用來說明該聯(lián)系中的不同遍歷方向。例:一個教授可以教多門課程,一門課程由某位教授來講授,可以在professor中定義一個teachers遍歷路徑,在course中定義一個is-taught-by遍歷路徑。在兩個遍歷路徑上使

39、用一個inverse子句來指明這兩個遍歷路徑作用在同一個聯(lián)系上。Class Professor :relationship set teaches Inverse Course:is-taught-by; : :;Class Courser :relationship set is-taught-by Inverse Professor:teaches; : :;由遍歷路徑teaches和is-taught-by定義的聯(lián)系是Professor和Course對象間的一個一對多的聯(lián)系,這種基數(shù)是在遍歷說明中進行說明的,一個professor實例通過teaches遍歷路徑與多個Course實例相關(guān)聯(lián)

40、;一個Course實例通過is-taught-by遍歷路徑與單個Professor實例相關(guān)聯(lián)。23.3.2 OQLn國際化標(biāo)準組織對對象的查詢語言O(shè)QL進行了標(biāo)準化。OQL語言的設(shè)計基于以下的原理和假設(shè):OQL依賴于ODMG的對象模型。OQL類似于SQL 92 ,并且對面向?qū)ο蟮母拍钸M行了擴充。 例如:復(fù)雜對象、對象標(biāo)示符、路徑表達式、多態(tài)性、方法調(diào)用、動態(tài)綁定。OQL提供了處理集合對象、包對象、列表對象和數(shù)組對象的基本方法。OQl是一種基于代數(shù)操作,可以自由復(fù)合的函數(shù)式語言。基于同一類型系統(tǒng),能夠在綁定編程語言中調(diào)用OQL查詢。相反,OQL也調(diào)用綁定編程語言的操作。OQL提供對對象的說明性查詢??梢匀菀椎囟xOQL語言的語義。 23.3.2 OQL例1 查找正在放映多于一部電影的電影院以及

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論