對象關(guān)系型DBMS開發(fā)技術(shù)課件_第1頁
對象關(guān)系型DBMS開發(fā)技術(shù)課件_第2頁
對象關(guān)系型DBMS開發(fā)技術(shù)課件_第3頁
對象關(guān)系型DBMS開發(fā)技術(shù)課件_第4頁
對象關(guān)系型DBMS開發(fā)技術(shù)課件_第5頁
已閱讀5頁,還剩127頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

對象關(guān)系型DBMS開發(fā)技術(shù)

鞠時光對象關(guān)系型DBMS開發(fā)技術(shù)1第一章緒論如何理解數(shù)據(jù)庫這個名詞?為什么研究DBMS?我們研究DBMS的目的?現(xiàn)在常用的幾類商業(yè)數(shù)據(jù)庫世界上研究數(shù)據(jù)庫處于前沿的單位第一章緒論如何理解數(shù)據(jù)庫這個名詞?2如何理解數(shù)據(jù)庫這個名詞DBMSDBMS的體系結(jié)構(gòu),存儲方法(數(shù)據(jù)模式datamodel),索引機制,查詢機制,優(yōu)化查詢等。數(shù)據(jù)庫理論數(shù)據(jù)源:NormalForm系統(tǒng)模型:ER圖,數(shù)據(jù)完整性dataintegrity,數(shù)據(jù)安全性datasecurity,數(shù)據(jù)共享datasharing信息利用:activedata,datafusion,datadining數(shù)據(jù)庫應(yīng)用如何理解數(shù)據(jù)庫這個名詞DBMS3本課目的擴展關(guān)系DBMS到對象關(guān)系型DBMS研究如何設(shè)計對象關(guān)系型DBMS的體系結(jié)構(gòu),存儲方法,索引機制,查詢機制等本課目的擴展關(guān)系DBMS到對象關(guān)系型DBMS4為什么研究DBMS?新興的應(yīng)用領(lǐng)域的需求:計算機集成制造系統(tǒng)(CIMS)辦公信息系統(tǒng)(OIS)多媒體系統(tǒng)(multimedia)高維數(shù)據(jù)應(yīng)用系統(tǒng)為什么研究DBMS?新興的應(yīng)用領(lǐng)域的需求:5計算機集成制造系統(tǒng)(CIMS)CIMS是在CAD,CAE,CAE,CAPP,FMS,等基礎(chǔ)上發(fā)展起來的高技術(shù).CIMS對DBMS的新功能要求包括能定義新的面向工程環(huán)境的數(shù)據(jù)模型;能修改和重新定義已有的數(shù)據(jù)結(jié)構(gòu);能存儲和有效地檢索設(shè)計圖形和工程數(shù)據(jù);能管理設(shè)計過程中對象演變的歷史.計算機集成制造系統(tǒng)(CIMS)CIMS是在CAD,6對象關(guān)系型DBMS開發(fā)技術(shù)課件7辦公信息系統(tǒng)(OIS)

辦公環(huán)境處理信息的多樣性(圖形、圖像、報表、文字、聲音)及存儲介質(zhì)的多樣性(紙張、聲音、錄音、錄像、磁盤、光盤等)信息類型豐富時間因素不規(guī)則交互式界面信息的過濾與綜合優(yōu)先級調(diào)度和觸發(fā)器辦公信息系統(tǒng)(OIS)辦公環(huán)境處理信息的多樣性(圖形、圖8多媒體系統(tǒng)現(xiàn)在世界上85%的有用信息還未轉(zhuǎn)變成電子形式,大部分是多媒體信息,如膠片。多媒體系統(tǒng)現(xiàn)在世界上85%的有用信息還未轉(zhuǎn)變成電子形式,大部9高維數(shù)據(jù)應(yīng)用系統(tǒng)(1)高維數(shù)據(jù)對數(shù)據(jù)庫管理系統(tǒng)提出了許多特殊的要求:一個對象不能用存儲字符編碼的方式來存儲。檢索圖象也不像檢索一個字符串或一個字符那樣方便。用戶查詢或檢索某個對象,有時需據(jù)空間關(guān)系來進行。如:拓?fù)洳僮鳎骸鞍保跋嗦?lián)”等。幾何操作:“靠近”,“遠(yuǎn)離”,“覆蓋”等等。方位操作:“在┄┄右邊”,“在┄┄上面這些操作基于實體間相互所處的空間位置之上。高維數(shù)據(jù)應(yīng)用系統(tǒng)(1)高維數(shù)據(jù)對數(shù)據(jù)庫管理系統(tǒng)提出了許多特殊10高維數(shù)據(jù)應(yīng)用系統(tǒng)(2)數(shù)據(jù)庫管理語言有能力描述高維信息和字符信息的處理過程,但由于兩種過程在本質(zhì)上的差異。在諸如DDL,DML、SQL中,描述兩種過程的語義規(guī)則不能混合。高維數(shù)據(jù)應(yīng)用系統(tǒng)(2)數(shù)據(jù)庫管理語言有能力描述高維信息11(為什么研究DBMS?)結(jié)論這些新的特征,使得傳統(tǒng)的關(guān)系型DBMS,或者面向?qū)ο笮虳BMS均難以有效的管理這些類型的數(shù)據(jù)。促使我們?nèi)パ芯?、引入新型的DBMS系統(tǒng)。其中最重要的研究方向之一就是將面向?qū)ο蠹夹g(shù)與關(guān)系數(shù)據(jù)庫技術(shù)相結(jié)合,構(gòu)造新型的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(為什么研究DBMS?)結(jié)論這些新的特征,使得傳統(tǒng)的12我們研究DBMS的目的數(shù)據(jù)庫管理系統(tǒng)

(DBMS)的研究與開發(fā)

WEB數(shù)據(jù)庫(電子商務(wù)、電子政務(wù)系統(tǒng))安全數(shù)據(jù)庫

數(shù)據(jù)挖掘數(shù)據(jù)擬合對象關(guān)系型DBMS可視化數(shù)據(jù)庫查詢語言

GIS系統(tǒng)

工程數(shù)據(jù)庫

(如CAD數(shù)據(jù)庫)我們研究DBMS的目的數(shù)據(jù)庫管理系統(tǒng)

(DBMS)的研究與13常用的幾類商業(yè)數(shù)據(jù)庫

2

4

1

3有無查詢功能

復(fù)雜簡單簡單復(fù)雜數(shù)據(jù)復(fù)雜度常用的幾類商業(yè)數(shù)據(jù)庫2413有無查詢功能14區(qū)域1:表示處理的是簡單數(shù)據(jù)常見的正文處理系統(tǒng)有word,F(xiàn)ramemaker,wordperfect,vi等。這些正文系統(tǒng)可歸類為最簡單的DBMS軟件系統(tǒng)。用名字打開文件,文件內(nèi)容被拷貝到虛存中。在編輯正文時,更新虛存對象,對象被定期地保存到硬盤中。在結(jié)束正文處理時關(guān)閉文件,這時,虛存中的拷貝被存到文件系統(tǒng)中區(qū)域1:表示處理的是簡單數(shù)據(jù)常見的正文處理系統(tǒng)有word15區(qū)域2:簡單數(shù)據(jù),復(fù)雜查詢

關(guān)系數(shù)據(jù)庫。目前常見的保險業(yè)務(wù)處理系統(tǒng)、企業(yè)的人事管理、生產(chǎn)管理、物資管理等信息管理系統(tǒng)都是基于這種RDBMS之上開發(fā)的。如Informix,Oracle,delph,VB,VF等。查詢語言,國際標(biāo)準(zhǔn)組織相繼推出SQL-86、SQL-89和SQL-92標(biāo)準(zhǔn)。為了方便數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā),數(shù)據(jù)庫廠商開發(fā)了各種客戶工具,除了可以在SQL語句中嵌入第三代語言(如C,COBOL等),還提供4GL第四代語言區(qū)域2:簡單數(shù)據(jù),復(fù)雜查詢關(guān)系數(shù)據(jù)庫。目前常見的保險業(yè)16區(qū)域2:傳統(tǒng)數(shù)據(jù)庫不足之處(1)傳統(tǒng)數(shù)據(jù)模型,特別是關(guān)系數(shù)據(jù)模型用來描述復(fù)雜的嵌套實體就顯得過于簡單。傳統(tǒng)數(shù)據(jù)庫系統(tǒng)也沒有提供相應(yīng)的機制去表達和管理這些實體。(2)傳統(tǒng)數(shù)據(jù)庫系統(tǒng)只支持有限的數(shù)據(jù)類型,它甚至不支持對較長的非結(jié)構(gòu)化數(shù)據(jù),如圖形、圖像和文本文檔的存儲和檢索。(3)傳統(tǒng)數(shù)據(jù)模型不含若干常用的語義概念,如像泛化(generalization)和聚集(aggregation)關(guān)系。(4)許多應(yīng)用程序是用某種程序設(shè)計語言(FORTRAN、或C)嵌入到某個數(shù)據(jù)庫語言(如SQL、DML)實現(xiàn)的。而程序設(shè)計語言與數(shù)據(jù)庫語言無論在數(shù)據(jù)模型還是在數(shù)據(jù)結(jié)構(gòu)上都是很不相同的.區(qū)域2:傳統(tǒng)數(shù)據(jù)庫不足之處(1)傳統(tǒng)數(shù)據(jù)模型,特別是關(guān)系數(shù)據(jù)17區(qū)域3:復(fù)雜數(shù)據(jù),簡單查詢本類應(yīng)用與前兩類應(yīng)用最主要的不同在于增加了復(fù)雜數(shù)據(jù)。而與第二類應(yīng)用相比,它又幾乎沒有查詢要求.面向?qū)ο髷?shù)據(jù)庫產(chǎn)品主要有ObjectStore,O2,Objectivity/DB,Matisse,ONTOS,Gemstone等。這些產(chǎn)品在堅固性,可伸縮性,客戶/服務(wù)器結(jié)構(gòu),應(yīng)用開發(fā)工具等許多方面不如RDBMS產(chǎn)品。區(qū)域3:復(fù)雜數(shù)據(jù),簡單查詢本類應(yīng)用與前兩類應(yīng)用最主要的18區(qū)域3:面向?qū)ο髷?shù)據(jù)庫的不足

面向?qū)ο髷?shù)據(jù)庫產(chǎn)品在程序設(shè)計接口、實現(xiàn)方法(手段)、對查詢的支持等等方面都存在許多差異。面向?qū)ο蟮臄?shù)據(jù)庫產(chǎn)品在一些方面仍然落后于關(guān)系數(shù)據(jù)庫產(chǎn)品,例如,還沒有OODB支持視圖機制.OODB明顯缺乏最終用戶工具及應(yīng)用開發(fā)工具.OODB的商業(yè)市場的增長速度比預(yù)想的要慢的多.區(qū)域3:面向?qū)ο髷?shù)據(jù)庫的不足面向?qū)ο髷?shù)據(jù)庫產(chǎn)品在程序19區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(1)圖象數(shù)據(jù)庫,其結(jié)構(gòu)定義如下:createtablephoto(idint;/*圖象編號*/datedate;/*拍攝日期*/captiondocument;/*圖象說明*/picturephoto_CD_image;/*圖象編碼*/);區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(1)圖象數(shù)據(jù)庫,其結(jié)構(gòu)定義如下:20被存儲的對象具有復(fù)雜的數(shù)據(jù)結(jié)構(gòu)按內(nèi)容對圖象進行查詢還要求數(shù)據(jù)庫管理系統(tǒng)允許用戶自定義數(shù)據(jù)類型.并自定義這些數(shù)據(jù)類型上的函數(shù)和操作區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(2)被存儲的對象具有復(fù)雜的數(shù)據(jù)結(jié)構(gòu)區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(221(1)表達和管理復(fù)雜嵌套對象的能力,以允許逐步細(xì)化復(fù)雜實體。(2)存儲和檢索任意長數(shù)據(jù)的能力。(3)定義和管理任意數(shù)據(jù)類型的能力。(4)表達和管理數(shù)據(jù)庫變化的能力,包括時間和時間間隔的表示法,單對象的版本,復(fù)雜嵌套對象的版本和模式實體的版本。(5)表達和操作各種有用的語義模型概念的能力。例如CAE、復(fù)合文檔合成等等上下文中的裝配部分層次就是這些概念之一。(6)指定規(guī)則和擴充制約的能力,以支持基于知識的應(yīng)用。。(7)管理長協(xié)同事務(wù)的能力。下一代數(shù)據(jù)庫系統(tǒng)的特征(1)表達和管理復(fù)雜嵌套對象的能力,以允許逐步細(xì)化復(fù)雜實體。22世界上研究數(shù)據(jù)庫處于前沿的單位(1)Http://(2)PostgreSQL-Object-RelationalDBMS

(3)/papers/Informix/(4)UniversalDBMS/udbms.html世界上研究數(shù)據(jù)庫處于前沿的單位(1)Http://www.23第二章對象關(guān)系數(shù)據(jù)庫的基本特性O(shè)RDBMS的定義開發(fā)對象-關(guān)系DBMS的途徑支持復(fù)雜對象基類擴充繼承機制規(guī)則系統(tǒng)第二章對象關(guān)系數(shù)據(jù)庫的基本特性O(shè)RDBMS的定義241990年,由Stonebraker等人組成的高級DBMS功能委員會發(fā)表的“第三代數(shù)據(jù)庫系統(tǒng)宣言”:第三代對象關(guān)系型數(shù)據(jù)庫系統(tǒng)必須具備的三條原則:原則1:除傳統(tǒng)的數(shù)據(jù)管理服務(wù)外,第三代DBMS將支持更加豐富的對象結(jié)構(gòu)和規(guī)則。原則2:第三代DBMS必須包含第二代(即關(guān)系的)DBMS的所有功能。原則3:第三代DBMS必須對其它子系統(tǒng)開放。ORDBMS的定義1990年,由Stonebraker等人組成的高級25對象關(guān)系型DBMS這種系統(tǒng)具備關(guān)系數(shù)據(jù)庫管理系統(tǒng)的功能,同時又支持面向?qū)ο蟮奶匦?。它是關(guān)系數(shù)據(jù)庫技術(shù)與面向?qū)ο蠹夹g(shù)的融合。主要是擴充基類、支持動態(tài)數(shù)據(jù)類型、支持復(fù)雜對象和大對象、增加復(fù)雜對象繼承機制及支持規(guī)則系統(tǒng)等。并支持SQL查詢語言的超集ORSQL。它適合于具有高維數(shù)據(jù)、動態(tài)數(shù)據(jù)、復(fù)雜查詢等工程應(yīng)用領(lǐng)域。可用作開發(fā)CAD、多媒體、CIMS、GIS等應(yīng)用系統(tǒng)。對象關(guān)系型DBMS這種系統(tǒng)具備關(guān)系數(shù)據(jù)庫管理系統(tǒng)的功能,同時26實現(xiàn)這種系統(tǒng)需研究:通用存儲機制。系統(tǒng)的存儲機制必須能存儲對象關(guān)系型數(shù)據(jù)。類屬的索引機制。原有的關(guān)系型DBMS只為數(shù)字和字符串兩種數(shù)據(jù)類型內(nèi)置了B樹代碼。在ORDBMS中,B樹代碼必須是類屬的。這樣就可以在任何數(shù)據(jù)類型上建立B樹索引。使得系統(tǒng)能在任何數(shù)據(jù)類型上提供高維存取方法。實現(xiàn)這種系統(tǒng)需研究:27必須提供用戶自定義新的數(shù)據(jù)類型和函數(shù)的功能。這種可擴充性消除了傳統(tǒng)的DBMS必須進行的對新數(shù)據(jù)類型和函數(shù)的繁瑣模擬。規(guī)則系統(tǒng)。這些規(guī)則被數(shù)據(jù)庫系統(tǒng)實施后,存儲的數(shù)據(jù)變的更主動(active),使得它更具有自己的行為。即數(shù)據(jù)庫中的數(shù)據(jù)能自己講話。研究定義對象關(guān)系型數(shù)據(jù)庫查詢語言O(shè)RSQL

必須提供用戶自定義新的數(shù)據(jù)類型和函數(shù)的功能。這種可擴充性消除28開發(fā)對象關(guān)系DBMS的途徑(1)從頭寫一個ORDBMS(2)對ORDBMS進行功能擴充(要在源代碼上進行)第一個采用增量式演變策略的是Ingres公司,1988年開始,將關(guān)系型引擎擴展為具有基本類型擴充功能和規(guī)則管理的系統(tǒng)(3)寫一個包裝層包裝層就是在傳統(tǒng)的關(guān)系型引擎上裹著一個模擬層。這個模擬層支持對象關(guān)系型API,其辦法是將用戶提交的對象關(guān)系型查詢映像成關(guān)系型查詢,然后在傳統(tǒng)關(guān)系型引擎上執(zhí)行。HP公司已采用包裝層策略,把關(guān)系型引擎Allbase改造成關(guān)系-對象型引擎OpenODB。模擬效率是非常低的。因為在包裝層中執(zhí)行整個查詢,就意味著包裝層必須有第二個SQL分析器,第二個優(yōu)化器和第二個執(zhí)行器開發(fā)對象關(guān)系DBMS的途徑(1)從頭寫一個ORDBMS29IBM的DB2/CSV2.0系統(tǒng)和CA-Ingres系統(tǒng)支持用戶定義的基類、繼承和視圖等。Illustra是當(dāng)前對象關(guān)系市場上功能相當(dāng)完備的產(chǎn)品,提供基于抽象數(shù)據(jù)類型(ADT)、已經(jīng)開發(fā)好的類型擴充軟件包,用于管理諸如圖象和正文等數(shù)據(jù)類型。這樣的軟件包有Illustra的DataBlade.IBM的DatabaseExtender等幾個具有對象關(guān)系數(shù)據(jù)庫特征的產(chǎn)品IBM的DB2/CSV2.0系統(tǒng)和CA-Ingres系統(tǒng)支30支持復(fù)雜對象特性1:豐富的復(fù)雜對象類型“組合”、“集合”和“指針”三種類型構(gòu)造器。特性2:復(fù)雜對象類型上的函數(shù)特性3:復(fù)雜對象的大小對組合的成員總存儲量大小不應(yīng)有限制,對集合大小和成員數(shù)目也不應(yīng)有限制。特性4.:SQL的超集支持復(fù)雜對象特性1:豐富的復(fù)雜對象類型31創(chuàng)建復(fù)雜對象(組合)CREATEROWTYPEaddr_t(Streetvarchar(30),Cityvarchar(20),Statechar(2),Zipint);有了addr_t這種復(fù)雜對象類型,一個公司的職工信息表可以定義成:CREATETABLEemployee(Namevarchar(3),startdatedate,salaryint,addressaddr_t);創(chuàng)建復(fù)雜對象(組合)CREATEROWTYPEaddr32CREATEROWTYPEemployee_t(Namevarchar(30),Startdatedate,Salaryint,Addressaddr_t);然后,公司的職員表可以更簡單的定義為:CREATETABLEemployeeOFTYPEemployee_t;把職工的所有信息定義為一個類型CREATEROWTYPEemployee_t(把33這樣創(chuàng)建的表稱為“類型表”,可見這種表并不滿足1NF范式這樣創(chuàng)建的表稱為“類型表”,可見這種表并不滿足1NF范式34集合集合SET:普通的集合類型,元素不能重復(fù)。多值集合MULTISET:元素可以重復(fù)的集合。列表LIST:有順序的集合。集合集合SET:普通的集合類型,35指針指針類型的存在基于以下事實:數(shù)據(jù)庫表中的一行或一個復(fù)雜對象的實例可以有一個唯一的內(nèi)部標(biāo)識――稱作行標(biāo)識(ROWID)或?qū)ο髽?biāo)識(OID).指針實際存儲的是這種標(biāo)識。這些標(biāo)識是永久的,且絕對不會重復(fù).例,可把公司中某一部門表的manager列改成指針類型:managerREF(employee-t)指針指針類型的存在基于以下事實:數(shù)據(jù)庫表中的36綜合利用指針的集合在部門表中直接包含部門的職員workersSET(REF(employee-t))引入復(fù)雜對象后的部門表定義如下:CREATETABLEdepartment(dnamevarchar(30),managerREF(employee-t),workersSET(REF(employee-t));結(jié)構(gòu)非常簡明,并且完整的描述了一個部門的信息。

綜合利用指針的集合在部門表中直接包含部門的職員37基類擴充SQL-92定義的基本數(shù)據(jù)類型只有以下幾種:整數(shù)、實數(shù)、字符串(定長或可變長)、時間.基本數(shù)據(jù)類型上的操作符和函數(shù)也都是精確定義(有的是硬編碼)的.所謂基類擴充,是指用戶在SQL中能創(chuàng)建帶有相應(yīng)操作符和函數(shù)的新數(shù)據(jù)類型.創(chuàng)建一個新的基類需定義類型名、類型的存儲信息和將該數(shù)據(jù)類型與ASCII字符互相轉(zhuǎn)換的子程序?;悢U充SQL-92定義的基本數(shù)據(jù)類型只有以38創(chuàng)建一個新的基類創(chuàng)建基類需定義類型名、類型的存儲信息和將該數(shù)據(jù)類型與ASCII字符互相轉(zhuǎn)換的子程序:創(chuàng)建類型語句創(chuàng)建其上的輸入函數(shù)創(chuàng)建其上的輸出函數(shù)創(chuàng)建一個新的基類創(chuàng)建基類需定義類型名、類型39下面是IUS中創(chuàng)建OpaqueType的基類complex的例子創(chuàng)建類型語句:CREATEOPAQUETYPEcomplex(internallength=8,alighnment=4);創(chuàng)建其上的輸入函數(shù):CREATEFUNCTIONcomplex_in(lvarchar)RETURNINGcomplexWITH(NOTVARIANT)EXTERNALNAME‘/funcs/complex/complex.so’LANGUAGECENDFUNCTION;CREATEIMPLICITCAST(lvarcharascomplexwithcomplex_in);下面是IUS中創(chuàng)建OpaqueType的基類complex40創(chuàng)建其上的輸出函數(shù):CREATEFUNCTIONcomplex_out(complex)RETURNINGlvarcharWITH(NOTVARIANT)EXTERNALNAME‘/funcs/complex/complex.so’LANGUAGECENDFUNCTION;CREATEEXPLICITCAST(complexaslvarcharwithcomplex_out);創(chuàng)建其上的輸出函數(shù):41用戶定義的類型,用戶可以加入各種操作操作函數(shù)的定義:用通用的第三代編程語言如C等來編寫函數(shù)。然后將函數(shù)注冊到系統(tǒng)中去.如Informix的StoredProcedureLanguage(SPL)語言寫函數(shù)。格式如下:CREATE[DBA]FUNCTION<函數(shù)名>[參數(shù)表]{RETURNS|RETURNING}<類型名>[SPECIFIC<特定名>][WITH(<修飾符表>)]<SPL語句表>[ENDFUNCTION][DOCUMENT<字符串表>WITHLISTINGIN<字符串表>];用戶定義的類型,用戶可以加入各種操作操作函數(shù)的定義:42我們定義一個函數(shù)increase_by_pct用來求一個數(shù)按某個百分比增長后的值。CREATEFUNCTIONincrease_by_pct(amtnumeric,pctnumeric)RETURNINGnumeric;DEFINEresultnumeric;LETresult=amt+amt*(pct/100);RETURNresult;ENDFUNCTION;定義操作函數(shù)例我們定義一個函數(shù)increase_by_pct用來求一個數(shù)43使用定義操作函數(shù)的方法1。直接執(zhí)行這個函數(shù)EXECUTEFUNCTIONincrease_by_pct(8,20)intonweval;CALLincrease_by_pct(8,20)RETURNINGnewval;使用定義操作函數(shù)的方法1。直接執(zhí)行這個函數(shù)442。在SQL語句中使用該函數(shù)例如,有一張表Inventory如下:part_id,description,quantity,price,total_price,last_shipHDW566,ClawHammer,10,10.00,NULL,NULL在select語句中使用該函數(shù):SELECTincrease_by_pct(price,20)AShigher_priceFROMinventory;在update語句中使用該函數(shù):UPDATEinventorySETprice=increase_by_pct(price,20);SELECT*FROMinventory;使用定義操作函數(shù)的方法2。在SQL語句中使用該函數(shù)使用定義操作函數(shù)的方法45定義操作符傳統(tǒng)SQL支持相當(dāng)多的操作符。例如,對整數(shù)和浮點數(shù)都有比較操作符(<,<=,=,>,<>).從語法上講,每個操作符都是一個雙參數(shù)函數(shù),只不過函數(shù)名出現(xiàn)在二個參數(shù)之間。Illustra系統(tǒng)中用以下命令來注冊操作符:createoperatorbindingopr-nameTOfunction-name;定義操作符傳統(tǒng)SQL支持相當(dāng)多的操作符。46以職工信息系統(tǒng)為例?,F(xiàn)假設(shè)有一查詢?nèi)缦拢簊electfromemp,emprwhere=‘Ju’anddistance(emp.location,r.location)<1以上查詢也可表示為:selectfromemp,emprwhere=‘Ju”andcontained(r.location,circle(emp.location,1);定義操作符例以職工信息系統(tǒng)為例。現(xiàn)假設(shè)有一查詢?nèi)缦拢憾x操作符例47我們將“<<”定義為對應(yīng)于函數(shù)contained的操作符,則也可用操作符來寫這個查詢:selectfromemp,emprwhere=‘Ju”andr.location<<circle(emp.location,1);定義操作符例我們將“<<”定義為對應(yīng)于函數(shù)contained的操作符,則48基類擴充模塊DataBlade基類擴充模塊是一種標(biāo)準(zhǔn)的軟件模塊,它可以被插入到數(shù)據(jù)庫中,用以擴展其能力.Informix現(xiàn)在正在推出的基類擴充模塊有二十多個,這里列舉幾個:1.二維/三維空間基類擴充模塊對二維和三維空間對象(點、線、面等)進行存儲和分析,并使用高性能的R樹對數(shù)據(jù)進行訪問。使用函數(shù)(overlap,area,containment等)對空間對象進行各種操作。2.圖象基類擴充模塊在單色或彩色模式下,對50多種格式(TIFF、GIF、JPEG等)的圖象進行轉(zhuǎn)換、存儲、操作、加強和管理。還提供許多范例,包括旋轉(zhuǎn)、邊界加強和卷積等?;悢U充模塊DataBlade基類擴充模塊是一種493.正文基類擴充模塊使用一個廣泛的函數(shù)集,來處理基于內(nèi)容的文檔查找。4.時間序列基類擴充模塊對任何類型(整數(shù)、浮點數(shù)、正文信息等)數(shù)據(jù)的有規(guī)律的重復(fù)性的時間進行定義和操作,這是金融分析中的一個關(guān)鍵性需求。5.Web基類擴充模塊快速創(chuàng)建智能化的交互Web應(yīng)用,可根據(jù)存儲在數(shù)據(jù)庫中的信息動態(tài)地生成HTML頁。6.VIR(可視化的信息查詢)基類擴充模塊通過強有力的,基于內(nèi)容的查詢機制來對圖象和影像信息進行查詢。這一機制依據(jù)圖象屬性,例如顏色、形狀、質(zhì)地和組成成分等,來分析可視信息。基類擴充模塊(DataBlade)23.正文基類擴充模塊基類擴充模塊(DataBlade)250繼承機制支持子類對父類的繼承是面向?qū)ο蠓椒ǖ闹匾匦灾?。在實際的問題模型中,許多對象之間有著繼承的關(guān)系。提供繼承機制,可以更好的模擬實際問題,有利于軟件的高內(nèi)聚,低耦合的模塊化,也有利于軟件的一致性和可重用性.繼承機制支持子類對父類的繼承是面向?qū)ο蠓椒ǖ闹匾?1繼承分類一個子類對象(子類數(shù)據(jù)或子表)可以從父類對象中繼承數(shù)據(jù)屬性和行為。其中行為一般包括函數(shù),操作符,約束條件定義,參照完整性,存取方法,存儲策略以及觸發(fā)器等。數(shù)據(jù)繼承函數(shù)繼承繼承分類一個子類對象(子類數(shù)據(jù)或子表)可以從父52數(shù)據(jù)繼承(1)假設(shè)某公司的雇員中有工程師,銷售人員以及其他人員。我們可以定義雇員元組類型作為父類型,而定義工程師和銷售人員元組類型作為他的子類型。數(shù)據(jù)繼承(1)假設(shè)某公司的雇員中有工程師,銷53我們可以用下面的語句定義公司職工的元組類型:CreateROWTYPEemp_t(namevarchar(30),base_salarynumeric(12,2),managerREF(emp_t));CreateROWTYPEengineer_t(skillsvarchar(20),bonusnumeric(12,2))UNDERemp_t;CreateROWTYPEsales_t(territoryvarchar(30),commisionnumeric(12,2),annual_salesnumeric(12,2))UNDERemp_t;這樣,engineer_t和sales_t就繼承了emp_t的數(shù)據(jù)屬性數(shù)據(jù)繼承(2)我們可以用下面的語句定義公司職工的元組類型:數(shù)據(jù)繼承(2)54多重繼承多重繼承是指一個子類型可以從多個父類型繼承。例如,銷售工程師類型既是工程師的子類型,又是銷售人員的子類型:如果它的兩個父類型有重名屬性,則它繼承哪個屬性就存在二義性。解決這種二義性有兩種方法:一是用戶在定義多重繼承結(jié)構(gòu)時,父類們不允許有重名屬性,否則給出錯誤。二是有DBA定義處理二義性的規(guī)則,繼承哪個屬性由規(guī)則決定,但用戶恐怕很難理解這些規(guī)則。當(dāng)然,前者比后者簡單得多。多重繼承多重繼承是指一個子類型可以從多個父類型55在IUS中,數(shù)據(jù)庫權(quán)限增加了UNDER權(quán)限,定義表的用戶必須對他所用到的父表有UNDER權(quán)限。而且,表中繼承關(guān)系的定義應(yīng)該和它們相對應(yīng)的元組類型的繼承關(guān)系相吻合。CREATETABLE empOFTYPEEMP_T;CREATETABLEengineerOFTYPEengineer_tUNDERemp;CREATETABLEengineerOFTYPEsales_tUNDERemp;多重繼承例在IUS中,數(shù)據(jù)庫權(quán)限增加了UNDER權(quán)限,定義表的用戶必須56對象關(guān)系型DBMS開發(fā)技術(shù)課件57ORDBMS允許從表的繼承層次系統(tǒng)中查詢數(shù)據(jù),也就是說,既可以從某一個表查詢數(shù)據(jù),又可以查詢某一個表及其所有后代表中的數(shù)據(jù)。IUS提供了三種不同的SELECT語句來完成上述功能。(1)SELECT*FROMONLY(emp);只查詢表emp中的記錄;(2)SELECT*FROMemp不但查詢emp表的記錄,還要查詢它的所有后代表engineer和sales表中的記錄。但是,這個語句查詢的僅僅是基表的字段,即只是三個字段:name,base-salary和manager。(3)SELECTempFROMemp;查詢結(jié)果是三個表的所有記錄,而三個表的所有字段都在查詢結(jié)果之中。多重繼承的查詢ORDBMS允許從表的繼承層次系統(tǒng)中查詢數(shù)據(jù),也就是說,多重58函數(shù)的繼承是行為繼承中重要的一種。定義在父類的函數(shù)可以被它的子類繼承。一個函數(shù)定義在哪個類上是由它的參數(shù)的數(shù)據(jù)類型所決定的。比如,下面的語句分別在emp_t和engineer_t類上定義salary函數(shù):createfunctionsalary(empemp_t)returningnumeric;return(emp.base_salary);endfunction;createfunctionsalary(empengineer_t)returningnumeric;return(emp.base_salary+emp.bonus);endfunction;函數(shù)繼承函數(shù)的繼承是行為繼承中重要的一種。定義在父59sales-t類繼承了其父類emp-t上定義的salary函數(shù),但是,engineer-t也可以繼承emp-t的salary函數(shù),而又定義了自己的salary函數(shù)這時在對engineer-t類中。引用salary函數(shù)時,應(yīng)該是在engineer-t上定義的那個版本。IUS在運行某段代碼過程中需要計算某個函數(shù)時,如果它的實參數(shù)據(jù)類型上定義了這個函數(shù),則引用這個版本;否則,則沿著實參數(shù)據(jù)類型的父類方向在繼承層次中向上查找,直至找到它的一個祖先類型上定義了這個函數(shù)為止函數(shù)繼承例sales-t類繼承了其父類emp-t上定義的s60規(guī)則系統(tǒng)規(guī)則定義的格式一般如下:ONEVENTDOACTION規(guī)則分為四種基本類型:修改-修改規(guī)則;查詢-修改規(guī)則;修改-查詢規(guī)則;查詢-查詢規(guī)則規(guī)則系統(tǒng)61修改-修改規(guī)則事件是一個修改型操作(包括修改、增加、刪除操作),而動作也是修改型操作的規(guī)則ONUPDATETOemp.base_salaryWHERE=’mike’DOUPDATEempSETbase_salary=new.base_salaryWHEREname=’jane’

將能使Jane的基本工資與Mike始終相同修改-修改規(guī)則事件是一個修改型操作(包括修改、增加、刪除操作62查詢-修改規(guī)則該規(guī)則是一個查詢事件激活一個修改性的動作。例如:ONSELECTTOemp.base_salaryWHERE=’Mike’DOINSERTINTOauditVALUES(current.base_salary,user,current_time);這個規(guī)則在對Mike的基本工資進行查詢時,將相同的信息存入audit表中,這樣就可以維護一個查詢Mike工資的事件蹤跡表。查詢-修改規(guī)則該規(guī)則是一個查詢事件激活一個修改性的動作。例如63修改-查詢規(guī)則ONUPDATETOemp.base_salaryWHERE=’Mike’DOmy-alert;當(dāng)對Mike工資修改時,系統(tǒng)將會發(fā)出警報修改-查詢規(guī)則ONUPDATETOemp.ba64查詢-查詢規(guī)則ONSELECTTOemp.base_salaryWHERE=’Jane’DOINSTEADSELECTbase_salaryFROMempWHEREname=’Mike’當(dāng)查詢Jane的工資時,返回Mike的工資。這樣存儲Jane工資的單元永遠(yuǎn)不會被訪問。查詢-查詢規(guī)則ONSELECTTOemp.bas65第二章小結(jié)一個對象關(guān)系型DBMS所具有的特征。第二章小結(jié)一個對象關(guān)系型DBMS所具有的特征。66對象關(guān)系型DBMS開發(fā)技術(shù)

鞠時光對象關(guān)系型DBMS開發(fā)技術(shù)67第一章緒論如何理解數(shù)據(jù)庫這個名詞?為什么研究DBMS?我們研究DBMS的目的?現(xiàn)在常用的幾類商業(yè)數(shù)據(jù)庫世界上研究數(shù)據(jù)庫處于前沿的單位第一章緒論如何理解數(shù)據(jù)庫這個名詞?68如何理解數(shù)據(jù)庫這個名詞DBMSDBMS的體系結(jié)構(gòu),存儲方法(數(shù)據(jù)模式datamodel),索引機制,查詢機制,優(yōu)化查詢等。數(shù)據(jù)庫理論數(shù)據(jù)源:NormalForm系統(tǒng)模型:ER圖,數(shù)據(jù)完整性dataintegrity,數(shù)據(jù)安全性datasecurity,數(shù)據(jù)共享datasharing信息利用:activedata,datafusion,datadining數(shù)據(jù)庫應(yīng)用如何理解數(shù)據(jù)庫這個名詞DBMS69本課目的擴展關(guān)系DBMS到對象關(guān)系型DBMS研究如何設(shè)計對象關(guān)系型DBMS的體系結(jié)構(gòu),存儲方法,索引機制,查詢機制等本課目的擴展關(guān)系DBMS到對象關(guān)系型DBMS70為什么研究DBMS?新興的應(yīng)用領(lǐng)域的需求:計算機集成制造系統(tǒng)(CIMS)辦公信息系統(tǒng)(OIS)多媒體系統(tǒng)(multimedia)高維數(shù)據(jù)應(yīng)用系統(tǒng)為什么研究DBMS?新興的應(yīng)用領(lǐng)域的需求:71計算機集成制造系統(tǒng)(CIMS)CIMS是在CAD,CAE,CAE,CAPP,FMS,等基礎(chǔ)上發(fā)展起來的高技術(shù).CIMS對DBMS的新功能要求包括能定義新的面向工程環(huán)境的數(shù)據(jù)模型;能修改和重新定義已有的數(shù)據(jù)結(jié)構(gòu);能存儲和有效地檢索設(shè)計圖形和工程數(shù)據(jù);能管理設(shè)計過程中對象演變的歷史.計算機集成制造系統(tǒng)(CIMS)CIMS是在CAD,72對象關(guān)系型DBMS開發(fā)技術(shù)課件73辦公信息系統(tǒng)(OIS)

辦公環(huán)境處理信息的多樣性(圖形、圖像、報表、文字、聲音)及存儲介質(zhì)的多樣性(紙張、聲音、錄音、錄像、磁盤、光盤等)信息類型豐富時間因素不規(guī)則交互式界面信息的過濾與綜合優(yōu)先級調(diào)度和觸發(fā)器辦公信息系統(tǒng)(OIS)辦公環(huán)境處理信息的多樣性(圖形、圖74多媒體系統(tǒng)現(xiàn)在世界上85%的有用信息還未轉(zhuǎn)變成電子形式,大部分是多媒體信息,如膠片。多媒體系統(tǒng)現(xiàn)在世界上85%的有用信息還未轉(zhuǎn)變成電子形式,大部75高維數(shù)據(jù)應(yīng)用系統(tǒng)(1)高維數(shù)據(jù)對數(shù)據(jù)庫管理系統(tǒng)提出了許多特殊的要求:一個對象不能用存儲字符編碼的方式來存儲。檢索圖象也不像檢索一個字符串或一個字符那樣方便。用戶查詢或檢索某個對象,有時需據(jù)空間關(guān)系來進行。如:拓?fù)洳僮鳎骸鞍?,“相?lián)”等。幾何操作:“靠近”,“遠(yuǎn)離”,“覆蓋”等等。方位操作:“在┄┄右邊”,“在┄┄上面這些操作基于實體間相互所處的空間位置之上。高維數(shù)據(jù)應(yīng)用系統(tǒng)(1)高維數(shù)據(jù)對數(shù)據(jù)庫管理系統(tǒng)提出了許多特殊76高維數(shù)據(jù)應(yīng)用系統(tǒng)(2)數(shù)據(jù)庫管理語言有能力描述高維信息和字符信息的處理過程,但由于兩種過程在本質(zhì)上的差異。在諸如DDL,DML、SQL中,描述兩種過程的語義規(guī)則不能混合。高維數(shù)據(jù)應(yīng)用系統(tǒng)(2)數(shù)據(jù)庫管理語言有能力描述高維信息77(為什么研究DBMS?)結(jié)論這些新的特征,使得傳統(tǒng)的關(guān)系型DBMS,或者面向?qū)ο笮虳BMS均難以有效的管理這些類型的數(shù)據(jù)。促使我們?nèi)パ芯?、引入新型的DBMS系統(tǒng)。其中最重要的研究方向之一就是將面向?qū)ο蠹夹g(shù)與關(guān)系數(shù)據(jù)庫技術(shù)相結(jié)合,構(gòu)造新型的對象-關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(為什么研究DBMS?)結(jié)論這些新的特征,使得傳統(tǒng)的78我們研究DBMS的目的數(shù)據(jù)庫管理系統(tǒng)

(DBMS)的研究與開發(fā)

WEB數(shù)據(jù)庫(電子商務(wù)、電子政務(wù)系統(tǒng))安全數(shù)據(jù)庫

數(shù)據(jù)挖掘數(shù)據(jù)擬合對象關(guān)系型DBMS可視化數(shù)據(jù)庫查詢語言

GIS系統(tǒng)

工程數(shù)據(jù)庫

(如CAD數(shù)據(jù)庫)我們研究DBMS的目的數(shù)據(jù)庫管理系統(tǒng)

(DBMS)的研究與79常用的幾類商業(yè)數(shù)據(jù)庫

2

4

1

3有無查詢功能

復(fù)雜簡單簡單復(fù)雜數(shù)據(jù)復(fù)雜度常用的幾類商業(yè)數(shù)據(jù)庫2413有無查詢功能80區(qū)域1:表示處理的是簡單數(shù)據(jù)常見的正文處理系統(tǒng)有word,F(xiàn)ramemaker,wordperfect,vi等。這些正文系統(tǒng)可歸類為最簡單的DBMS軟件系統(tǒng)。用名字打開文件,文件內(nèi)容被拷貝到虛存中。在編輯正文時,更新虛存對象,對象被定期地保存到硬盤中。在結(jié)束正文處理時關(guān)閉文件,這時,虛存中的拷貝被存到文件系統(tǒng)中區(qū)域1:表示處理的是簡單數(shù)據(jù)常見的正文處理系統(tǒng)有word81區(qū)域2:簡單數(shù)據(jù),復(fù)雜查詢

關(guān)系數(shù)據(jù)庫。目前常見的保險業(yè)務(wù)處理系統(tǒng)、企業(yè)的人事管理、生產(chǎn)管理、物資管理等信息管理系統(tǒng)都是基于這種RDBMS之上開發(fā)的。如Informix,Oracle,delph,VB,VF等。查詢語言,國際標(biāo)準(zhǔn)組織相繼推出SQL-86、SQL-89和SQL-92標(biāo)準(zhǔn)。為了方便數(shù)據(jù)庫應(yīng)用系統(tǒng)的開發(fā),數(shù)據(jù)庫廠商開發(fā)了各種客戶工具,除了可以在SQL語句中嵌入第三代語言(如C,COBOL等),還提供4GL第四代語言區(qū)域2:簡單數(shù)據(jù),復(fù)雜查詢關(guān)系數(shù)據(jù)庫。目前常見的保險業(yè)82區(qū)域2:傳統(tǒng)數(shù)據(jù)庫不足之處(1)傳統(tǒng)數(shù)據(jù)模型,特別是關(guān)系數(shù)據(jù)模型用來描述復(fù)雜的嵌套實體就顯得過于簡單。傳統(tǒng)數(shù)據(jù)庫系統(tǒng)也沒有提供相應(yīng)的機制去表達和管理這些實體。(2)傳統(tǒng)數(shù)據(jù)庫系統(tǒng)只支持有限的數(shù)據(jù)類型,它甚至不支持對較長的非結(jié)構(gòu)化數(shù)據(jù),如圖形、圖像和文本文檔的存儲和檢索。(3)傳統(tǒng)數(shù)據(jù)模型不含若干常用的語義概念,如像泛化(generalization)和聚集(aggregation)關(guān)系。(4)許多應(yīng)用程序是用某種程序設(shè)計語言(FORTRAN、或C)嵌入到某個數(shù)據(jù)庫語言(如SQL、DML)實現(xiàn)的。而程序設(shè)計語言與數(shù)據(jù)庫語言無論在數(shù)據(jù)模型還是在數(shù)據(jù)結(jié)構(gòu)上都是很不相同的.區(qū)域2:傳統(tǒng)數(shù)據(jù)庫不足之處(1)傳統(tǒng)數(shù)據(jù)模型,特別是關(guān)系數(shù)據(jù)83區(qū)域3:復(fù)雜數(shù)據(jù),簡單查詢本類應(yīng)用與前兩類應(yīng)用最主要的不同在于增加了復(fù)雜數(shù)據(jù)。而與第二類應(yīng)用相比,它又幾乎沒有查詢要求.面向?qū)ο髷?shù)據(jù)庫產(chǎn)品主要有ObjectStore,O2,Objectivity/DB,Matisse,ONTOS,Gemstone等。這些產(chǎn)品在堅固性,可伸縮性,客戶/服務(wù)器結(jié)構(gòu),應(yīng)用開發(fā)工具等許多方面不如RDBMS產(chǎn)品。區(qū)域3:復(fù)雜數(shù)據(jù),簡單查詢本類應(yīng)用與前兩類應(yīng)用最主要的84區(qū)域3:面向?qū)ο髷?shù)據(jù)庫的不足

面向?qū)ο髷?shù)據(jù)庫產(chǎn)品在程序設(shè)計接口、實現(xiàn)方法(手段)、對查詢的支持等等方面都存在許多差異。面向?qū)ο蟮臄?shù)據(jù)庫產(chǎn)品在一些方面仍然落后于關(guān)系數(shù)據(jù)庫產(chǎn)品,例如,還沒有OODB支持視圖機制.OODB明顯缺乏最終用戶工具及應(yīng)用開發(fā)工具.OODB的商業(yè)市場的增長速度比預(yù)想的要慢的多.區(qū)域3:面向?qū)ο髷?shù)據(jù)庫的不足面向?qū)ο髷?shù)據(jù)庫產(chǎn)品在程序85區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(1)圖象數(shù)據(jù)庫,其結(jié)構(gòu)定義如下:createtablephoto(idint;/*圖象編號*/datedate;/*拍攝日期*/captiondocument;/*圖象說明*/picturephoto_CD_image;/*圖象編碼*/);區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(1)圖象數(shù)據(jù)庫,其結(jié)構(gòu)定義如下:86被存儲的對象具有復(fù)雜的數(shù)據(jù)結(jié)構(gòu)按內(nèi)容對圖象進行查詢還要求數(shù)據(jù)庫管理系統(tǒng)允許用戶自定義數(shù)據(jù)類型.并自定義這些數(shù)據(jù)類型上的函數(shù)和操作區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(2)被存儲的對象具有復(fù)雜的數(shù)據(jù)結(jié)構(gòu)區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(287(1)表達和管理復(fù)雜嵌套對象的能力,以允許逐步細(xì)化復(fù)雜實體。(2)存儲和檢索任意長數(shù)據(jù)的能力。(3)定義和管理任意數(shù)據(jù)類型的能力。(4)表達和管理數(shù)據(jù)庫變化的能力,包括時間和時間間隔的表示法,單對象的版本,復(fù)雜嵌套對象的版本和模式實體的版本。(5)表達和操作各種有用的語義模型概念的能力。例如CAE、復(fù)合文檔合成等等上下文中的裝配部分層次就是這些概念之一。(6)指定規(guī)則和擴充制約的能力,以支持基于知識的應(yīng)用。。(7)管理長協(xié)同事務(wù)的能力。下一代數(shù)據(jù)庫系統(tǒng)的特征(1)表達和管理復(fù)雜嵌套對象的能力,以允許逐步細(xì)化復(fù)雜實體。88世界上研究數(shù)據(jù)庫處于前沿的單位(1)Http://(2)PostgreSQL-Object-RelationalDBMS

(3)/papers/Informix/(4)UniversalDBMS/udbms.html世界上研究數(shù)據(jù)庫處于前沿的單位(1)Http://www.89第二章對象關(guān)系數(shù)據(jù)庫的基本特性O(shè)RDBMS的定義開發(fā)對象-關(guān)系DBMS的途徑支持復(fù)雜對象基類擴充繼承機制規(guī)則系統(tǒng)第二章對象關(guān)系數(shù)據(jù)庫的基本特性O(shè)RDBMS的定義901990年,由Stonebraker等人組成的高級DBMS功能委員會發(fā)表的“第三代數(shù)據(jù)庫系統(tǒng)宣言”:第三代對象關(guān)系型數(shù)據(jù)庫系統(tǒng)必須具備的三條原則:原則1:除傳統(tǒng)的數(shù)據(jù)管理服務(wù)外,第三代DBMS將支持更加豐富的對象結(jié)構(gòu)和規(guī)則。原則2:第三代DBMS必須包含第二代(即關(guān)系的)DBMS的所有功能。原則3:第三代DBMS必須對其它子系統(tǒng)開放。ORDBMS的定義1990年,由Stonebraker等人組成的高級91對象關(guān)系型DBMS這種系統(tǒng)具備關(guān)系數(shù)據(jù)庫管理系統(tǒng)的功能,同時又支持面向?qū)ο蟮奶匦浴K顷P(guān)系數(shù)據(jù)庫技術(shù)與面向?qū)ο蠹夹g(shù)的融合。主要是擴充基類、支持動態(tài)數(shù)據(jù)類型、支持復(fù)雜對象和大對象、增加復(fù)雜對象繼承機制及支持規(guī)則系統(tǒng)等。并支持SQL查詢語言的超集ORSQL。它適合于具有高維數(shù)據(jù)、動態(tài)數(shù)據(jù)、復(fù)雜查詢等工程應(yīng)用領(lǐng)域??捎米鏖_發(fā)CAD、多媒體、CIMS、GIS等應(yīng)用系統(tǒng)。對象關(guān)系型DBMS這種系統(tǒng)具備關(guān)系數(shù)據(jù)庫管理系統(tǒng)的功能,同時92實現(xiàn)這種系統(tǒng)需研究:通用存儲機制。系統(tǒng)的存儲機制必須能存儲對象關(guān)系型數(shù)據(jù)。類屬的索引機制。原有的關(guān)系型DBMS只為數(shù)字和字符串兩種數(shù)據(jù)類型內(nèi)置了B樹代碼。在ORDBMS中,B樹代碼必須是類屬的。這樣就可以在任何數(shù)據(jù)類型上建立B樹索引。使得系統(tǒng)能在任何數(shù)據(jù)類型上提供高維存取方法。實現(xiàn)這種系統(tǒng)需研究:93必須提供用戶自定義新的數(shù)據(jù)類型和函數(shù)的功能。這種可擴充性消除了傳統(tǒng)的DBMS必須進行的對新數(shù)據(jù)類型和函數(shù)的繁瑣模擬。規(guī)則系統(tǒng)。這些規(guī)則被數(shù)據(jù)庫系統(tǒng)實施后,存儲的數(shù)據(jù)變的更主動(active),使得它更具有自己的行為。即數(shù)據(jù)庫中的數(shù)據(jù)能自己講話。研究定義對象關(guān)系型數(shù)據(jù)庫查詢語言O(shè)RSQL

必須提供用戶自定義新的數(shù)據(jù)類型和函數(shù)的功能。這種可擴充性消除94開發(fā)對象關(guān)系DBMS的途徑(1)從頭寫一個ORDBMS(2)對ORDBMS進行功能擴充(要在源代碼上進行)第一個采用增量式演變策略的是Ingres公司,1988年開始,將關(guān)系型引擎擴展為具有基本類型擴充功能和規(guī)則管理的系統(tǒng)(3)寫一個包裝層包裝層就是在傳統(tǒng)的關(guān)系型引擎上裹著一個模擬層。這個模擬層支持對象關(guān)系型API,其辦法是將用戶提交的對象關(guān)系型查詢映像成關(guān)系型查詢,然后在傳統(tǒng)關(guān)系型引擎上執(zhí)行。HP公司已采用包裝層策略,把關(guān)系型引擎Allbase改造成關(guān)系-對象型引擎OpenODB。模擬效率是非常低的。因為在包裝層中執(zhí)行整個查詢,就意味著包裝層必須有第二個SQL分析器,第二個優(yōu)化器和第二個執(zhí)行器開發(fā)對象關(guān)系DBMS的途徑(1)從頭寫一個ORDBMS95IBM的DB2/CSV2.0系統(tǒng)和CA-Ingres系統(tǒng)支持用戶定義的基類、繼承和視圖等。Illustra是當(dāng)前對象關(guān)系市場上功能相當(dāng)完備的產(chǎn)品,提供基于抽象數(shù)據(jù)類型(ADT)、已經(jīng)開發(fā)好的類型擴充軟件包,用于管理諸如圖象和正文等數(shù)據(jù)類型。這樣的軟件包有Illustra的DataBlade.IBM的DatabaseExtender等幾個具有對象關(guān)系數(shù)據(jù)庫特征的產(chǎn)品IBM的DB2/CSV2.0系統(tǒng)和CA-Ingres系統(tǒng)支96支持復(fù)雜對象特性1:豐富的復(fù)雜對象類型“組合”、“集合”和“指針”三種類型構(gòu)造器。特性2:復(fù)雜對象類型上的函數(shù)特性3:復(fù)雜對象的大小對組合的成員總存儲量大小不應(yīng)有限制,對集合大小和成員數(shù)目也不應(yīng)有限制。特性4.:SQL的超集支持復(fù)雜對象特性1:豐富的復(fù)雜對象類型97創(chuàng)建復(fù)雜對象(組合)CREATEROWTYPEaddr_t(Streetvarchar(30),Cityvarchar(20),Statechar(2),Zipint);有了addr_t這種復(fù)雜對象類型,一個公司的職工信息表可以定義成:CREATETABLEemployee(Namevarchar(3),startdatedate,salaryint,addressaddr_t);創(chuàng)建復(fù)雜對象(組合)CREATEROWTYPEaddr98CREATEROWTYPEemployee_t(Namevarchar(30),Startdatedate,Salaryint,Addressaddr_t);然后,公司的職員表可以更簡單的定義為:CREATETABLEemployeeOFTYPEemployee_t;把職工的所有信息定義為一個類型CREATEROWTYPEemployee_t(把99這樣創(chuàng)建的表稱為“類型表”,可見這種表并不滿足1NF范式這樣創(chuàng)建的表稱為“類型表”,可見這種表并不滿足1NF范式100集合集合SET:普通的集合類型,元素不能重復(fù)。多值集合MULTISET:元素可以重復(fù)的集合。列表LIST:有順序的集合。集合集合SET:普通的集合類型,101指針指針類型的存在基于以下事實:數(shù)據(jù)庫表中的一行或一個復(fù)雜對象的實例可以有一個唯一的內(nèi)部標(biāo)識――稱作行標(biāo)識(ROWID)或?qū)ο髽?biāo)識(OID).指針實際存儲的是這種標(biāo)識。這些標(biāo)識是永久的,且絕對不會重復(fù).例,可把公司中某一部門表的manager列改成指針類型:managerREF(employee-t)指針指針類型的存在基于以下事實:數(shù)據(jù)庫表中的102綜合利用指針的集合在部門表中直接包含部門的職員workersSET(REF(employee-t))引入復(fù)雜對象后的部門表定義如下:CREATETABLEdepartment(dnamevarchar(30),managerREF(employee-t),workersSET(REF(employee-t));結(jié)構(gòu)非常簡明,并且完整的描述了一個部門的信息。

綜合利用指針的集合在部門表中直接包含部門的職員103基類擴充SQL-92定義的基本數(shù)據(jù)類型只有以下幾種:整數(shù)、實數(shù)、字符串(定長或可變長)、時間.基本數(shù)據(jù)類型上的操作符和函數(shù)也都是精確定義(有的是硬編碼)的.所謂基類擴充,是指用戶在SQL中能創(chuàng)建帶有相應(yīng)操作符和函數(shù)的新數(shù)據(jù)類型.創(chuàng)建一個新的基類需定義類型名、類型的存儲信息和將該數(shù)據(jù)類型與ASCII字符互相轉(zhuǎn)換的子程序?;悢U充SQL-92定義的基本數(shù)據(jù)類型只有以104創(chuàng)建一個新的基類創(chuàng)建基類需定義類型名、類型的存儲信息和將該數(shù)據(jù)類型與ASCII字符互相轉(zhuǎn)換的子程序:創(chuàng)建類型語句創(chuàng)建其上的輸入函數(shù)創(chuàng)建其上的輸出函數(shù)創(chuàng)建一個新的基類創(chuàng)建基類需定義類型名、類型105下面是IUS中創(chuàng)建OpaqueType的基類complex的例子創(chuàng)建類型語句:CREATEOPAQUETYPEcomplex(internallength=8,alighnment=4);創(chuàng)建其上的輸入函數(shù):CREATEFUNCTIONcomplex_in(lvarchar)RETURNINGcomplexWITH(NOTVARIANT)EXTERNALNAME‘/funcs/complex/complex.so’LANGUAGECENDFUNCTION;CREATEIMPLICITCAST(lvarcharascomplexwithcomplex_in);下面是IUS中創(chuàng)建OpaqueType的基類complex106創(chuàng)建其上的輸出函數(shù):CREATEFUNCTIONcomplex_out(complex)RETURNINGlvarcharWITH(NOTVARIANT)EXTERNALNAME‘/funcs/complex/complex.so’LANGUAGECENDFUNCTION;CREATEEXPLICITCAST(complexaslvarcharwithcomplex_out);創(chuàng)建其上的輸出函數(shù):107用戶定義的類型,用戶可以加入各種操作操作函數(shù)的定義:用通用的第三代編程語言如C等來編寫函數(shù)。然后將函數(shù)注冊到系統(tǒng)中去.如Informix的StoredProcedureLanguage(SPL)語言寫函數(shù)。格式如下:CREATE[DBA]FUNCTION<函數(shù)名>[參數(shù)表]{RETURNS|RETURNING}<類型名>[SPECIFIC<特定名>][WITH(<修飾符表>)]<SPL語句表>[ENDFUNCTION][DOCUMENT<字符串表>WITHLISTINGIN<字符串表>];用戶定義的類型,用戶可以加入各種操作操作函數(shù)的定義:108我們定義一個函數(shù)increase_by_pct用來求一個數(shù)按某個百分比增長后的值。CREATEFUNCTIONincrease_by_pct(amtnumeric,pctnumeric)RETURNINGnumeric;DEFINEresultnumeric;LETresult=amt+amt*(pct/100);RETURNresult;ENDFUNCTION;定義操作函數(shù)例我們定義一個函數(shù)increase_by_pct用來求一個數(shù)109使用定義操作函數(shù)的方法1。直接執(zhí)行這個函數(shù)EXECUTEFUNCTIONincrease_by_pct(8,20)intonweval;CALLincrease_by_pct(8,20)RETURNINGnewval;使用定義操作函數(shù)的方法1。直接執(zhí)行這個函數(shù)1102。在SQL語句中使用該函數(shù)例如,有一張表Inventory如下:part_id,description,quantity,price,total_price,last_shipHDW566,ClawHammer,10,10.00,NULL,NULL在select語句中使用該函數(shù):SELECTincrease_by_pct(price,20)AShigher_priceFROMinventory;在update語句中使用該函數(shù):UPDATEinventorySETprice=increase_by_pct(price,20);SELECT*FROMinventory;使用定義操作函數(shù)的方法2。在SQL語句中使用該函數(shù)使用定義操作函數(shù)的方法111定義操作符傳統(tǒng)SQL支持相當(dāng)多的操作符。例如,對整數(shù)和浮點數(shù)都有比較操作符(<,<=,=,>,<>).從語法上講,每個操作符都是一個雙參數(shù)函數(shù),只不過函數(shù)名出現(xiàn)在二個參數(shù)之間。Illustra系統(tǒng)中用以下命令來注冊操作符:createoperatorbindingopr-nameTOfunction-name;定義操作符傳統(tǒng)SQL支持相當(dāng)多的操作符。112以職工信息系統(tǒng)為例?,F(xiàn)假設(shè)有一查詢?nèi)缦拢簊electfromemp,emprwhere=‘Ju’anddistance(emp.location,r.location)<1以上查詢也可表示為:selectfromemp,emprwhere=‘Ju”andcontained(r.location,circle(emp.location,1);定義操作符例以職工信息系統(tǒng)為例?,F(xiàn)假設(shè)有一查詢?nèi)缦拢憾x操作符例113我們將“<<”定義為對應(yīng)于函數(shù)contained的操作符,則也可用操作符來寫這個查詢:selectfromemp,emprwhere=‘Ju”andr.location<<circle(emp.location,1);定義操作符例我們將“<<”定義為對應(yīng)于函數(shù)contained的操作符,則114基類擴充模塊DataBlade基類擴充模塊是一種標(biāo)準(zhǔn)的軟件模塊,它可以被插入到數(shù)據(jù)庫中,用以擴展其能力.Informix現(xiàn)在正在推出的基類擴充模塊有二十多個,這里列舉幾個:1.二維/三維空間基類擴充模塊對二維和三維空間對象(點、線、面等)進行存儲和分析,并使用高性能的R樹對數(shù)據(jù)進行訪問。使用函數(shù)(overlap,area,containment等)對空間對象進行各種操作。2.圖象基類擴充模塊在單色或彩色模式下,對50多種格式(TIFF、GIF、JPEG等)的圖象進行轉(zhuǎn)換、存儲、操作、加強和管理。還提供許多范例,包括旋轉(zhuǎn)、邊界加強和卷積等。基類擴充模塊DataBlade基類擴充模塊是一種1153.正文基類擴充模塊使用一個廣泛的函數(shù)集,來處理基于內(nèi)容的文檔查找。4.時間序列基類擴充模塊對任何類型(整數(shù)、浮點數(shù)、正文信息等)數(shù)據(jù)的有規(guī)律的重復(fù)性的時間進行定義和操作,這是金融分析中的一個關(guān)鍵性需求。5.Web基類擴充模塊快速創(chuàng)建智能化的交互Web應(yīng)用,可根據(jù)存儲在數(shù)據(jù)庫中的信息動態(tài)地生成HTML頁。6.VIR(可視化的信息查詢)基類擴充模塊通過強有力的,基于內(nèi)容的查詢機制來對圖象和影像信息進行查詢。這一機制依據(jù)圖象屬性,例如顏色、形狀、質(zhì)地和組成成分等,來分析可視信息?;悢U充模塊(DataBlade)23.正文基類擴充模塊基類擴充模塊(DataBlade)2116繼承機制支持子類對父類的繼承是面向?qū)ο蠓椒ǖ闹匾匦灾?。在實際的問題模型中,許多對象之間有著繼承的關(guān)系。提供繼承機制,可以更好的模擬實際問題,有利于軟件的高內(nèi)聚,低耦合的模塊化,也有利于軟件的一致性和可重用性.繼承機制支持子類對父類的繼承是面向?qū)ο蠓椒ǖ闹匾?17繼承分類一個子類對象(子類數(shù)據(jù)或子表)可以從父類對象中繼承數(shù)據(jù)屬性和行為。其中行為一般包括函數(shù),操作符,約束條件定義,參照完整性,存取方法,存儲策略以及觸發(fā)器等。數(shù)據(jù)繼承函數(shù)繼承繼承分類一個子類對象(子類數(shù)據(jù)或子表)可以從父118數(shù)據(jù)繼承(1)假設(shè)某公司的雇員中有工程師,銷售人員以及其他人員。我們可以定義雇員元組類型作為父類型,而定義工程師和銷售人員元組類型作為他的子類型。數(shù)據(jù)繼承(1)假設(shè)某公司的雇員中有工程師,銷119我們可以用下面的語句定義公司職工的元組類型:CreateROWTYPEemp_t(namevarchar(30),base_salarynumeric(12,2),managerREF(emp_t));CreateROWTYPEengineer_t(skillsvarchar(20),bonusnumeric(12,2))UNDERemp_t;CreateROWTYPEsales_t(territoryvarchar(30),commisionnumeric(12,2),annual_salesnumeric(12,2))

溫馨提示

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

評論

0/150

提交評論