版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
對(duì)象關(guān)系型DBMS開發(fā)技術(shù)
鞠時(shí)光對(duì)象關(guān)系型DBMS開發(fā)技術(shù)1第一章緒論如何理解數(shù)據(jù)庫這個(gè)名詞?為什么研究DBMS?我們研究DBMS的目的?現(xiàn)在常用的幾類商業(yè)數(shù)據(jù)庫世界上研究數(shù)據(jù)庫處于前沿的單位第一章緒論如何理解數(shù)據(jù)庫這個(gè)名詞?2如何理解數(shù)據(jù)庫這個(gè)名詞DBMSDBMS的體系結(jié)構(gòu),存儲(chǔ)方法(數(shù)據(jù)模式datamodel),索引機(jī)制,查詢機(jī)制,優(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ù)庫這個(gè)名詞DBMS3本課目的擴(kuò)展關(guān)系DBMS到對(duì)象關(guān)系型DBMS研究如何設(shè)計(jì)對(duì)象關(guān)系型DBMS的體系結(jié)構(gòu),存儲(chǔ)方法,索引機(jī)制,查詢機(jī)制等本課目的擴(kuò)展關(guān)系DBMS到對(duì)象關(guān)系型DBMS4為什么研究DBMS?新興的應(yīng)用領(lǐng)域的需求:計(jì)算機(jī)集成制造系統(tǒng)(CIMS)辦公信息系統(tǒng)(OIS)多媒體系統(tǒng)(multimedia)高維數(shù)據(jù)應(yīng)用系統(tǒng)為什么研究DBMS?新興的應(yīng)用領(lǐng)域的需求:5計(jì)算機(jī)集成制造系統(tǒng)(CIMS)CIMS是在CAD,CAE,CAE,CAPP,FMS,等基礎(chǔ)上發(fā)展起來的高技術(shù).CIMS對(duì)DBMS的新功能要求包括能定義新的面向工程環(huán)境的數(shù)據(jù)模型;能修改和重新定義已有的數(shù)據(jù)結(jié)構(gòu);能存儲(chǔ)和有效地檢索設(shè)計(jì)圖形和工程數(shù)據(jù);能管理設(shè)計(jì)過程中對(duì)象演變的歷史.計(jì)算機(jī)集成制造系統(tǒng)(CIMS)CIMS是在CAD,6對(duì)象關(guān)系型DBMS開發(fā)技術(shù)課件7辦公信息系統(tǒng)(OIS)
辦公環(huán)境處理信息的多樣性(圖形、圖像、報(bào)表、文字、聲音)及存儲(chǔ)介質(zhì)的多樣性(紙張、聲音、錄音、錄像、磁盤、光盤等)信息類型豐富時(shí)間因素不規(guī)則交互式界面信息的過濾與綜合優(yōu)先級(jí)調(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ù)對(duì)數(shù)據(jù)庫管理系統(tǒng)提出了許多特殊的要求:一個(gè)對(duì)象不能用存儲(chǔ)字符編碼的方式來存儲(chǔ)。檢索圖象也不像檢索一個(gè)字符串或一個(gè)字符那樣方便。用戶查詢或檢索某個(gè)對(duì)象,有時(shí)需據(jù)空間關(guān)系來進(jìn)行。如:拓?fù)洳僮鳎骸鞍保跋嗦?lián)”等。幾何操作:“靠近”,“遠(yuǎn)離”,“覆蓋”等等。方位操作:“在┄┄右邊”,“在┄┄上面這些操作基于實(shí)體間相互所處的空間位置之上。高維數(shù)據(jù)應(yīng)用系統(tǒng)(1)高維數(shù)據(jù)對(duì)數(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)パ芯俊⒁胄滦偷腄BMS系統(tǒng)。其中最重要的研究方向之一就是將面向?qū)ο蠹夹g(shù)與關(guān)系數(shù)據(jù)庫技術(shù)相結(jié)合,構(gòu)造新型的對(duì)象-關(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ù)擬合對(duì)象關(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ù)雜簡(jiǎn)單簡(jiǎn)單復(fù)雜數(shù)據(jù)復(fù)雜度常用的幾類商業(yè)數(shù)據(jù)庫2413有無查詢功能14區(qū)域1:表示處理的是簡(jiǎn)單數(shù)據(jù)常見的正文處理系統(tǒng)有word,F(xiàn)ramemaker,wordperfect,vi等。這些正文系統(tǒng)可歸類為最簡(jiǎn)單的DBMS軟件系統(tǒng)。用名字打開文件,文件內(nèi)容被拷貝到虛存中。在編輯正文時(shí),更新虛存對(duì)象,對(duì)象被定期地保存到硬盤中。在結(jié)束正文處理時(shí)關(guān)閉文件,這時(shí),虛存中的拷貝被存到文件系統(tǒng)中區(qū)域1:表示處理的是簡(jiǎn)單數(shù)據(jù)常見的正文處理系統(tǒng)有word15區(qū)域2:簡(jiǎn)單數(shù)據(jù),復(fù)雜查詢
關(guān)系數(shù)據(jù)庫。目前常見的保險(xiǎn)業(yè)務(wù)處理系統(tǒng)、企業(yè)的人事管理、生產(chǎn)管理、物資管理等信息管理系統(tǒng)都是基于這種RDBMS之上開發(fā)的。如Informix,Oracle,delph,VB,VF等。查詢語言,國(guó)際標(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:簡(jiǎn)單數(shù)據(jù),復(fù)雜查詢關(guān)系數(shù)據(jù)庫。目前常見的保險(xiǎn)業(yè)16區(qū)域2:傳統(tǒng)數(shù)據(jù)庫不足之處(1)傳統(tǒng)數(shù)據(jù)模型,特別是關(guān)系數(shù)據(jù)模型用來描述復(fù)雜的嵌套實(shí)體就顯得過于簡(jiǎn)單。傳統(tǒng)數(shù)據(jù)庫系統(tǒng)也沒有提供相應(yīng)的機(jī)制去表達(dá)和管理這些實(shí)體。(2)傳統(tǒng)數(shù)據(jù)庫系統(tǒng)只支持有限的數(shù)據(jù)類型,它甚至不支持對(duì)較長(zhǎng)的非結(jié)構(gòu)化數(shù)據(jù),如圖形、圖像和文本文檔的存儲(chǔ)和檢索。(3)傳統(tǒng)數(shù)據(jù)模型不含若干常用的語義概念,如像泛化(generalization)和聚集(aggregation)關(guān)系。(4)許多應(yīng)用程序是用某種程序設(shè)計(jì)語言(FORTRAN、或C)嵌入到某個(gè)數(shù)據(jù)庫語言(如SQL、DML)實(shí)現(xiàn)的。而程序設(shè)計(jì)語言與數(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ù),簡(jiǎn)單查詢本類應(yīng)用與前兩類應(yīng)用最主要的不同在于增加了復(fù)雜數(shù)據(jù)。而與第二類應(yīng)用相比,它又幾乎沒有查詢要求.面向?qū)ο髷?shù)據(jù)庫產(chǎn)品主要有ObjectStore,O2,Objectivity/DB,Matisse,ONTOS,Gemstone等。這些產(chǎn)品在堅(jiān)固性,可伸縮性,客戶/服務(wù)器結(jié)構(gòu),應(yīng)用開發(fā)工具等許多方面不如RDBMS產(chǎn)品。區(qū)域3:復(fù)雜數(shù)據(jù),簡(jiǎn)單查詢本類應(yīng)用與前兩類應(yīng)用最主要的18區(qū)域3:面向?qū)ο髷?shù)據(jù)庫的不足
面向?qū)ο髷?shù)據(jù)庫產(chǎn)品在程序設(shè)計(jì)接口、實(shí)現(xiàn)方法(手段)、對(duì)查詢的支持等等方面都存在許多差異。面向?qū)ο蟮臄?shù)據(jù)庫產(chǎn)品在一些方面仍然落后于關(guān)系數(shù)據(jù)庫產(chǎn)品,例如,還沒有OODB支持視圖機(jī)制.OODB明顯缺乏最終用戶工具及應(yīng)用開發(fā)工具.OODB的商業(yè)市場(chǎng)的增長(zhǎng)速度比預(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;/*圖象編號(hào)*/datedate;/*拍攝日期*/captiondocument;/*圖象說明*/picturephoto_CD_image;/*圖象編碼*/);區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(1)圖象數(shù)據(jù)庫,其結(jié)構(gòu)定義如下:20被存儲(chǔ)的對(duì)象具有復(fù)雜的數(shù)據(jù)結(jié)構(gòu)按內(nèi)容對(duì)圖象進(jìn)行查詢還要求數(shù)據(jù)庫管理系統(tǒng)允許用戶自定義數(shù)據(jù)類型.并自定義這些數(shù)據(jù)類型上的函數(shù)和操作區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(2)被存儲(chǔ)的對(duì)象具有復(fù)雜的數(shù)據(jù)結(jié)構(gòu)區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(221(1)表達(dá)和管理復(fù)雜嵌套對(duì)象的能力,以允許逐步細(xì)化復(fù)雜實(shí)體。(2)存儲(chǔ)和檢索任意長(zhǎng)數(shù)據(jù)的能力。(3)定義和管理任意數(shù)據(jù)類型的能力。(4)表達(dá)和管理數(shù)據(jù)庫變化的能力,包括時(shí)間和時(shí)間間隔的表示法,單對(duì)象的版本,復(fù)雜嵌套對(duì)象的版本和模式實(shí)體的版本。(5)表達(dá)和操作各種有用的語義模型概念的能力。例如CAE、復(fù)合文檔合成等等上下文中的裝配部分層次就是這些概念之一。(6)指定規(guī)則和擴(kuò)充制約的能力,以支持基于知識(shí)的應(yīng)用。。(7)管理長(zhǎng)協(xié)同事務(wù)的能力。下一代數(shù)據(jù)庫系統(tǒng)的特征(1)表達(dá)和管理復(fù)雜嵌套對(duì)象的能力,以允許逐步細(xì)化復(fù)雜實(shí)體。22世界上研究數(shù)據(jù)庫處于前沿的單位(1)Http://(2)PostgreSQL-Object-RelationalDBMS
(3)/papers/Informix/(4)UniversalDBMS/udbms.html世界上研究數(shù)據(jù)庫處于前沿的單位(1)Http://www.23第二章對(duì)象關(guān)系數(shù)據(jù)庫的基本特性O(shè)RDBMS的定義開發(fā)對(duì)象-關(guān)系DBMS的途徑支持復(fù)雜對(duì)象基類擴(kuò)充繼承機(jī)制規(guī)則系統(tǒng)第二章對(duì)象關(guān)系數(shù)據(jù)庫的基本特性O(shè)RDBMS的定義241990年,由Stonebraker等人組成的高級(jí)DBMS功能委員會(huì)發(fā)表的“第三代數(shù)據(jù)庫系統(tǒng)宣言”:第三代對(duì)象關(guān)系型數(shù)據(jù)庫系統(tǒng)必須具備的三條原則:原則1:除傳統(tǒng)的數(shù)據(jù)管理服務(wù)外,第三代DBMS將支持更加豐富的對(duì)象結(jié)構(gòu)和規(guī)則。原則2:第三代DBMS必須包含第二代(即關(guān)系的)DBMS的所有功能。原則3:第三代DBMS必須對(duì)其它子系統(tǒng)開放。ORDBMS的定義1990年,由Stonebraker等人組成的高級(jí)25對(duì)象關(guān)系型DBMS這種系統(tǒng)具備關(guān)系數(shù)據(jù)庫管理系統(tǒng)的功能,同時(shí)又支持面向?qū)ο蟮奶匦?。它是關(guān)系數(shù)據(jù)庫技術(shù)與面向?qū)ο蠹夹g(shù)的融合。主要是擴(kuò)充基類、支持動(dòng)態(tài)數(shù)據(jù)類型、支持復(fù)雜對(duì)象和大對(duì)象、增加復(fù)雜對(duì)象繼承機(jī)制及支持規(guī)則系統(tǒng)等。并支持SQL查詢語言的超集ORSQL。它適合于具有高維數(shù)據(jù)、動(dòng)態(tài)數(shù)據(jù)、復(fù)雜查詢等工程應(yīng)用領(lǐng)域??捎米鏖_發(fā)CAD、多媒體、CIMS、GIS等應(yīng)用系統(tǒng)。對(duì)象關(guān)系型DBMS這種系統(tǒng)具備關(guān)系數(shù)據(jù)庫管理系統(tǒng)的功能,同時(shí)26實(shí)現(xiàn)這種系統(tǒng)需研究:通用存儲(chǔ)機(jī)制。系統(tǒng)的存儲(chǔ)機(jī)制必須能存儲(chǔ)對(duì)象關(guān)系型數(shù)據(jù)。類屬的索引機(jī)制。原有的關(guān)系型DBMS只為數(shù)字和字符串兩種數(shù)據(jù)類型內(nèi)置了B樹代碼。在ORDBMS中,B樹代碼必須是類屬的。這樣就可以在任何數(shù)據(jù)類型上建立B樹索引。使得系統(tǒng)能在任何數(shù)據(jù)類型上提供高維存取方法。實(shí)現(xiàn)這種系統(tǒng)需研究:27必須提供用戶自定義新的數(shù)據(jù)類型和函數(shù)的功能。這種可擴(kuò)充性消除了傳統(tǒng)的DBMS必須進(jìn)行的對(duì)新數(shù)據(jù)類型和函數(shù)的繁瑣模擬。規(guī)則系統(tǒng)。這些規(guī)則被數(shù)據(jù)庫系統(tǒng)實(shí)施后,存儲(chǔ)的數(shù)據(jù)變的更主動(dòng)(active),使得它更具有自己的行為。即數(shù)據(jù)庫中的數(shù)據(jù)能自己講話。研究定義對(duì)象關(guān)系型數(shù)據(jù)庫查詢語言O(shè)RSQL
必須提供用戶自定義新的數(shù)據(jù)類型和函數(shù)的功能。這種可擴(kuò)充性消除28開發(fā)對(duì)象關(guān)系DBMS的途徑(1)從頭寫一個(gè)ORDBMS(2)對(duì)ORDBMS進(jìn)行功能擴(kuò)充(要在源代碼上進(jìn)行)第一個(gè)采用增量式演變策略的是Ingres公司,1988年開始,將關(guān)系型引擎擴(kuò)展為具有基本類型擴(kuò)充功能和規(guī)則管理的系統(tǒng)(3)寫一個(gè)包裝層包裝層就是在傳統(tǒng)的關(guān)系型引擎上裹著一個(gè)模擬層。這個(gè)模擬層支持對(duì)象關(guān)系型API,其辦法是將用戶提交的對(duì)象關(guān)系型查詢映像成關(guān)系型查詢,然后在傳統(tǒng)關(guān)系型引擎上執(zhí)行。HP公司已采用包裝層策略,把關(guān)系型引擎Allbase改造成關(guān)系-對(duì)象型引擎OpenODB。模擬效率是非常低的。因?yàn)樵诎b層中執(zhí)行整個(gè)查詢,就意味著包裝層必須有第二個(gè)SQL分析器,第二個(gè)優(yōu)化器和第二個(gè)執(zhí)行器開發(fā)對(duì)象關(guān)系DBMS的途徑(1)從頭寫一個(gè)ORDBMS29IBM的DB2/CSV2.0系統(tǒng)和CA-Ingres系統(tǒng)支持用戶定義的基類、繼承和視圖等。Illustra是當(dāng)前對(duì)象關(guān)系市場(chǎng)上功能相當(dāng)完備的產(chǎn)品,提供基于抽象數(shù)據(jù)類型(ADT)、已經(jīng)開發(fā)好的類型擴(kuò)充軟件包,用于管理諸如圖象和正文等數(shù)據(jù)類型。這樣的軟件包有Illustra的DataBlade.IBM的DatabaseExtender等幾個(gè)具有對(duì)象關(guān)系數(shù)據(jù)庫特征的產(chǎn)品IBM的DB2/CSV2.0系統(tǒng)和CA-Ingres系統(tǒng)支30支持復(fù)雜對(duì)象特性1:豐富的復(fù)雜對(duì)象類型“組合”、“集合”和“指針”三種類型構(gòu)造器。特性2:復(fù)雜對(duì)象類型上的函數(shù)特性3:復(fù)雜對(duì)象的大小對(duì)組合的成員總存儲(chǔ)量大小不應(yīng)有限制,對(duì)集合大小和成員數(shù)目也不應(yīng)有限制。特性4.:SQL的超集支持復(fù)雜對(duì)象特性1:豐富的復(fù)雜對(duì)象類型31創(chuàng)建復(fù)雜對(duì)象(組合)CREATEROWTYPEaddr_t(Streetvarchar(30),Cityvarchar(20),Statechar(2),Zipint);有了addr_t這種復(fù)雜對(duì)象類型,一個(gè)公司的職工信息表可以定義成:CREATETABLEemployee(Namevarchar(3),startdatedate,salaryint,addressaddr_t);創(chuàng)建復(fù)雜對(duì)象(組合)CREATEROWTYPEaddr32CREATEROWTYPEemployee_t(Namevarchar(30),Startdatedate,Salaryint,Addressaddr_t);然后,公司的職員表可以更簡(jiǎn)單的定義為:CREATETABLEemployeeOFTYPEemployee_t;把職工的所有信息定義為一個(gè)類型CREATEROWTYPEemployee_t(把33這樣創(chuàng)建的表稱為“類型表”,可見這種表并不滿足1NF范式這樣創(chuàng)建的表稱為“類型表”,可見這種表并不滿足1NF范式34集合集合SET:普通的集合類型,元素不能重復(fù)。多值集合MULTISET:元素可以重復(fù)的集合。列表LIST:有順序的集合。集合集合SET:普通的集合類型,35指針指針類型的存在基于以下事實(shí):數(shù)據(jù)庫表中的一行或一個(gè)復(fù)雜對(duì)象的實(shí)例可以有一個(gè)唯一的內(nèi)部標(biāo)識(shí)――稱作行標(biāo)識(shí)(ROWID)或?qū)ο髽?biāo)識(shí)(OID).指針實(shí)際存儲(chǔ)的是這種標(biāo)識(shí)。這些標(biāo)識(shí)是永久的,且絕對(duì)不會(huì)重復(fù).例,可把公司中某一部門表的manager列改成指針類型:managerREF(employee-t)指針指針類型的存在基于以下事實(shí):數(shù)據(jù)庫表中的36綜合利用指針的集合在部門表中直接包含部門的職員workersSET(REF(employee-t))引入復(fù)雜對(duì)象后的部門表定義如下:CREATETABLEdepartment(dnamevarchar(30),managerREF(employee-t),workersSET(REF(employee-t));結(jié)構(gòu)非常簡(jiǎn)明,并且完整的描述了一個(gè)部門的信息。
綜合利用指針的集合在部門表中直接包含部門的職員37基類擴(kuò)充SQL-92定義的基本數(shù)據(jù)類型只有以下幾種:整數(shù)、實(shí)數(shù)、字符串(定長(zhǎng)或可變長(zhǎng))、時(shí)間.基本數(shù)據(jù)類型上的操作符和函數(shù)也都是精確定義(有的是硬編碼)的.所謂基類擴(kuò)充,是指用戶在SQL中能創(chuàng)建帶有相應(yīng)操作符和函數(shù)的新數(shù)據(jù)類型.創(chuàng)建一個(gè)新的基類需定義類型名、類型的存儲(chǔ)信息和將該數(shù)據(jù)類型與ASCII字符互相轉(zhuǎn)換的子程序?;悢U(kuò)充SQL-92定義的基本數(shù)據(jù)類型只有以38創(chuàng)建一個(gè)新的基類創(chuàng)建基類需定義類型名、類型的存儲(chǔ)信息和將該數(shù)據(jù)類型與ASCII字符互相轉(zhuǎn)換的子程序:創(chuàng)建類型語句創(chuàng)建其上的輸入函數(shù)創(chuàng)建其上的輸出函數(shù)創(chuàng)建一個(gè)新的基類創(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ù)注冊(cè)到系統(tǒng)中去.如Informix的StoredProcedureLanguage(SPL)語言寫函數(shù)。格式如下:CREATE[DBA]FUNCTION<函數(shù)名>[參數(shù)表]{RETURNS|RETURNING}<類型名>[SPECIFIC<特定名>][WITH(<修飾符表>)]<SPL語句表>[ENDFUNCTION][DOCUMENT<字符串表>WITHLISTINGIN<字符串表>];用戶定義的類型,用戶可以加入各種操作操作函數(shù)的定義:42我們定義一個(gè)函數(shù)increase_by_pct用來求一個(gè)數(shù)按某個(gè)百分比增長(zhǎng)后的值。CREATEFUNCTIONincrease_by_pct(amtnumeric,pctnumeric)RETURNINGnumeric;DEFINEresultnumeric;LETresult=amt+amt*(pct/100);RETURNresult;ENDFUNCTION;定義操作函數(shù)例我們定義一個(gè)函數(shù)increase_by_pct用來求一個(gè)數(shù)43使用定義操作函數(shù)的方法1。直接執(zhí)行這個(gè)函數(shù)EXECUTEFUNCTIONincrease_by_pct(8,20)intonweval;CALLincrease_by_pct(8,20)RETURNINGnewval;使用定義操作函數(shù)的方法1。直接執(zhí)行這個(gè)函數(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)多的操作符。例如,對(duì)整數(shù)和浮點(diǎn)數(shù)都有比較操作符(<,<=,=,>,<>).從語法上講,每個(gè)操作符都是一個(gè)雙參數(shù)函數(shù),只不過函數(shù)名出現(xiàn)在二個(gè)參數(shù)之間。Illustra系統(tǒng)中用以下命令來注冊(cè)操作符: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我們將“<<”定義為對(duì)應(yīng)于函數(shù)contained的操作符,則也可用操作符來寫這個(gè)查詢:selectfromemp,emprwhere=‘Ju”andr.location<<circle(emp.location,1);定義操作符例我們將“<<”定義為對(duì)應(yīng)于函數(shù)contained的操作符,則48基類擴(kuò)充模塊DataBlade基類擴(kuò)充模塊是一種標(biāo)準(zhǔn)的軟件模塊,它可以被插入到數(shù)據(jù)庫中,用以擴(kuò)展其能力.Informix現(xiàn)在正在推出的基類擴(kuò)充模塊有二十多個(gè),這里列舉幾個(gè):1.二維/三維空間基類擴(kuò)充模塊對(duì)二維和三維空間對(duì)象(點(diǎn)、線、面等)進(jìn)行存儲(chǔ)和分析,并使用高性能的R樹對(duì)數(shù)據(jù)進(jìn)行訪問。使用函數(shù)(overlap,area,containment等)對(duì)空間對(duì)象進(jìn)行各種操作。2.圖象基類擴(kuò)充模塊在單色或彩色模式下,對(duì)50多種格式(TIFF、GIF、JPEG等)的圖象進(jìn)行轉(zhuǎn)換、存儲(chǔ)、操作、加強(qiáng)和管理。還提供許多范例,包括旋轉(zhuǎn)、邊界加強(qiáng)和卷積等?;悢U(kuò)充模塊DataBlade基類擴(kuò)充模塊是一種493.正文基類擴(kuò)充模塊使用一個(gè)廣泛的函數(shù)集,來處理基于內(nèi)容的文檔查找。4.時(shí)間序列基類擴(kuò)充模塊對(duì)任何類型(整數(shù)、浮點(diǎn)數(shù)、正文信息等)數(shù)據(jù)的有規(guī)律的重復(fù)性的時(shí)間進(jìn)行定義和操作,這是金融分析中的一個(gè)關(guān)鍵性需求。5.Web基類擴(kuò)充模塊快速創(chuàng)建智能化的交互Web應(yīng)用,可根據(jù)存儲(chǔ)在數(shù)據(jù)庫中的信息動(dòng)態(tài)地生成HTML頁。6.VIR(可視化的信息查詢)基類擴(kuò)充模塊通過強(qiáng)有力的,基于內(nèi)容的查詢機(jī)制來對(duì)圖象和影像信息進(jìn)行查詢。這一機(jī)制依據(jù)圖象屬性,例如顏色、形狀、質(zhì)地和組成成分等,來分析可視信息?;悢U(kuò)充模塊(DataBlade)23.正文基類擴(kuò)充模塊基類擴(kuò)充模塊(DataBlade)250繼承機(jī)制支持子類對(duì)父類的繼承是面向?qū)ο蠓椒ǖ闹匾匦灾?。在?shí)際的問題模型中,許多對(duì)象之間有著繼承的關(guān)系。提供繼承機(jī)制,可以更好的模擬實(shí)際問題,有利于軟件的高內(nèi)聚,低耦合的模塊化,也有利于軟件的一致性和可重用性.繼承機(jī)制支持子類對(duì)父類的繼承是面向?qū)ο蠓椒ǖ闹匾?1繼承分類一個(gè)子類對(duì)象(子類數(shù)據(jù)或子表)可以從父類對(duì)象中繼承數(shù)據(jù)屬性和行為。其中行為一般包括函數(shù),操作符,約束條件定義,參照完整性,存取方法,存儲(chǔ)策略以及觸發(fā)器等。數(shù)據(jù)繼承函數(shù)繼承繼承分類一個(gè)子類對(duì)象(子類數(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多重繼承多重繼承是指一個(gè)子類型可以從多個(gè)父類型繼承。例如,銷售工程師類型既是工程師的子類型,又是銷售人員的子類型:如果它的兩個(gè)父類型有重名屬性,則它繼承哪個(gè)屬性就存在二義性。解決這種二義性有兩種方法:一是用戶在定義多重繼承結(jié)構(gòu)時(shí),父類們不允許有重名屬性,否則給出錯(cuò)誤。二是有DBA定義處理二義性的規(guī)則,繼承哪個(gè)屬性由規(guī)則決定,但用戶恐怕很難理解這些規(guī)則。當(dāng)然,前者比后者簡(jiǎn)單得多。多重繼承多重繼承是指一個(gè)子類型可以從多個(gè)父類型55在IUS中,數(shù)據(jù)庫權(quán)限增加了UNDER權(quán)限,定義表的用戶必須對(duì)他所用到的父表有UNDER權(quán)限。而且,表中繼承關(guān)系的定義應(yīng)該和它們相對(duì)應(yīng)的元組類型的繼承關(guān)系相吻合。CREATETABLE empOFTYPEEMP_T;CREATETABLEengineerOFTYPEengineer_tUNDERemp;CREATETABLEengineerOFTYPEsales_tUNDERemp;多重繼承例在IUS中,數(shù)據(jù)庫權(quán)限增加了UNDER權(quán)限,定義表的用戶必須56對(duì)象關(guān)系型DBMS開發(fā)技術(shù)課件57ORDBMS允許從表的繼承層次系統(tǒng)中查詢數(shù)據(jù),也就是說,既可以從某一個(gè)表查詢數(shù)據(jù),又可以查詢某一個(gè)表及其所有后代表中的數(shù)據(jù)。IUS提供了三種不同的SELECT語句來完成上述功能。(1)SELECT*FROMONLY(emp);只查詢表emp中的記錄;(2)SELECT*FROMemp不但查詢emp表的記錄,還要查詢它的所有后代表engineer和sales表中的記錄。但是,這個(gè)語句查詢的僅僅是基表的字段,即只是三個(gè)字段:name,base-salary和manager。(3)SELECTempFROMemp;查詢結(jié)果是三個(gè)表的所有記錄,而三個(gè)表的所有字段都在查詢結(jié)果之中。多重繼承的查詢ORDBMS允許從表的繼承層次系統(tǒng)中查詢數(shù)據(jù),也就是說,多重58函數(shù)的繼承是行為繼承中重要的一種。定義在父類的函數(shù)可以被它的子類繼承。一個(gè)函數(shù)定義在哪個(gè)類上是由它的參數(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ù)這時(shí)在對(duì)engineer-t類中。引用salary函數(shù)時(shí),應(yīng)該是在engineer-t上定義的那個(gè)版本。IUS在運(yùn)行某段代碼過程中需要計(jì)算某個(gè)函數(shù)時(shí),如果它的實(shí)參數(shù)據(jù)類型上定義了這個(gè)函數(shù),則引用這個(gè)版本;否則,則沿著實(shí)參數(shù)據(jù)類型的父類方向在繼承層次中向上查找,直至找到它的一個(gè)祖先類型上定義了這個(gè)函數(shù)為止函數(shù)繼承例sales-t類繼承了其父類emp-t上定義的s60規(guī)則系統(tǒng)規(guī)則定義的格式一般如下:ONEVENTDOACTION規(guī)則分為四種基本類型:修改-修改規(guī)則;查詢-修改規(guī)則;修改-查詢規(guī)則;查詢-查詢規(guī)則規(guī)則系統(tǒng)61修改-修改規(guī)則事件是一個(gè)修改型操作(包括修改、增加、刪除操作),而動(dòng)作也是修改型操作的規(guī)則ONUPDATETOemp.base_salaryWHERE=’mike’DOUPDATEempSETbase_salary=new.base_salaryWHEREname=’jane’
將能使Jane的基本工資與Mike始終相同修改-修改規(guī)則事件是一個(gè)修改型操作(包括修改、增加、刪除操作62查詢-修改規(guī)則該規(guī)則是一個(gè)查詢事件激活一個(gè)修改性的動(dòng)作。例如:ONSELECTTOemp.base_salaryWHERE=’Mike’DOINSERTINTOauditVALUES(current.base_salary,user,current_time);這個(gè)規(guī)則在對(duì)Mike的基本工資進(jìn)行查詢時(shí),將相同的信息存入audit表中,這樣就可以維護(hù)一個(gè)查詢Mike工資的事件蹤跡表。查詢-修改規(guī)則該規(guī)則是一個(gè)查詢事件激活一個(gè)修改性的動(dòng)作。例如63修改-查詢規(guī)則ONUPDATETOemp.base_salaryWHERE=’Mike’DOmy-alert;當(dāng)對(duì)Mike工資修改時(shí),系統(tǒng)將會(huì)發(fā)出警報(bào)修改-查詢規(guī)則ONUPDATETOemp.ba64查詢-查詢規(guī)則ONSELECTTOemp.base_salaryWHERE=’Jane’DOINSTEADSELECTbase_salaryFROMempWHEREname=’Mike’當(dāng)查詢Jane的工資時(shí),返回Mike的工資。這樣存儲(chǔ)Jane工資的單元永遠(yuǎn)不會(huì)被訪問。查詢-查詢規(guī)則ONSELECTTOemp.bas65第二章小結(jié)一個(gè)對(duì)象關(guān)系型DBMS所具有的特征。第二章小結(jié)一個(gè)對(duì)象關(guān)系型DBMS所具有的特征。66對(duì)象關(guān)系型DBMS開發(fā)技術(shù)
鞠時(shí)光對(duì)象關(guān)系型DBMS開發(fā)技術(shù)67第一章緒論如何理解數(shù)據(jù)庫這個(gè)名詞?為什么研究DBMS?我們研究DBMS的目的?現(xiàn)在常用的幾類商業(yè)數(shù)據(jù)庫世界上研究數(shù)據(jù)庫處于前沿的單位第一章緒論如何理解數(shù)據(jù)庫這個(gè)名詞?68如何理解數(shù)據(jù)庫這個(gè)名詞DBMSDBMS的體系結(jié)構(gòu),存儲(chǔ)方法(數(shù)據(jù)模式datamodel),索引機(jī)制,查詢機(jī)制,優(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ù)庫這個(gè)名詞DBMS69本課目的擴(kuò)展關(guān)系DBMS到對(duì)象關(guān)系型DBMS研究如何設(shè)計(jì)對(duì)象關(guān)系型DBMS的體系結(jié)構(gòu),存儲(chǔ)方法,索引機(jī)制,查詢機(jī)制等本課目的擴(kuò)展關(guān)系DBMS到對(duì)象關(guān)系型DBMS70為什么研究DBMS?新興的應(yīng)用領(lǐng)域的需求:計(jì)算機(jī)集成制造系統(tǒng)(CIMS)辦公信息系統(tǒng)(OIS)多媒體系統(tǒng)(multimedia)高維數(shù)據(jù)應(yīng)用系統(tǒng)為什么研究DBMS?新興的應(yīng)用領(lǐng)域的需求:71計(jì)算機(jī)集成制造系統(tǒng)(CIMS)CIMS是在CAD,CAE,CAE,CAPP,FMS,等基礎(chǔ)上發(fā)展起來的高技術(shù).CIMS對(duì)DBMS的新功能要求包括能定義新的面向工程環(huán)境的數(shù)據(jù)模型;能修改和重新定義已有的數(shù)據(jù)結(jié)構(gòu);能存儲(chǔ)和有效地檢索設(shè)計(jì)圖形和工程數(shù)據(jù);能管理設(shè)計(jì)過程中對(duì)象演變的歷史.計(jì)算機(jī)集成制造系統(tǒng)(CIMS)CIMS是在CAD,72對(duì)象關(guān)系型DBMS開發(fā)技術(shù)課件73辦公信息系統(tǒng)(OIS)
辦公環(huán)境處理信息的多樣性(圖形、圖像、報(bào)表、文字、聲音)及存儲(chǔ)介質(zhì)的多樣性(紙張、聲音、錄音、錄像、磁盤、光盤等)信息類型豐富時(shí)間因素不規(guī)則交互式界面信息的過濾與綜合優(yōu)先級(jí)調(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ù)對(duì)數(shù)據(jù)庫管理系統(tǒng)提出了許多特殊的要求:一個(gè)對(duì)象不能用存儲(chǔ)字符編碼的方式來存儲(chǔ)。檢索圖象也不像檢索一個(gè)字符串或一個(gè)字符那樣方便。用戶查詢或檢索某個(gè)對(duì)象,有時(shí)需據(jù)空間關(guān)系來進(jìn)行。如:拓?fù)洳僮鳎骸鞍?,“相?lián)”等。幾何操作:“靠近”,“遠(yuǎn)離”,“覆蓋”等等。方位操作:“在┄┄右邊”,“在┄┄上面這些操作基于實(shí)體間相互所處的空間位置之上。高維數(shù)據(jù)應(yīng)用系統(tǒng)(1)高維數(shù)據(jù)對(duì)數(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)パ芯俊⒁胄滦偷腄BMS系統(tǒng)。其中最重要的研究方向之一就是將面向?qū)ο蠹夹g(shù)與關(guān)系數(shù)據(jù)庫技術(shù)相結(jié)合,構(gòu)造新型的對(duì)象-關(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ù)擬合對(duì)象關(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ù)雜簡(jiǎn)單簡(jiǎn)單復(fù)雜數(shù)據(jù)復(fù)雜度常用的幾類商業(yè)數(shù)據(jù)庫2413有無查詢功能80區(qū)域1:表示處理的是簡(jiǎn)單數(shù)據(jù)常見的正文處理系統(tǒng)有word,F(xiàn)ramemaker,wordperfect,vi等。這些正文系統(tǒng)可歸類為最簡(jiǎn)單的DBMS軟件系統(tǒng)。用名字打開文件,文件內(nèi)容被拷貝到虛存中。在編輯正文時(shí),更新虛存對(duì)象,對(duì)象被定期地保存到硬盤中。在結(jié)束正文處理時(shí)關(guān)閉文件,這時(shí),虛存中的拷貝被存到文件系統(tǒng)中區(qū)域1:表示處理的是簡(jiǎn)單數(shù)據(jù)常見的正文處理系統(tǒng)有word81區(qū)域2:簡(jiǎn)單數(shù)據(jù),復(fù)雜查詢
關(guān)系數(shù)據(jù)庫。目前常見的保險(xiǎn)業(yè)務(wù)處理系統(tǒng)、企業(yè)的人事管理、生產(chǎn)管理、物資管理等信息管理系統(tǒng)都是基于這種RDBMS之上開發(fā)的。如Informix,Oracle,delph,VB,VF等。查詢語言,國(guó)際標(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:簡(jiǎn)單數(shù)據(jù),復(fù)雜查詢關(guān)系數(shù)據(jù)庫。目前常見的保險(xiǎn)業(yè)82區(qū)域2:傳統(tǒng)數(shù)據(jù)庫不足之處(1)傳統(tǒng)數(shù)據(jù)模型,特別是關(guān)系數(shù)據(jù)模型用來描述復(fù)雜的嵌套實(shí)體就顯得過于簡(jiǎn)單。傳統(tǒng)數(shù)據(jù)庫系統(tǒng)也沒有提供相應(yīng)的機(jī)制去表達(dá)和管理這些實(shí)體。(2)傳統(tǒng)數(shù)據(jù)庫系統(tǒng)只支持有限的數(shù)據(jù)類型,它甚至不支持對(duì)較長(zhǎng)的非結(jié)構(gòu)化數(shù)據(jù),如圖形、圖像和文本文檔的存儲(chǔ)和檢索。(3)傳統(tǒng)數(shù)據(jù)模型不含若干常用的語義概念,如像泛化(generalization)和聚集(aggregation)關(guān)系。(4)許多應(yīng)用程序是用某種程序設(shè)計(jì)語言(FORTRAN、或C)嵌入到某個(gè)數(shù)據(jù)庫語言(如SQL、DML)實(shí)現(xiàn)的。而程序設(shè)計(jì)語言與數(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ù),簡(jiǎn)單查詢本類應(yīng)用與前兩類應(yīng)用最主要的不同在于增加了復(fù)雜數(shù)據(jù)。而與第二類應(yīng)用相比,它又幾乎沒有查詢要求.面向?qū)ο髷?shù)據(jù)庫產(chǎn)品主要有ObjectStore,O2,Objectivity/DB,Matisse,ONTOS,Gemstone等。這些產(chǎn)品在堅(jiān)固性,可伸縮性,客戶/服務(wù)器結(jié)構(gòu),應(yīng)用開發(fā)工具等許多方面不如RDBMS產(chǎn)品。區(qū)域3:復(fù)雜數(shù)據(jù),簡(jiǎn)單查詢本類應(yīng)用與前兩類應(yīng)用最主要的84區(qū)域3:面向?qū)ο髷?shù)據(jù)庫的不足
面向?qū)ο髷?shù)據(jù)庫產(chǎn)品在程序設(shè)計(jì)接口、實(shí)現(xiàn)方法(手段)、對(duì)查詢的支持等等方面都存在許多差異。面向?qū)ο蟮臄?shù)據(jù)庫產(chǎn)品在一些方面仍然落后于關(guān)系數(shù)據(jù)庫產(chǎn)品,例如,還沒有OODB支持視圖機(jī)制.OODB明顯缺乏最終用戶工具及應(yīng)用開發(fā)工具.OODB的商業(yè)市場(chǎng)的增長(zhǎng)速度比預(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;/*圖象編號(hào)*/datedate;/*拍攝日期*/captiondocument;/*圖象說明*/picturephoto_CD_image;/*圖象編碼*/);區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(1)圖象數(shù)據(jù)庫,其結(jié)構(gòu)定義如下:86被存儲(chǔ)的對(duì)象具有復(fù)雜的數(shù)據(jù)結(jié)構(gòu)按內(nèi)容對(duì)圖象進(jìn)行查詢還要求數(shù)據(jù)庫管理系統(tǒng)允許用戶自定義數(shù)據(jù)類型.并自定義這些數(shù)據(jù)類型上的函數(shù)和操作區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(2)被存儲(chǔ)的對(duì)象具有復(fù)雜的數(shù)據(jù)結(jié)構(gòu)區(qū)域4:復(fù)雜數(shù)據(jù),復(fù)雜查詢(287(1)表達(dá)和管理復(fù)雜嵌套對(duì)象的能力,以允許逐步細(xì)化復(fù)雜實(shí)體。(2)存儲(chǔ)和檢索任意長(zhǎng)數(shù)據(jù)的能力。(3)定義和管理任意數(shù)據(jù)類型的能力。(4)表達(dá)和管理數(shù)據(jù)庫變化的能力,包括時(shí)間和時(shí)間間隔的表示法,單對(duì)象的版本,復(fù)雜嵌套對(duì)象的版本和模式實(shí)體的版本。(5)表達(dá)和操作各種有用的語義模型概念的能力。例如CAE、復(fù)合文檔合成等等上下文中的裝配部分層次就是這些概念之一。(6)指定規(guī)則和擴(kuò)充制約的能力,以支持基于知識(shí)的應(yīng)用。。(7)管理長(zhǎng)協(xié)同事務(wù)的能力。下一代數(shù)據(jù)庫系統(tǒng)的特征(1)表達(dá)和管理復(fù)雜嵌套對(duì)象的能力,以允許逐步細(xì)化復(fù)雜實(shí)體。88世界上研究數(shù)據(jù)庫處于前沿的單位(1)Http://(2)PostgreSQL-Object-RelationalDBMS
(3)/papers/Informix/(4)UniversalDBMS/udbms.html世界上研究數(shù)據(jù)庫處于前沿的單位(1)Http://www.89第二章對(duì)象關(guān)系數(shù)據(jù)庫的基本特性O(shè)RDBMS的定義開發(fā)對(duì)象-關(guān)系DBMS的途徑支持復(fù)雜對(duì)象基類擴(kuò)充繼承機(jī)制規(guī)則系統(tǒng)第二章對(duì)象關(guān)系數(shù)據(jù)庫的基本特性O(shè)RDBMS的定義901990年,由Stonebraker等人組成的高級(jí)DBMS功能委員會(huì)發(fā)表的“第三代數(shù)據(jù)庫系統(tǒng)宣言”:第三代對(duì)象關(guān)系型數(shù)據(jù)庫系統(tǒng)必須具備的三條原則:原則1:除傳統(tǒng)的數(shù)據(jù)管理服務(wù)外,第三代DBMS將支持更加豐富的對(duì)象結(jié)構(gòu)和規(guī)則。原則2:第三代DBMS必須包含第二代(即關(guān)系的)DBMS的所有功能。原則3:第三代DBMS必須對(duì)其它子系統(tǒng)開放。ORDBMS的定義1990年,由Stonebraker等人組成的高級(jí)91對(duì)象關(guān)系型DBMS這種系統(tǒng)具備關(guān)系數(shù)據(jù)庫管理系統(tǒng)的功能,同時(shí)又支持面向?qū)ο蟮奶匦?。它是關(guān)系數(shù)據(jù)庫技術(shù)與面向?qū)ο蠹夹g(shù)的融合。主要是擴(kuò)充基類、支持動(dòng)態(tài)數(shù)據(jù)類型、支持復(fù)雜對(duì)象和大對(duì)象、增加復(fù)雜對(duì)象繼承機(jī)制及支持規(guī)則系統(tǒng)等。并支持SQL查詢語言的超集ORSQL。它適合于具有高維數(shù)據(jù)、動(dòng)態(tài)數(shù)據(jù)、復(fù)雜查詢等工程應(yīng)用領(lǐng)域。可用作開發(fā)CAD、多媒體、CIMS、GIS等應(yīng)用系統(tǒng)。對(duì)象關(guān)系型DBMS這種系統(tǒng)具備關(guān)系數(shù)據(jù)庫管理系統(tǒng)的功能,同時(shí)92實(shí)現(xiàn)這種系統(tǒng)需研究:通用存儲(chǔ)機(jī)制。系統(tǒng)的存儲(chǔ)機(jī)制必須能存儲(chǔ)對(duì)象關(guān)系型數(shù)據(jù)。類屬的索引機(jī)制。原有的關(guān)系型DBMS只為數(shù)字和字符串兩種數(shù)據(jù)類型內(nèi)置了B樹代碼。在ORDBMS中,B樹代碼必須是類屬的。這樣就可以在任何數(shù)據(jù)類型上建立B樹索引。使得系統(tǒng)能在任何數(shù)據(jù)類型上提供高維存取方法。實(shí)現(xiàn)這種系統(tǒng)需研究:93必須提供用戶自定義新的數(shù)據(jù)類型和函數(shù)的功能。這種可擴(kuò)充性消除了傳統(tǒng)的DBMS必須進(jìn)行的對(duì)新數(shù)據(jù)類型和函數(shù)的繁瑣模擬。規(guī)則系統(tǒng)。這些規(guī)則被數(shù)據(jù)庫系統(tǒng)實(shí)施后,存儲(chǔ)的數(shù)據(jù)變的更主動(dòng)(active),使得它更具有自己的行為。即數(shù)據(jù)庫中的數(shù)據(jù)能自己講話。研究定義對(duì)象關(guān)系型數(shù)據(jù)庫查詢語言O(shè)RSQL
必須提供用戶自定義新的數(shù)據(jù)類型和函數(shù)的功能。這種可擴(kuò)充性消除94開發(fā)對(duì)象關(guān)系DBMS的途徑(1)從頭寫一個(gè)ORDBMS(2)對(duì)ORDBMS進(jìn)行功能擴(kuò)充(要在源代碼上進(jìn)行)第一個(gè)采用增量式演變策略的是Ingres公司,1988年開始,將關(guān)系型引擎擴(kuò)展為具有基本類型擴(kuò)充功能和規(guī)則管理的系統(tǒng)(3)寫一個(gè)包裝層包裝層就是在傳統(tǒng)的關(guān)系型引擎上裹著一個(gè)模擬層。這個(gè)模擬層支持對(duì)象關(guān)系型API,其辦法是將用戶提交的對(duì)象關(guān)系型查詢映像成關(guān)系型查詢,然后在傳統(tǒng)關(guān)系型引擎上執(zhí)行。HP公司已采用包裝層策略,把關(guān)系型引擎Allbase改造成關(guān)系-對(duì)象型引擎OpenODB。模擬效率是非常低的。因?yàn)樵诎b層中執(zhí)行整個(gè)查詢,就意味著包裝層必須有第二個(gè)SQL分析器,第二個(gè)優(yōu)化器和第二個(gè)執(zhí)行器開發(fā)對(duì)象關(guān)系DBMS的途徑(1)從頭寫一個(gè)ORDBMS95IBM的DB2/CSV2.0系統(tǒng)和CA-Ingres系統(tǒng)支持用戶定義的基類、繼承和視圖等。Illustra是當(dāng)前對(duì)象關(guān)系市場(chǎng)上功能相當(dāng)完備的產(chǎn)品,提供基于抽象數(shù)據(jù)類型(ADT)、已經(jīng)開發(fā)好的類型擴(kuò)充軟件包,用于管理諸如圖象和正文等數(shù)據(jù)類型。這樣的軟件包有Illustra的DataBlade.IBM的DatabaseExtender等幾個(gè)具有對(duì)象關(guān)系數(shù)據(jù)庫特征的產(chǎn)品IBM的DB2/CSV2.0系統(tǒng)和CA-Ingres系統(tǒng)支96支持復(fù)雜對(duì)象特性1:豐富的復(fù)雜對(duì)象類型“組合”、“集合”和“指針”三種類型構(gòu)造器。特性2:復(fù)雜對(duì)象類型上的函數(shù)特性3:復(fù)雜對(duì)象的大小對(duì)組合的成員總存儲(chǔ)量大小不應(yīng)有限制,對(duì)集合大小和成員數(shù)目也不應(yīng)有限制。特性4.:SQL的超集支持復(fù)雜對(duì)象特性1:豐富的復(fù)雜對(duì)象類型97創(chuàng)建復(fù)雜對(duì)象(組合)CREATEROWTYPEaddr_t(Streetvarchar(30),Cityvarchar(20),Statechar(2),Zipint);有了addr_t這種復(fù)雜對(duì)象類型,一個(gè)公司的職工信息表可以定義成:CREATETABLEemployee(Namevarchar(3),startdatedate,salaryint,addressaddr_t);創(chuàng)建復(fù)雜對(duì)象(組合)CREATEROWTYPEaddr98CREATEROWTYPEemployee_t(Namevarchar(30),Startdatedate,Salaryint,Addressaddr_t);然后,公司的職員表可以更簡(jiǎn)單的定義為:CREATETABLEemployeeOFTYPEemployee_t;把職工的所有信息定義為一個(gè)類型CREATEROWTYPEemployee_t(把99這樣創(chuàng)建的表稱為“類型表”,可見這種表并不滿足1NF范式這樣創(chuàng)建的表稱為“類型表”,可見這種表并不滿足1NF范式100集合集合SET:普通的集合類型,元素不能重復(fù)。多值集合MULTISET:元素可以重復(fù)的集合。列表LIST:有順序的集合。集合集合SET:普通的集合類型,101指針指針類型的存在基于以下事實(shí):數(shù)據(jù)庫表中的一行或一個(gè)復(fù)雜對(duì)象的實(shí)例可以有一個(gè)唯一的內(nèi)部標(biāo)識(shí)――稱作行標(biāo)識(shí)(ROWID)或?qū)ο髽?biāo)識(shí)(OID).指針實(shí)際存儲(chǔ)的是這種標(biāo)識(shí)。這些標(biāo)識(shí)是永久的,且絕對(duì)不會(huì)重復(fù).例,可把公司中某一部門表的manager列改成指針類型:managerREF(employee-t)指針指針類型的存在基于以下事實(shí):數(shù)據(jù)庫表中的102綜合利用指針的集合在部門表中直接包含部門的職員workersSET(REF(employee-t))引入復(fù)雜對(duì)象后的部門表定義如下:CREATETABLEdepartment(dnamevarchar(30),managerREF(employee-t),workersSET(REF(employee-t));結(jié)構(gòu)非常簡(jiǎn)明,并且完整的描述了一個(gè)部門的信息。
綜合利用指針的集合在部門表中直接包含部門的職員103基類擴(kuò)充SQL-92定義的基本數(shù)據(jù)類型只有以下幾種:整數(shù)、實(shí)數(shù)、字符串(定長(zhǎng)或可變長(zhǎng))、時(shí)間.基本數(shù)據(jù)類型上的操作符和函數(shù)也都是精確定義(有的是硬編碼)的.所謂基類擴(kuò)充,是指用戶在SQL中能創(chuàng)建帶有相應(yīng)操作符和函數(shù)的新數(shù)據(jù)類型.創(chuàng)建一個(gè)新的基類需定義類型名、類型的存儲(chǔ)信息和將該數(shù)據(jù)類型與ASCII字符互相轉(zhuǎn)換的子程序?;悢U(kuò)充SQL-92定義的基本數(shù)據(jù)類型只有以104創(chuàng)建一個(gè)新的基類創(chuàng)建基類需定義類型名、類型的存儲(chǔ)信息和將該數(shù)據(jù)類型與ASCII字符互相轉(zhuǎn)換的子程序:創(chuàng)建類型語句創(chuàng)建其上的輸入函數(shù)創(chuàng)建其上的輸出函數(shù)創(chuàng)建一個(gè)新的基類創(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ù)注冊(cè)到系統(tǒng)中去.如Informix的StoredProcedureLanguage(SPL)語言寫函數(shù)。格式如下:CREATE[DBA]FUNCTION<函數(shù)名>[參數(shù)表]{RETURNS|RETURNING}<類型名>[SPECIFIC<特定名>][WITH(<修飾符表>)]<SPL語句表>[ENDFUNCTION][DOCUMENT<字符串表>WITHLISTINGIN<字符串表>];用戶定義的類型,用戶可以加入各種操作操作函數(shù)的定義:108我們定義一個(gè)函數(shù)increase_by_pct用來求一個(gè)數(shù)按某個(gè)百分比增長(zhǎng)后的值。CREATEFUNCTIONincrease_by_pct(amtnumeric,pctnumeric)RETURNINGnumeric;DEFINEresultnumeric;LETresult=amt+amt*(pct/100);RETURNresult;ENDFUNCTION;定義操作函數(shù)例我們定義一個(gè)函數(shù)increase_by_pct用來求一個(gè)數(shù)109使用定義操作函數(shù)的方法1。直接執(zhí)行這個(gè)函數(shù)EXECUTEFUNCTIONincrease_by_pct(8,20)intonweval;CALLincrease_by_pct(8,20)RETURNINGnewval;使用定義操作函數(shù)的方法1。直接執(zhí)行這個(gè)函數(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)多的操作符。例如,對(duì)整數(shù)和浮點(diǎn)數(shù)都有比較操作符(<,<=,=,>,<>).從語法上講,每個(gè)操作符都是一個(gè)雙參數(shù)函數(shù),只不過函數(shù)名出現(xiàn)在二個(gè)參數(shù)之間。Illustra系統(tǒng)中用以下命令來注冊(cè)操作符:createoperatorbindingopr-nameTOfunction-name;定義操作符傳統(tǒng)SQL支持相當(dāng)多的操作符。112以職工信息系統(tǒng)為例。現(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我們將“<<”定義為對(duì)應(yīng)于函數(shù)contained的操作符,則也可用操作符來寫這個(gè)查詢:selectfromemp,emprwhere=‘Ju”andr.location<<circle(emp.location,1);定義操作符例我們將“<<”定義為對(duì)應(yīng)于函數(shù)contained的操作符,則114基類擴(kuò)充模塊DataBlade基類擴(kuò)充模塊是一種標(biāo)準(zhǔn)的軟件模塊,它可以被插入到數(shù)據(jù)庫中,用以擴(kuò)展其能力.Informix現(xiàn)在正在推出的基類擴(kuò)充模塊有二十多個(gè),這里列舉幾個(gè):1.二維/三維空間基類擴(kuò)充模塊對(duì)二維和三維空間對(duì)象(點(diǎn)、線、面等)進(jìn)行存儲(chǔ)和分析,并使用高性能的R樹對(duì)數(shù)據(jù)進(jìn)行訪問。使用函數(shù)(overlap,area,containment等)對(duì)空間對(duì)象進(jìn)行各種操作。2.圖象基類擴(kuò)充模塊在單色或彩色模式下,對(duì)50多種格式(TIFF、GIF、JPEG等)的圖象進(jìn)行轉(zhuǎn)換、存儲(chǔ)、操作、加強(qiáng)和管理。還提供許多范例,包括旋轉(zhuǎn)、邊界加強(qiáng)和卷積等?;悢U(kuò)充模塊DataBlade基類擴(kuò)充模塊是一種1153.正文基類擴(kuò)充模塊使用一個(gè)廣泛的函數(shù)集,來處理基于內(nèi)容的文檔查找。4.時(shí)間序列基類擴(kuò)充模塊對(duì)任何類型(整數(shù)、浮點(diǎn)數(shù)、正文信息等)數(shù)據(jù)的有規(guī)律的重復(fù)性的時(shí)間進(jìn)行定義和操作,這是金融分析中的一個(gè)關(guān)鍵性需求。5.Web基類擴(kuò)充模塊快速創(chuàng)建智能化的交互Web應(yīng)用,可根據(jù)存儲(chǔ)在數(shù)據(jù)庫中的信息動(dòng)態(tài)地生成HTML頁。6.VIR(可視化的信息查詢)基類擴(kuò)充模塊通過強(qiáng)有力的,基于內(nèi)容的查詢機(jī)制來對(duì)圖象和影像信息進(jìn)行查詢。這一機(jī)制依據(jù)圖象屬性,例如顏色、形狀、質(zhì)地和組成成分等,來分析可視信息。基類擴(kuò)充模塊(DataBlade)23.正文基類擴(kuò)充模塊基類擴(kuò)充模塊(DataBlade)2116繼承機(jī)制支持子類對(duì)父類的繼承是面向?qū)ο蠓椒ǖ闹匾匦灾?。在?shí)際的問題模型中,許多對(duì)象之間有著繼承的關(guān)系。提供繼承機(jī)制,可以更好的模擬實(shí)際問題,有利于軟件的高內(nèi)聚,低耦合的模塊化,也有利于軟件的一致性和可重用性.繼承機(jī)制支持子類對(duì)父類的繼承是面向?qū)ο蠓椒ǖ闹匾?17繼承分類一個(gè)子類對(duì)象(子類數(shù)據(jù)或子表)可以從父類對(duì)象中繼承數(shù)據(jù)屬性和行為。其中行為一般包括函數(shù),操作符,約束條件定義,參照完整性,存取方法,存儲(chǔ)策略以及觸發(fā)器等。數(shù)據(jù)繼承函數(shù)繼承繼承分類一個(gè)子類對(duì)象(子類數(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等.壓縮文件請(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版特色餐飲店鋪出租管理協(xié)議3篇
- 2025版小額貸款抵押合同財(cái)務(wù)報(bào)告披露要求3篇
- 買賣合同糾紛代理詞3篇
- 二零二五版薦知識(shí)產(chǎn)權(quán)擔(dān)保交易合同集3篇
- 二零二五年度城市通勤車輛出租合作協(xié)議4篇
- 二零二五年度員工借款爭(zhēng)議調(diào)解及勞動(dòng)法執(zhí)行合同
- 二零二五年度農(nóng)業(yè)OEM產(chǎn)品種植與加工合同范本3篇
- 二零二五年度工業(yè)廠房租賃市場(chǎng)拓展合同范本3篇
- 二零二五年度光伏充電樁場(chǎng)地共享租賃合同3篇
- 2025年度倉儲(chǔ)物流零星維修施工合同協(xié)議書3篇
- 湖北省黃石市陽新縣2024-2025學(xué)年八年級(jí)上學(xué)期數(shù)學(xué)期末考試題 含答案
- 硝化棉是天然纖維素硝化棉制造行業(yè)分析報(bào)告
- 央視網(wǎng)2025亞冬會(huì)營(yíng)銷方案
- 《00541語言學(xué)概論》自考復(fù)習(xí)題庫(含答案)
- 《無砟軌道施工與組織》 課件 第十講雙塊式無砟軌道施工工藝
- 江蘇省南京市、鹽城市2023-2024學(xué)年高三上學(xué)期期末調(diào)研測(cè)試+英語+ 含答案
- 2024新版《藥品管理法》培訓(xùn)課件
- 《阻燃材料與技術(shù)》課件 第7講 阻燃橡膠材料
- 爆炸物運(yùn)輸安全保障方案
- 江蘇省南京市2025屆高三學(xué)業(yè)水平調(diào)研考試數(shù)學(xué)試卷(解析版)
- 2024年黑龍江省哈爾濱市中考數(shù)學(xué)試卷(附答案)
評(píng)論
0/150
提交評(píng)論