面向?qū)ο髷?shù)據(jù)庫及_第1頁
面向?qū)ο髷?shù)據(jù)庫及_第2頁
面向?qū)ο髷?shù)據(jù)庫及_第3頁
面向?qū)ο髷?shù)據(jù)庫及_第4頁
面向?qū)ο髷?shù)據(jù)庫及_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、DBMS分類矩陣分類矩陣n思考:思考:DBMS有哪些不足?有哪些不足?n代價高n性能低n如何取舍?如何取舍?n老子定律:老子定律:殺雞不要用牛刀殺雞不要用牛刀DBMS分類矩陣分類矩陣1234簡單數(shù)據(jù)簡單數(shù)據(jù)復(fù)雜數(shù)據(jù)復(fù)雜數(shù)據(jù)無無查查詢詢有有查查詢詢DBMS分類矩陣分類矩陣n應(yīng)用背景應(yīng)用背景n標(biāo)準(zhǔn)的文本處理系統(tǒng),如vi,word,wps等。n數(shù)據(jù)處理方式為打開一個文件,其內(nèi)容被拷貝到內(nèi)存,然后對它進(jìn)行編輯,定期將內(nèi)存中拷貝保存到磁盤上。沒有查詢需求。n數(shù)據(jù)模型數(shù)據(jù)模型n任意長度的字符序列。nDBMSn文件系統(tǒng)1簡單數(shù)據(jù)簡單數(shù)據(jù) + 無查詢無查詢DBMS分類矩陣分類矩陣n應(yīng)用背景應(yīng)用背景n商務(wù)數(shù)據(jù)處

2、理n具有簡單數(shù)據(jù),表作為一組結(jié)構(gòu)化的記錄集合,每個記錄具有簡單的數(shù)據(jù)類型,如整數(shù)、字符串等。n數(shù)據(jù)模型數(shù)據(jù)模型n二維表nDBMSn關(guān)系型數(shù)據(jù)庫系統(tǒng)2簡單數(shù)據(jù)簡單數(shù)據(jù) + 有查詢有查詢DBMS分類矩陣分類矩陣nDBMS需求需求n查詢語言nSQL-89,SQL-92n客戶工具n幫助程序員建立用于數(shù)據(jù)錄入和顯示的表格n4GL工具:PB,VB,SQL-Formsn性能n事務(wù)管理n安全性/體系結(jié)構(gòu)n安全性要求高,DBMS必須在一個與客戶應(yīng)用分離開的地址空間中運(yùn)行,數(shù)據(jù)庫文件只能由DBMS存取。DBMS分類矩陣分類矩陣n示例示例n為實(shí)驗(yàn)室做規(guī)劃,每個職工安排在一個小方格內(nèi)。create table emp

3、(ename varvhar(30), space polygon; adjacency set-of(emp);space為職工所占據(jù)的小方格塊位置。adjacency為相鄰職工的集合。3復(fù)雜數(shù)據(jù)復(fù)雜數(shù)據(jù) + 無查詢無查詢DBMS分類矩陣分類矩陣職工經(jīng)過一定時期的變動之后,需要重新安排。main()read all emp;compact;write all emp;該程序把職工集合讀進(jìn)來,修正之后再寫回,類似于文本編輯器,沒有查詢,但數(shù)據(jù)十分復(fù)雜。CAD類似于上述處理過程,需要反復(fù)調(diào)試。DBMS分類矩陣分類矩陣n文件系統(tǒng)不適合此類應(yīng)用n裝入數(shù)據(jù)時,需要將標(biāo)識職工的硬盤指針轉(zhuǎn)換為內(nèi)存指針,寫

4、回時,再將內(nèi)存指針轉(zhuǎn)換為磁盤指針,而且內(nèi)存指針是臨時的,不可重用的。需要開發(fā)人員自己來完成。n變量的持久性n在C+中,若有聲明int I,則I是一個臨時變量,在程序?qū)λ跏蓟皼]有值,而程序結(jié)束后它的值就丟失了。n若聲明為persistent int I,則I是持久變量,當(dāng)程序結(jié)束后,它的值自動保存起來,而程序下一次啟動時,它的值自動成為可用的。DBMS分類矩陣分類矩陣n有了持久變量,數(shù)據(jù)在磁盤與主存之間的格式轉(zhuǎn)換,就都成了語言支持系統(tǒng)的事情,程序員只需編寫算法。上例變?yōu)閙ain() compact(); nDBMS需求需求n無查詢需求n性能:n保持非持久版本的性能,即轉(zhuǎn)為持久版本后性能不能

5、下降很多。n安全性/體系結(jié)構(gòu)n追求速度,犧牲安全性。DBMS分類矩陣分類矩陣n例:J=J+1n若J是非持久的,只需1ms或更少時間。n若J是持久的,則該語句就變?yōu)橐粋€更新。如果存儲系統(tǒng)與用戶程序不在同一地址空間中運(yùn)行,那么要處理這個命令就必須進(jìn)行地址空間的切換,導(dǎo)致比非持久的情況慢2個數(shù)量級。于是把持久的存儲系統(tǒng)和用戶程序放在相同的地址空間中運(yùn)行。n操作系統(tǒng)無法區(qū)分用戶程序與存儲系統(tǒng),因此用戶程序可以繞開存儲系統(tǒng),直接通過操作系統(tǒng)來存取整個數(shù)據(jù)庫??蛻舫绦蚩蛻舫绦?DBMSDBMS分類矩陣分類矩陣create table slides(id int,caption document,pictu

6、re photo-CD-image);找出在蘆溝橋20公理以內(nèi)的日落照片。select idfrom slides, Landmarks L, Landmarks Swhere sunset(picture)and contains(caption, L.name)and L.location | S.locationand S.name =“蘆溝橋”4復(fù)雜數(shù)據(jù)復(fù)雜數(shù)據(jù) + 有查詢有查詢DBMS分類矩陣分類矩陣簡單數(shù)據(jù)簡單數(shù)據(jù)復(fù)雜數(shù)據(jù)復(fù)雜數(shù)據(jù)無無查查詢詢有有查查詢詢文件系統(tǒng)文件系統(tǒng)OODBMSORDBMSRDBMS新的數(shù)據(jù)庫應(yīng)用新的數(shù)據(jù)庫應(yīng)用n傳統(tǒng)的數(shù)據(jù)特征傳統(tǒng)的數(shù)據(jù)特征n統(tǒng)一性(Unifor

7、mity):數(shù)據(jù)的結(jié)構(gòu)相似。一個表中所有元組都具有相同的屬性列。n面向記錄(Record Orientation):數(shù)據(jù)項(xiàng)由固定長度的記錄組成。n小數(shù)據(jù)項(xiàng)(Small data Items):每條記錄都很短。n原子字段(Atomic Field):字段內(nèi)部不再有其它結(jié)構(gòu),字段具有原子性(1NF)。新的數(shù)據(jù)庫應(yīng)用新的數(shù)據(jù)庫應(yīng)用n新的數(shù)據(jù)庫應(yīng)用新的數(shù)據(jù)庫應(yīng)用nCAD(Computer-aided Desig)nCAD數(shù)據(jù)依附于某項(xiàng)工程,不但要記錄單個組件的數(shù)據(jù)項(xiàng),還要記錄各組件之間的相互聯(lián)系(構(gòu)成,位置),以及在設(shè)計各階段數(shù)據(jù)的不同版本。nCASE(Computer-Aided Software

8、Engieering)nMultimedia Database新的數(shù)據(jù)庫應(yīng)用新的數(shù)據(jù)庫應(yīng)用n新的數(shù)據(jù)特征新的數(shù)據(jù)特征n大數(shù)據(jù)項(xiàng)n以兆計的一個數(shù)據(jù)項(xiàng)。n結(jié)構(gòu)復(fù)雜n程序模塊、圖形、圖象、文檔、數(shù)字媒體流。n操作特殊n編譯、旋轉(zhuǎn)、播放、排版。RDBMS的局限的局限n表達(dá)能力有限表達(dá)能力有限nRDB的基本結(jié)構(gòu)是二維表,是一種平面結(jié)構(gòu),無法表達(dá)嵌套的信息結(jié)構(gòu)。n在CAD等系統(tǒng)中,嵌套大量存在,如機(jī)器由很多部件構(gòu)成,每個部件又由多個零件構(gòu)成。n嵌套的平面化可以通過模式分解和連接運(yùn)算實(shí)現(xiàn)。n連接在關(guān)系數(shù)據(jù)庫中是十分低效的運(yùn)算。nXML的存儲組織。RDBMS的局限的局限n類型有限類型有限nRDB的類型是系統(tǒng)內(nèi)

9、置的,用戶只能使用固定的幾種。n新的應(yīng)用需要靈活的類型機(jī)制,DBMS應(yīng)該能夠支持用戶定義適合自己應(yīng)用的數(shù)據(jù)類型。n類型:數(shù)據(jù)抽象的一種方式,是一組值的集合以及在這組值上的操作。RDBMS的局限的局限n類型系統(tǒng)的任務(wù)n提供一組內(nèi)在的數(shù)據(jù)類型如整數(shù)、字符等。n提供定義新的數(shù)據(jù)類型的手段數(shù)組:聚合同類型數(shù)據(jù)。結(jié)構(gòu):聚合不同類型數(shù)據(jù)。n類型檢查int x,yx = 10;y = xTomRDBMS的局限的局限n結(jié)構(gòu)與行為的分離結(jié)構(gòu)與行為的分離nRDB中存儲的只是實(shí)體的數(shù)據(jù),而實(shí)體的行為則交由應(yīng)用程序來編碼實(shí)現(xiàn)。n現(xiàn)實(shí)世界中的實(shí)體除了數(shù)據(jù)結(jié)構(gòu)之外,同時還有其自身的行為。如學(xué)生應(yīng)該具有選課的行為。n實(shí)體的

10、行為也是實(shí)體的屬性,應(yīng)當(dāng)同實(shí)體緊密結(jié)合,由應(yīng)用來維護(hù)是不適合的。RDBMS的局限的局限n版本與長事務(wù)版本與長事務(wù)n多版本支持有些應(yīng)用如CAD、CASE,需要表示單個實(shí)體的多個不同時期的版本,以便進(jìn)行比較和重新設(shè)計。要求DBMS能夠支持?jǐn)?shù)據(jù)的多個版本,并建立自然、方便的管理機(jī)制。目前的RDBMS沒有哪一個能夠支持。n長事務(wù)當(dāng)前的有些應(yīng)用需要鎖住某些數(shù)據(jù)一整天甚或幾個星期,以便進(jìn)行復(fù)雜的設(shè)計。這與傳統(tǒng)的短事務(wù)(數(shù)秒或數(shù)分鐘內(nèi)提交)有很大不同。傳統(tǒng)的事務(wù)管理機(jī)制已不再適合這種要求,需要新的數(shù)據(jù)一致性維護(hù)機(jī)制。n只有版本問題解決得好,長事務(wù)的處理才有希望。面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽面向?qū)ο竽P?/p>

11、面向?qū)ο竽P蚽一個對象對應(yīng)著E-R模型中的一個實(shí)體。n對象:結(jié)構(gòu)+行為的封裝單元。面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽對象結(jié)構(gòu)對象結(jié)構(gòu)n變量變量:包含該對象數(shù)據(jù),相當(dāng)于E-R模型中的屬性。n消息消息:當(dāng)欲查詢對象、激活對象、請求對象時,向?qū)ο蟀l(fā)送消息,對象對此做出響應(yīng)。消息可以有零個或多個參數(shù)。 n方法方法:實(shí)現(xiàn)一個消息的代碼段;一個方法返回一個值作為對消息的響應(yīng)。n對象的物理表示只對對象的實(shí)現(xiàn)者是可見的。n消息和方法提供了從外部訪問對象的唯一途徑。面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽消息和方法消息和方法n消息并不意味著物理信號的傳遞,它指的是對象間請求的傳遞??梢詫⑾⒆鳛橐粋€過程來實(shí)現(xiàn)。n方法

12、是一段代碼,其中n只有對象自己的變量才能直接引用。n其它對象的數(shù)據(jù)只能通過發(fā)送消息來引用。n方法可以分為只讀和更新兩種。n示例:職工對象有年薪變量,可以通過向其發(fā)送annual-salary消息來查詢年薪數(shù)額。將該消息實(shí)現(xiàn)為一個方法,不同職工(經(jīng)理、普通職工)年薪計算方法不同,但提供的外部接口是一致的。從而對象內(nèi)部方法的改變不會影響到系統(tǒng)的其它成分。面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽實(shí)體的每一個屬性對應(yīng)著對象中的一個變量和一對消息,其中一個用來讀取消息,另一個用來更新消息。如職工有屬性address,可以表示為:一個address變量一個get-address消息一個set-address消息

13、面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽對象類對象類n許多相似的對象被分組形成一個類;每個這樣的對象稱為類的一個實(shí)例。n一個類中的所有對象有相同的n變量類型n消息接口n方法n對象和類是型與值的區(qū)別。n類類似于E-R模型中的實(shí)體集。面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽類定義實(shí)例類定義實(shí)例class employee /*變量*/string name;string address;int salary; /*消息*/int annual-salary();string get-name();string get-address();面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽繼承繼承n有些類與類之間具有相似性,具

14、有相同的變量和消息。如student有屬性name和age,teacher也有屬性name和age。n每個student 都是一個person,因此student 是person的一個特殊化。n創(chuàng)建類person,student,teacher,其中student與teacher的共性被抽象為類person。n繼承類似于E-R中的特殊化。面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽類層次可以可以用特殊化(ISA)來表示personcustomeremployeesecretaryofficerISAISAn子類繼承父類的屬性teller面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽類層次定義類層次定義class p

15、erson string name;string address;class customer isa person int credit-rating;class employee isa person date start-date;int salary;class officer isa employee int officer-number;string expense-account-number;面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽多重繼承多重繼承personcustomeremployeeofficersecretarytellerfull-time-tellerpart-time

16、-tellerpart-time-secretaryfull-time-secretary有何弊端?面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頿ersoncustomeremployeeofficersecretarytellerfull-time-tellerpart-time-tellerpart-time-secretaryfull-time-secretarypart-timefull-timeDAG面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽語義模糊n當(dāng)同一個變量或方法可以從多個父類中繼承時,由于無法確定該變量或方法是從哪個父類繼承的,就會產(chǎn)生語義模糊。n例如類secretary, teller, fu

17、ll-time, part-time中都定義了變量pay,來代替employee中的salary。在full-time中,pay(010 000)表示年薪,而在 part-time中,pay(020)表示每小時付的薪酬。面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽解決方案以part-time-teller為例,它的父類是teller與part-time。方案一方案一: part-time-teller中同時包含兩個變量,分別命名為teller.pay與part-time.pay。方案二方案二:根據(jù)類teller與part-time的創(chuàng)建時間選擇其一。方案三方案三:強(qiáng)制用戶在類part-time-tell

18、er的定義中顯式地作出選擇。方案四方案四:將出現(xiàn)語義模糊的情況作為異常錯誤來處理。n可以使用多重繼承來對“角色”來建模n學(xué)校數(shù)據(jù)庫中,有person的多個子類,如student, teacher, footballPlayer等,每個對象可以同時屬于這些類中的多個,每個這樣的類別被稱為一個角色,如student.footballPlayer。面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽對象標(biāo)識符(對象標(biāo)識符(OID)n每個對象是類的一個實(shí)例,對象標(biāo)識符唯一標(biāo)識了一個對象。nOID在對象生成時產(chǎn)生,在撤消對象時被注銷。類似于人的身份證,DBTG系統(tǒng)中的DBK。nOID不隨對象值的改變而改變。n兩個具有相同

19、值的對象其OID是不一樣的。nOID可以作為對象的一個字段存儲,也可以在一個對象中引用其它對象的OID。如person的spouse字段就是另一個person的OID。面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽OID生成n值:用碼來標(biāo)識對象,是一種面向值的方法,使對象標(biāo)識具有值依賴性(關(guān)系數(shù)據(jù)庫系統(tǒng))。n名稱:用用戶提供的名稱作為標(biāo)識(文件系統(tǒng))。n內(nèi)置:對象標(biāo)識符可以由系統(tǒng)內(nèi)部自動產(chǎn)生(依賴于特定系統(tǒng)),也可以來自外部(如人的身份證)(面向?qū)ο髷?shù)據(jù)庫系統(tǒng))。n地址:C+通過對象在內(nèi)存空間中地址來區(qū)分對象,但不具有持久性。也不能使用二級存儲器地址來作為對象標(biāo)識符,否則會引起應(yīng)用對數(shù)據(jù)的物理依賴性。面向

20、對象基本概念面向?qū)ο蠡靖拍頽OID示例Person(name, age, children)無OID時:(Susan, 50, (John, 25, )(Peter, 52, (John, 25, )無法判斷Susan與Peter的孩子是否是同一個人。更新復(fù)雜,如John又有孩子時,需要更新多處。有OID時:OID1(Susan, 50, OID3)OID2(Peter, 52, OID3)OID3(John, 25, )面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍頽對象包含對象包含車輪車輪車閘車閘齒輪齒輪車架車架輻條輻條輪框輪框輪胎輪胎閘盒閘盒傳桿傳桿閘線閘線n一個構(gòu)件可以包含其它構(gòu)件。n包含其它對象

21、的對象稱為復(fù)合對象或復(fù)雜對象。面向?qū)ο蠡靖拍蠲嫦驅(qū)ο蠡靖拍顚ο罄^承對象繼承 Vs 對象包含對象包含ABCABCis-ais-part-of類B中的一個對象也是類A中的一個對象,它繼承了類A的所有屬性,同時具有自己的特殊屬性,以及對所繼承的方法提供自己的實(shí)現(xiàn)途徑。類A中的一個對象包含類B中的一個對象。A與B的屬性不必類似,也不必相互繼承對方的屬性。類A中的一個對象只能通過類B的方法來訪問B中的變量。面向?qū)ο蟮恼Z言面向?qū)ο蟮恼Z言如何將面向?qū)ο蟾拍钆c數(shù)據(jù)庫系統(tǒng)結(jié)合起來?n兩條途徑兩條途徑n將面向?qū)ο蟾拍钭鳛楦拍钤O(shè)計階段工具示例n將面向?qū)ο蟾拍罱Y(jié)合到數(shù)據(jù)庫操縱語言中n擴(kuò)展SQL在SQL中增加復(fù)雜類

22、型和面向?qū)ο筇卣?。n持久化程序設(shè)計語言對某種現(xiàn)行的面向?qū)ο蟪绦蛟O(shè)計語言進(jìn)行擴(kuò)展。n3W-Who Will Win?面向?qū)ο蟮恼Z言面向?qū)ο蟮恼Z言n市場前景市場前景SQL3ODL持久化程序設(shè)計語言持久化程序設(shè)計語言n嵌入式嵌入式SQLn宿主語言與數(shù)據(jù)操縱語言之間的類型系統(tǒng)有所不同,由程序員負(fù)責(zé)兩者之間的類型轉(zhuǎn)換。n程序員負(fù)責(zé)編碼實(shí)現(xiàn)數(shù)據(jù)從數(shù)據(jù)庫到內(nèi)存的裝入或?qū)懟?。n持久化程序設(shè)計語言持久化程序設(shè)計語言n對象在數(shù)據(jù)庫中的創(chuàng)建和存儲不必經(jīng)過任何外在的類型轉(zhuǎn)換。n允許在內(nèi)存中操縱對象,不必顯式地從數(shù)據(jù)庫裝入或?qū)懟亍允許編程語言直接操縱數(shù)據(jù)庫中數(shù)據(jù),不必經(jīng)過數(shù)據(jù)操縱語言(如SQL)。持久化程序設(shè)計語言持

23、久化程序設(shè)計語言n持久化程序設(shè)計語言的缺點(diǎn)持久化程序設(shè)計語言的缺點(diǎn)n由于語言的強(qiáng)大的操縱能力,對數(shù)據(jù)庫的安全性更容易造成破壞。n由于語言的復(fù)雜性使得自動的高級優(yōu)化難于實(shí)現(xiàn)。n對說明性查詢語言的支持不夠。持久化程序設(shè)計語言持久化程序設(shè)計語言n對象的持久性對象的持久性將一個瞬態(tài)對象變?yōu)槌志玫牡姆椒ǎ簄(Class)按類持久按類持久:聲明一個類中所有對象都是持久的。簡單但缺乏靈活性,有時一個類中可以同時有瞬態(tài)和持久對象。n(Creation)按創(chuàng)建持久按創(chuàng)建持久:擴(kuò)展創(chuàng)建瞬態(tài)對象的語句來創(chuàng)建持久對象。n(Marking)按標(biāo)志持久按標(biāo)志持久:所有對象被創(chuàng)建為瞬態(tài)的,需要持久的對象在程序結(jié)束前顯式地標(biāo)

24、識為持久的。n(Reference)按引用持久按引用持久:一個或多個對象被顯式地聲明為(根)持久的;其它被根對象引用(直接地或間接地)到的對象被看作是持久的。持久化程序設(shè)計語言持久化程序設(shè)計語言n對象標(biāo)識與指針對象標(biāo)識與指針n持久對象被賦予持久對象標(biāo)識符;瞬態(tài)對象的標(biāo)識符只維持到創(chuàng)建它的程序結(jié)束。n可以用內(nèi)存指針作為對象的標(biāo)識符(C+)。n標(biāo)識的持久程度n(intraprocedure)過程內(nèi)部:標(biāo)識只在單個過程的執(zhí)行期間是持久的(過程內(nèi)的局部變量)。n(intraprogram)程序內(nèi)部:標(biāo)識只在單個程序或查詢的執(zhí)行期間是持久的(程序內(nèi)的全局變量)。n(interprogram)程序之間:標(biāo)

25、識在各個程序的執(zhí)行之間是持久的(磁盤文件記錄指針)。n(persistent)持久的:標(biāo)識的持久性跨越了各個程序的執(zhí)行以及數(shù)據(jù)結(jié)構(gòu)發(fā)重組(數(shù)據(jù)庫對象指針)。持久化程序設(shè)計語言持久化程序設(shè)計語言n持久對象的存儲與訪問持久對象的存儲與訪問如何在數(shù)據(jù)庫中查找對象?n對象名字n擴(kuò)展性差,不適于大數(shù)目對象情況。n對象標(biāo)識符或?qū)ο蟮某志没羔榥不易理解記憶。n存儲對象的集合體,程序通過迭代找到目標(biāo)對象。n對 象 的 集 合 體 本 身 可 以 看 成 是 一 個 集 合 體 類 型集 合 體 類 型(collection type)的對象,如集合、多重集合、列表等。n類區(qū)間(class extent):屬

26、于一個類的所有對象的集合體;一般對擁有可持久對象的類維護(hù)類區(qū)間。持久化持久化C+系統(tǒng)系統(tǒng)nC+無須改變語言本身就可以增加持久化特性無須改變語言本身就可以增加持久化特性n聲明一個名稱為Persistent_Object的類,其屬性和方法具有持久性,其他任何持久的類都可以作為該類的子類。n重載:當(dāng)標(biāo)準(zhǔn)函數(shù)和操作符應(yīng)用到新的數(shù)據(jù)類型(持久對象)上時,可以對它們重新定義。n通過類庫來提供通過類庫來提供C+對持久化的支持對持久化的支持n對C+修改小,容易實(shí)現(xiàn)。n使用困難n程序員負(fù)責(zé)持久對象的處理。n不容易指定完整性約束以及表達(dá)說明性查詢。持久化持久化C+系統(tǒng)系統(tǒng)nODMG C+對象定義語言對象定義語言n

27、對象數(shù)據(jù)庫管理組(ODMG)n對C+、Smalltalk的持久化擴(kuò)展進(jìn)行標(biāo)準(zhǔn)化。n在盡可能小的擴(kuò)展C+的情況下,通過類庫和模板類來提供功能。nODMG對C+的擴(kuò)展nC+ ODL:C+對象定義語言nC+ OML:C+對象操縱語言持久化持久化C+系統(tǒng)系統(tǒng)n模板類nRef:指明一個引用(持久化指針),指向類型為Class的一個對象。Ref更接近C+語法。nSet:指明一個持久化指針的集合,這些指針指向類型為Class的對象。Set提供如 insert_element、delete_element之類的方法。n完整性約束支持ninverse持久化持久化C+系統(tǒng)系統(tǒng)nODMG C+ ODL示例示例cla

28、ss Person : public Persistent_Object public:string name;string address;class Customer : public Person public:date member_from;int customer_id;Ref home_branch;SetRef accounts inverse Account:owners; 每個每個account account 對象的對象的ownersowners屬性必須包含屬性必須包含一個引用指回這個一個引用指回這個CustomerCustomer對象對象持久化持久化C+系統(tǒng)系統(tǒng)clas

29、s Branch : public Persistent_Object public:string name;string address;int assets;class Account : public Persistent_Object private:int balance;public:int number;SetRef owners inverse Customer:accounts;int find_balance();int update_balance(int delta); 持久化持久化C+系統(tǒng)系統(tǒng)ODMG C+ OML示例示例在數(shù)據(jù)庫中分配對象空間持久化持久化C+系統(tǒng)系統(tǒng)

30、迭代算子概念數(shù)據(jù)模型(ODL)ProductPersonCompanycategorynamepricenamestockpricenameaddressssnbuysworksFormadeByemploysmakes類類關(guān)聯(lián)關(guān)聯(lián)屬性屬性對象關(guān)系數(shù)據(jù)模型對象關(guān)系數(shù)據(jù)模型n通過增加面向?qū)ο筇卣骱吞幚硇陆〝?shù)據(jù)類型來擴(kuò)展關(guān)系模型。n允許元組的屬性域?yàn)閺?fù)雜類型,包括如嵌套關(guān)系等非原子性的值。n在擴(kuò)展建模能力的同時,保留關(guān)系的基本特征,如說明性查詢。n提高與現(xiàn)有關(guān)系語言的兼容性。嵌套關(guān)系嵌套關(guān)系n動機(jī)動機(jī)n允許非原子域的存在。n允許以更自然直接的方式對應(yīng)用建模。n直覺定義直覺定義n允許關(guān)系出現(xiàn)在原子值

31、出現(xiàn)的地方在關(guān)系中出現(xiàn)關(guān)系。n保留關(guān)系模型的數(shù)學(xué)基礎(chǔ)保留關(guān)系模型的數(shù)學(xué)基礎(chǔ)n違反了違反了1NF嵌套關(guān)系嵌套關(guān)系n嵌套關(guān)系示例嵌套關(guān)系示例文檔檢索系統(tǒng)嵌套關(guān)系嵌套關(guān)系doc的1NF版本嵌套關(guān)系嵌套關(guān)系nflat-doc中的多值依賴中的多值依賴titleauthortitlekeywordtitleday month yearnflat-doc的的4NF分解分解(title,author)(title,keyword)(title,day,month,year)嵌套關(guān)系嵌套關(guān)系flat-doc的4NF分解嵌套關(guān)系嵌套關(guān)系n4NF分解帶來的問題分解帶來的問題n4NF設(shè)計要求用戶的查詢中包含對關(guān)系的連

32、接。n1NF不要求用戶的查詢中包含對連接操作,但失去了元組與文檔之間的一一對應(yīng)。n嵌套關(guān)系是更自然的表示。復(fù)雜類型與面向?qū)ο髲?fù)雜類型與面向?qū)ο髇對對關(guān)系模型的擴(kuò)展關(guān)系模型的擴(kuò)展n嵌套關(guān)系n復(fù)雜類型n特殊化n繼承n對象標(biāo)識n對對SQL的擴(kuò)展的擴(kuò)展nSQL3nXSQL(Illustra)有有結(jié)構(gòu)的類型和集合體類型結(jié)構(gòu)的類型和集合體類型doc關(guān)系的重定義關(guān)系的重定義新的數(shù)據(jù)類型新的數(shù)據(jù)類型多值屬性和多值屬性和復(fù)合屬性可復(fù)合屬性可以直接表示以直接表示類型繼承類型繼承Student繼承繼承Person的的屬性屬性類型繼承類型繼承多重繼承多重繼承create type TeachingAssistantu

33、nder Student, Teacher消除屬性沖突消除屬性沖突如何使每個實(shí)體恰好有一個最明確類型?如何使每個實(shí)體恰好有一個最明確類型?表級表級繼承繼承允許一個實(shí)體同時存在于多于一個的表中students與與teachers繼承了繼承了people的所有的所有屬性,不必為同時是屬性,不必為同時是students與與teachers的的實(shí)體再創(chuàng)建新的子表,實(shí)體再創(chuàng)建新的子表,除非它有額外屬性。除非它有額外屬性。表級繼承:角色表級繼承:角色n表級繼承為角色建模提供了便利表級繼承為角色建模提供了便利n允許對象有多重類型,而不必象類型繼承那樣要求具有一個最明確類型。如一個對象可以同時在student

34、s和teachers子表里,表示一個身為學(xué)生的助教,不必再為它創(chuàng)建一個繼承students與teachers的子表。n對象可以獲得或失去角色通過向子表里插入或刪除對象。表級繼承:一致性要求表級繼承:一致性要求n父表與子父表與子表之間的完整性約束表之間的完整性約束n父表(people)中的一個元組至多與它的每一個子表(students和teachers)中的一個元組相對應(yīng)(不能有兩個student對應(yīng)同一個people)。n子表(students teachers)中的每個元組恰好與它的父表(people)中的一個元組相對應(yīng)(不能出現(xiàn)student不是people的情況,也不能出現(xiàn)一個student是多個people的情況)。n子表可以不必存儲的所繼承的父表的屬性(除

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論