




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、對(duì)象關(guān)系數(shù)據(jù)庫張志遠(yuǎn)、孟禹彤、仲逸凡、覃夏怡、郭晨、徐昊。對(duì)象數(shù)據(jù)庫產(chǎn)生的原因1.關(guān)系數(shù)據(jù)庫在處理復(fù)雜關(guān)系的時(shí)候很笨重,往往需要很多個(gè)表來表示關(guān)系。 其主要原因是因?yàn)殛P(guān)系模式不能很好的描述客觀的事物,而且缺乏對(duì)復(fù)雜數(shù)據(jù)類型的支持。2抗阻失配(Impedance mismatch)3數(shù)據(jù)不能與行為相關(guān)聯(lián)。也即是這有數(shù)據(jù)不能有方法(操作)。阻抗失配(Impedance mismatch)SQL語言不是圖靈完備語言。一般來說一門語言只要有if判斷,遞歸或循環(huán)結(jié)構(gòu)以及最基本的賦值能力和四則運(yùn)算就是圖靈完備的了。由于對(duì)象模型和關(guān)系模型之間缺乏固有的“親和力”從而產(chǎn)生面向?qū)ο蟪绦蛟O(shè)計(jì)向關(guān)系數(shù)據(jù)庫存取數(shù)據(jù)表
2、示方式不一致的問題。由于要解決阻抗失配,從而產(chǎn)生了對(duì)象數(shù)據(jù)庫的概念。但是,由于對(duì)象關(guān)系數(shù)據(jù)庫只是在原有的關(guān)系數(shù)據(jù)庫的基礎(chǔ)上加入了面向?qū)ο蟮牟糠?,所以不能完全解決抗阻失配問題。而解決只能靠對(duì)象數(shù)據(jù)庫OODB簡(jiǎn)介OODB (Object Oriented Data Base)既面向?qū)ο髷?shù)據(jù)庫。對(duì)象關(guān)系數(shù)據(jù)庫是在關(guān)系數(shù)據(jù)庫的基礎(chǔ)上加入面向?qū)ο笏枷攵纬傻?。是面向?qū)ο髷?shù)據(jù)庫發(fā)展的一個(gè)分支。OO (Object Oriented)面向?qū)ο蟮乃枷氚熏F(xiàn)實(shí)世界抽象為一系列對(duì)象及其聯(lián)系的集合。面向?qū)ο蟪绦蛟O(shè)計(jì)方法是一種支持模塊化程序設(shè)計(jì)和軟件重用的編程方法,它把程序設(shè)計(jì)的主要活動(dòng)限定為建立對(duì)象及其聯(lián)系。一個(gè)面向
3、對(duì)象程序就是相互聯(lián)系的對(duì)象集合。封裝性和繼承性是對(duì)象概念兩個(gè)重要的特性。對(duì)象對(duì)象是一組數(shù)據(jù)結(jié)構(gòu)以及在這些數(shù)據(jù)結(jié)構(gòu)上的操作的程序代碼封裝起來的基本單位,一個(gè)對(duì)象應(yīng)該包括幾個(gè)部分屬性集合:所有屬性構(gòu)成了對(duì)象數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),屬性可以是值或者值的集合也可以是對(duì)象。方法集合:方法描述了對(duì)象的行為特性。一個(gè)是方法的接口,二是方法的實(shí)現(xiàn)。OID(對(duì)象標(biāo)識(shí))數(shù)據(jù)庫中每個(gè)對(duì)象都有一個(gè)唯一不便的標(biāo)識(shí)即為OID,它具有永久性,而且是作用于整個(gè)系統(tǒng)的,要區(qū)別于關(guān)系數(shù)據(jù)庫中得碼的概念。他是獨(dú)立于值的,系統(tǒng)全局唯一的。封裝每個(gè)對(duì)象是起狀態(tài)與行為的封裝。也即是屬性和方法(操作)。封裝對(duì)象是對(duì)象外部界面與內(nèi)部現(xiàn)實(shí)之間隔離的一
4、種抽象。外部與外界的通信只能通過消息。對(duì)象封裝之后查詢屬性只能通過調(diào)用對(duì)象的方法。不能直接修改。類有共同屬性和方法的所有對(duì)象構(gòu)成一個(gè)類,而對(duì)象是一個(gè)類的實(shí)例。類的屬性可以是基本類,也即基本的數(shù)據(jù)類型例如字符,整型,布爾型,也可以是類。繼承繼承也是面向?qū)ο笏枷胫械囊粋€(gè)重要概念。由于面向?qū)ο髷?shù)據(jù)模型的一種類層次結(jié)構(gòu),而產(chǎn)生了繼承,分為單繼承和多重繼承。對(duì)象的嵌套既對(duì)象的屬性可以是對(duì)象。對(duì)象關(guān)系數(shù)據(jù)庫ORDBS是OODBS的一個(gè)分支,即RDBMS的OO擴(kuò)充。它以關(guān)系型的方式僅吸取OO部分功能,既支持廣泛使用的SQL,又具有OO特性,適應(yīng)了傳統(tǒng)應(yīng)用領(lǐng)域發(fā)展和新應(yīng)用領(lǐng)域的需要。而SQL標(biāo)準(zhǔn)從1999年的
5、SQL-3添加了對(duì)對(duì)象的支持。它有如下特征:對(duì)基本類型擴(kuò)充的支持 具有可擴(kuò)充的數(shù)據(jù)類型、函數(shù)和操作符,并把一些數(shù)據(jù)類型及有關(guān)的函數(shù)、操作符和訪問方法進(jìn)行封裝。對(duì)復(fù)雜對(duì)象的支持 通過一些構(gòu)件把多種基本類型或用戶定義類型構(gòu)建成復(fù)雜對(duì)象。其中最基本的構(gòu)件是組合、集合和引用。支持繼承子類對(duì)超類各種特性的繼承,包括數(shù)據(jù)繼承和函數(shù)繼承、單繼承和多重繼承。提供強(qiáng)大和通用的規(guī)則系統(tǒng) RDBMS通過約束定義和觸發(fā)器對(duì)規(guī)則提供支持,ORDBMS支持的規(guī)則系統(tǒng)更強(qiáng)大靈活近年國際上主要數(shù)據(jù)庫產(chǎn)品ORACLE,INGRESS,UDB均先后推出ORDBS的功能結(jié)構(gòu)模式,這可能預(yù)兆著今后數(shù)據(jù)庫發(fā)展的方向。對(duì)象-關(guān)系數(shù)據(jù)庫的
6、數(shù)據(jù)類型關(guān)系類型LOB大對(duì)象類型BOOLEAN類型集合ARRAYDISTINGCT類型對(duì)象類型行對(duì)象與行類型列對(duì)象與列類型ADT(抽象類型)行對(duì)象和行類型行對(duì)象是代表表中一行數(shù)據(jù)的數(shù)據(jù)類型。創(chuàng)建語句 CREATE ROW TYPE ();例如:CREATE ROW TYPE ROW1( first char(n), second char(n), third integer,);用行類型可以創(chuàng)建表中表,也即是不符合第一范式的表。所以,對(duì)象數(shù)據(jù)庫是不受范式約束的。主要原因(個(gè)人認(rèn)為) 由于范式的產(chǎn)生是參照表中各項(xiàng)的關(guān)系來約束的,所有關(guān)系數(shù)據(jù)庫中存在著范式的約束。但是由于對(duì)象的與關(guān)系的區(qū)別,所以面
7、向?qū)ο蟮臄?shù)據(jù)庫不能被范式約束。建立基于行類型的表CREATE TABLE TNAME OF ROW_TYPE_NAME (* PRIMARY KEY);表中每行是一個(gè)對(duì)象,有OID標(biāo)識(shí)。 列對(duì)象與列類型CREATE TYPE ONAME AS OBJECT( FIRST CHAR (N), SECOND CHAR(N), THIRD INTEGER,);CREAT TABLE OTABLE(ONAME1 FIRST, ONAME2 SECONDONAME3 THIRD,.);行列類型序行列類型可以創(chuàng)建其他的復(fù)雜對(duì)象,行具有類的特性,而列則是對(duì)象。行列式不具有封裝特性的因?yàn)樗麄儧]有定義自己的方法
8、。所以數(shù)據(jù)也無法和外界隔離。在實(shí)際的應(yīng)用中主要還是應(yīng)用ADT,就是允許用戶自定義的類型,抽象數(shù)據(jù)類型。ADT抽象數(shù)據(jù)類型,見數(shù)據(jù)結(jié)構(gòu)。用戶可以自己定義的類型。建立方法: CREATE TYPE ( 屬性, 方法 );ADT的特點(diǎn)(1)ADT的屬性定義和行類型的屬性定義類同。(2)在創(chuàng)建ADT的語句中,通過用戶定義的函數(shù)比較對(duì)象的值。如果不定義該類型的比較函數(shù),則采用默認(rèn)的等于和小于函數(shù)來比較對(duì)象的大小。(3)ADT的行為通過方法methods、函數(shù)function實(shí)現(xiàn)。(4)SQL3要求抽象數(shù)據(jù)類型是封裝的,而行類型則不要求封裝。(5)ADT有3個(gè)通用的系統(tǒng)內(nèi)置函數(shù),構(gòu)造函數(shù)(Construc
9、tion Function)、觀察函數(shù)(Observer function)和刪除函數(shù)(Mutation Function)。(6)支持繼承。對(duì)象到關(guān)系的映射(ORM)1屬性類型映射成域?qū)傩灶愋陀成涑蓴?shù)據(jù)庫中的域。2屬性映射成字段類的屬性映射至關(guān)系數(shù)據(jù)庫中0個(gè)或多個(gè)字段。3類映射成表類直接或間接映射成表。ADT方法的實(shí)現(xiàn)參照類型SQL3提供了一種特殊的類型:參照類型,也稱為引用類型,簡(jiǎn)稱REF類型。因?yàn)轭愋椭苯涌赡芫哂邢嗷⒄盏穆?lián)系,因此引入了一個(gè)REF類型的概念:REFREF類型總是和某個(gè)特定的類型相聯(lián)系。它的值是OID。OID是系統(tǒng)生成的,不能修改。繼承類型ORDBMS應(yīng)該支持繼承性,一般
10、是單繼承性。NOT FINAL表示不是類層次結(jié)構(gòu)中最后的葉節(jié)點(diǎn),F(xiàn)INAL則表示該類型是類層次結(jié)構(gòu)的葉節(jié)點(diǎn)。既決定了可不可以被繼承。子表和超表簡(jiǎn)單來說就是表與表之間的繼承。操作時(shí)是對(duì)表和他的所有子表進(jìn)行操作。添加ONLY可以實(shí)現(xiàn)對(duì)單獨(dú)表的操作。進(jìn)行映射后的表對(duì)象對(duì)象屬性屬性1屬性屬性2屬性屬性3OID1OID2OID3OID4整個(gè)表為類Primary key再次介紹OID針對(duì)于對(duì)象,需要能夠唯一識(shí)別它們的標(biāo)識(shí)符。在關(guān)系數(shù)據(jù)庫中,對(duì)應(yīng)的概念稱之為鍵(Key);在面向?qū)ο蟮募夹g(shù)中,稱之為OID(Object ID)。OID在對(duì)象模型中的典型實(shí)現(xiàn)是作為完整的對(duì)象,而在關(guān)系模型中,則作為整數(shù)來實(shí)現(xiàn),或
11、者對(duì)于較大的應(yīng)用中,以若干整數(shù)來實(shí)現(xiàn)。關(guān)系數(shù)據(jù)庫中實(shí)現(xiàn)繼承關(guān)系數(shù)據(jù)庫中實(shí)現(xiàn)繼承在關(guān)系數(shù)據(jù)庫中,一個(gè)關(guān)鍵問題是表主鍵的唯一性策略的選取。適當(dāng)?shù)姆桨改軆?yōu)化繼承、組合及對(duì)象之間關(guān)系的實(shí)現(xiàn)??紤]類的繼承問題。在關(guān)系數(shù)據(jù)庫中保存對(duì)象時(shí),基本上問題歸結(jié)于“如何在數(shù)據(jù)庫中組織被繼承的屬性?”該問題的不同解決方案會(huì)影響到整個(gè)設(shè)計(jì)。關(guān)系數(shù)據(jù)庫中實(shí)現(xiàn)繼承的方法關(guān)系數(shù)據(jù)庫中實(shí)現(xiàn)繼承的方法可劃分為三類: 1. 將整個(gè)類層次映射為單個(gè)數(shù)據(jù)庫表將整個(gè)類層次映射為單個(gè)數(shù)據(jù)庫表。2. 每個(gè)具體子類映射成單個(gè)數(shù)據(jù)庫表每個(gè)具體子類映射成單個(gè)數(shù)據(jù)庫表。3. 每個(gè)類均映射為數(shù)據(jù)庫表。每個(gè)類均映射為數(shù)據(jù)庫表。1. 將整個(gè)類層次映射為單
12、個(gè)數(shù)據(jù)將整個(gè)類層次映射為單個(gè)數(shù)據(jù)庫表。庫表。類層次的所有類映射為單個(gè)的數(shù)據(jù)庫表,表中保存所有類(基類、子類)的屬性。優(yōu)點(diǎn): 實(shí)現(xiàn)簡(jiǎn)單。 支持多態(tài)對(duì)象角色發(fā)生變化,或存在多重角色時(shí)。 報(bào)表操作實(shí)現(xiàn)簡(jiǎn)單:表中包含了所有信息。缺點(diǎn): 增加類層次中的耦合。類層次中任何類的屬性的增加都會(huì)導(dǎo)致表的變更;某個(gè)子類屬性的修改會(huì)影響到整個(gè)層次結(jié)構(gòu),而不僅僅是該子類。 浪費(fèi)了大量的數(shù)據(jù)庫空間。 可能需要指明具體的角色。2每個(gè)每個(gè)具體子類映射成單個(gè)數(shù)據(jù)庫具體子類映射成單個(gè)數(shù)據(jù)庫表表。數(shù)據(jù)庫表包括自身的屬性和繼承的屬性,每個(gè)具體的子類包含各自的OID。抽象的基類不參與映射。優(yōu)點(diǎn): 報(bào)表操作實(shí)現(xiàn)簡(jiǎn)單:表中包含了具體子類
13、的所有信息。缺點(diǎn): 類的修改會(huì)導(dǎo)致相對(duì)應(yīng)的表及其子類所對(duì)應(yīng)表的更改。 角色的更改會(huì)造成ID的重新賦值(因?yàn)椴煌宇惖腎D可能重復(fù))。 難以在支持多重角色時(shí),保持?jǐn)?shù)據(jù)的完整性。3. 每個(gè)類均映射為數(shù)據(jù)庫表。每個(gè)類均映射為數(shù)據(jù)庫表。(子表與超表)(子表與超表)為每一個(gè)類創(chuàng)建數(shù)據(jù)庫表,表中包含特定于該類的屬性和OID。優(yōu)點(diǎn): 與面向?qū)ο蟮母拍畹囊恢滦宰詈?。?duì)多態(tài)的支持最好,對(duì)于對(duì)象所可能充當(dāng)?shù)慕巧珒H需要在相應(yīng)的表中保存記錄。 易于修改基類和增加新的類。缺點(diǎn): 數(shù)據(jù)庫中存在大量的表。 訪問數(shù)據(jù)的時(shí)間較長(zhǎng)。 對(duì)報(bào)表的支持較差,除非定義視圖。關(guān)系映射(參照類型)不僅僅是對(duì)象需要被映射至數(shù)據(jù)庫,對(duì)象之間的關(guān)系也需要映射至數(shù)據(jù)庫。對(duì)象之間的關(guān)系可分為:繼承(Inheritance),關(guān)聯(lián)(association),聚集(aggregation),組合(composition)。要有效地映射關(guān)系,必須理解它們之間的不同點(diǎn),如何實(shí)現(xiàn)一般的關(guān)系以及如何實(shí)現(xiàn)特定的多對(duì)多關(guān)系。但是由于對(duì)象之間的關(guān)系接觸最多的是繼承,以講解,其他的關(guān)系主要講以下三點(diǎn)。關(guān)系映射(續(xù))關(guān)系數(shù)據(jù)庫之間的關(guān)系實(shí)現(xiàn)主要靠外鍵。主要是三種一對(duì)一一對(duì)多多對(duì)多一對(duì)一引
溫馨提示
- 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. 人人文庫網(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è)工程施工合同書
- 2024屆高考語文寫作指導(dǎo)家鄉(xiāng)風(fēng)俗
- 2025年四川貨運(yùn)從業(yè)資格證模擬版本
- 中外合資經(jīng)營企業(yè)合同常用版樣書8篇
- 2025年安徽貨運(yùn)從業(yè)資格證題
- 2025年寧德道路運(yùn)輸從業(yè)資格證考試
- 數(shù)據(jù)模型構(gòu)建表-模型構(gòu)成
- 醫(yī)院對(duì)口支援協(xié)議書
- 2025年南寧從業(yè)資格貨運(yùn)資格考試題庫答案大全
- 2025年山東泰山財(cái)產(chǎn)保險(xiǎn)股份有限公司招聘筆試參考題庫含答案解析
- 初中物理競(jìng)賽及自主招生講義:第7講 密度、壓強(qiáng)與浮力(共5節(jié))含解析
- 高中主題班會(huì) 梁文鋒和他的DeepSeek-由DeepSeek爆火開啟高中第一課-高中主題班會(huì)課件
- 污水處理設(shè)施運(yùn)維服務(wù)投標(biāo)方案(技術(shù)標(biāo))
- 一年級(jí)下冊(cè)書法教案 (一)
- 《浙江省應(yīng)急管理行政處罰裁量基準(zhǔn)適用細(xì)則》知識(shí)培訓(xùn)
- 2024年全國職業(yè)院校技能大賽高職組(康復(fù)治療技術(shù)賽項(xiàng))考試題庫(含答案)
- 2025年山東健康集團(tuán)招聘筆試參考題庫含答案解析
- 《中外廣播電視史》課件
- 微信公眾號(hào)運(yùn)營
- DLT 593-2016 高壓開關(guān)設(shè)備和控制設(shè)備
評(píng)論
0/150
提交評(píng)論