版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第八章第八章 面向?qū)ο蟛樵冋Z言面向?qū)ο蟛樵冋Z言object-oriented query languages概述概述n面向?qū)ο髇面向?qū)ο髷?shù)據(jù)模型n面向?qū)ο蠓椒ㄖ幸霐?shù)據(jù)庫的概念(持久化)n以面向?qū)ο蟮姆椒?gòu)造數(shù)據(jù)庫n關(guān)系對象數(shù)據(jù)模型n關(guān)系數(shù)據(jù)模型中引入面向?qū)ο蟮母拍頽引入新的數(shù)據(jù)類型,作為類型擴展概述概述n面向?qū)ο蟛樵冋Z言noodbmsnoqlnordbmsnsql3概述概述nodmgnobject database management groupnodmg-93n吸取omg的com(common object model)、idl(interface definition language
2、)n增加數(shù)據(jù)庫內(nèi)容,形成om、odlnoqln力圖成為oodbms的標準odl中與查詢相關(guān)的特性中與查詢相關(guān)的特性nodl(object definition language)n用面向?qū)ο蟮男g(shù)語,說明數(shù)據(jù)庫結(jié)構(gòu)的標準語言n用于書寫面向?qū)ο髷?shù)據(jù)庫的設(shè)計說明n可直接轉(zhuǎn)換成對oodbms的(實現(xiàn))說明odl對象的操作對象的操作nodl,interfacen屬性(attribute)n該class的特性n聯(lián)系(relationship)n該類對象與其他類對象的聯(lián)系(引用)n方法(method)n與類相關(guān)的函數(shù),可作用與該類對象的函數(shù)n代碼不是odl的成分,由宿主實現(xiàn)odl方法的說明方法的說明n署名n
3、方法的名字n返回值的類型n參數(shù)種類ninnoutninoutn參數(shù)類型n異常(exception)處理nraises()odl方法的說明方法的說明interface moviekey(title,year) /attributes & relationshipsfloat lengthinhours() raises(nolengthfound);starnames(out set);othernames(in star,out set) raises(nosuchstar);odl類的范圍類的范圍nodl的說明n是該類對象的當前集合名,類似于關(guān)系名nextent n范圍名可以與類名不
4、一致n將以范圍名被引用odl類的范圍類的范圍interface movie(extent movieskey(title,year) /attributes & relationshipsfloat lengthinhours() raises(nolengthfound);starnames(out set);othernames(in star,out set) raises(nosuchstar);oqln對象查詢語言noql:object query languagen以odmg對象模型為基礎(chǔ)的類似sql的查詢語言n作為oop宿主語言的擴展noql混入宿主語言(不是嵌入)n完整
5、描述:odmg-93oql實例實例interface movie(extent movieskey(title,year)attribute string title;attribute integer year;attribute integer length;attribute enumeration(color,blackandwhite) filmtype;relationship set starsinverse star:starredin;relationship studio ownedbyinverse studio:owns;oql實例實例interface star(ex
6、tent starskey name)attribute string name;attribute struct addrstring street,string cityaddress;relationship set starredininverse movie:stars;oql實例實例interface studio(extent studioskey name)attribute string name;attribute string address; relationship set ownsinverse movie:ownedby;oql類型系統(tǒng)類型系統(tǒng)noql中的類型與o
7、dl一致nodl只涉及變量(類型)noql將涉及常量(值)oql類型系統(tǒng)類型系統(tǒng)n常量的表示n基本類型n原子類型n整數(shù)、浮點數(shù)、字符、字符串、布爾型n枚舉類型n由odl中定義的值oql類型系統(tǒng)類型系統(tǒng)n常量的表示n復雜類型nset()nbag()nlist()narray()nstruct()nstruct(foo:bag(2,1,2),bar:“baz”)oql路徑表達式路徑表達式n采用點.的方式訪問變量的分量n如果a表示屬于類c的對象,p是該類的某個特性(屬性、聯(lián)系或方法),則a.p表示把p用于a的結(jié)果n如果p是屬性,則a.p就是對象a的該屬性值n如果p是聯(lián)系,則a.p就是通過聯(lián)系p與a相
8、連的對象或?qū)ο蟮木奂痭如果p是方法,則a.p就是把p用于a的結(jié)果oql路徑表達式路徑表達式n例:如果mymovie是宿主語言的變量,其值是movie對象,則nmymovie.length(對象中的屬性名)是該電影的長度nmymovie.lengthinhours()(對象中的方法名)的值是實數(shù),通過把方法lengthinhours()作用于對象mymovie的結(jié)果nmymovie.stars(對象中的聯(lián)系名)的值是通過聯(lián)系stars與電影(對象)mymovie相連的star對象的集合nmymovie.starnames(mystars)本身不返回任何值,但以參數(shù)mystars作為輸出,返回電影
9、對象mymovie中的影星姓名(集)oql路徑表達式路徑表達式nmymovie.ownedb表示什么?oql中的查詢表達式中的查詢表達式n具有類似sql的select-from-where格式select m.yearfrom movies m/為什么是movies ?where m.title = “gone with the wind” n查詢將產(chǎn)生對象的包(bag)oql查詢中消除重復查詢中消除重復n查詢結(jié)果集是bag,而不是set,缺省為allndistinctoql復雜的輸出類型復雜的輸出類型nselect子句中的表達式n簡單變量n任何表達式select distinct
10、 struct(star1:s1,star2:s2)from stars s1,stars s2where s1.addr = s2.addr a nselect star1:s1,star2:s2oql中的子查詢中的子查詢n可在適于聚集的任何地方使用select-from-where表達式n可以出現(xiàn)在from中(如同sql)selectdistinct from(select mfrom movies mwhere m.ownedb = “disney”) d,d.stars soql對結(jié)果的排序?qū)Y(jié)果的排序n類似于sqlnorder
11、byselectmfrommovies mwherem.ownerdb = “disney”order by m.length,m.titleoql對結(jié)果的排序?qū)Y(jié)果的排序(selectmfrommovies mwherem.ownerdb = “disney”order by m.length desc ) 0:4oql表達式的附加格式表達式的附加格式n表達式的構(gòu)造形式n量詞表達式n聚合表達式n分組表達式nhaving子句n集合運算oql表達式表達式量詞表達式nfor alln檢測是否所有的集合成員都滿足條件,返回true/falsenfor all x in s :
12、 c(x)n集合s中的所有成員(每個x)均滿足條件c(x)n類似于sql中的alloql表達式表達式量詞表達式nfor all:僅在“disney”公司的影片中出演的影星selectsfromstars swhere for all m in s.starredin : m.ownedb=“disney”relationship set starredininverse movie:stars;oql表達式表達式量詞表達式nexistsn檢測是否至少有一個集合成員滿足條件,返回true/falsenexists x in s : c(x)n集合s中至少有一個成員(x)滿足條件c(x
13、)n類似于sql中的existsoql表達式表達式量詞表達式nexists:在“disney”公司的影片中擔任過角色的影星selectsfromstars swhereexists m in s.starredin : m.ownedb = “disney”relationship set starredininverse movie:stars;oql表達式表達式聚合表達式n聚合表達式,作用于其成員具有合適類型的聚集(collection)navg/算術(shù)類型ncount/任何聚集nsum/算術(shù)類型nmin/可比較類型nmax/可比較類型oql表達式表達式聚合表達式avg(sele
14、ct m.length from movies m)oql表達式表達式分組表達式ngroup byn與sql有些差異select std,yr, sumlength : sum(select p.m.lengthfrom partition p)from movies mgroup by std:m.ownedb,yr:m.yearoql表達式表達式分組表達式ngroup byn格式:ngroup by f1:e1,f2:e2,fn:enn返回的是結(jié)構(gòu)的集合struct(f1:v1,f2:v2,fn:vn,partition:p)nselect子句中的項,只能取自group by結(jié)
15、果中的域f1,f2,fn和partitionoql表達式表達式分組表達式selectold,new,avglength:avg(select p.m.length from partition p)frommovies mgroup by old:m.year = 2000oql表達式表達式having子句nhaving子句與sql類似n作用于partition,用來刪除由group by建立的某些組nhaving n條件為true:輸出n條件為false:不輸出oql表達式表達式having子句selectstd, yr,sumlength:sum(select p.m.lengthfrom
16、 partition p)frommovies mgroup by std : m.ownedb,yr : m.yearhavingsum(select p.m.lengthfrom partition p) 120oql表達式表達式having子句selectstd, yr,sumlength:sum(select p.m.lengthfrom partition p)frommovies mgroup by std : m.ownedb,yr : m.yearhavingmax(select p.m.lengthfrom partition p) 120oql表達式
17、表達式集合運算符n并(union)、交(intersect)、差(except)運算n集合?含有distinctn包?不含distinctnoql與sql略有不同n可以是集合:參加運算的參數(shù)均為集合n也可以是包:參加運算的參數(shù)中包含包oql表達式表達式集合運算符(select distinct mfrom movies m,m.stars swhere = “harrison ford”)except(select distinct ffrom movies fwhere f.ownedb = “disney”)oql表達式表達式集合運算符n包的并、交、差規(guī)則n若x在
18、b1中出現(xiàn)n1次,在b2中出現(xiàn)n2次nb1b2中,x出現(xiàn)n1+n2次 nb1b2中,x出現(xiàn)min(n1+n2 )次nb1b2中,n若n1 n2,x出現(xiàn)n1 - n2次 examples : odlinterface a (extent aext) attribute string aname;relationship set mybs inverse b:mya;interface b (extent bext) attribute string bname;relationship a mya inverse a:mybs;relationship c myc inverse c:mybs;
19、interface c (extent cext) attribute string cname;relationship set mybs inverse b:myc;examplesq1:select bb.myc.cnamefromaext aa, aa.mybs bbwhere aa.aname = “sue”q2:select bb.myc.cnamefrombext bbwhere bb.mya.aname = “sue”examplesq1:select cc.cnamefromcext cc, cc.mybs bbwhere bb.mya.aname = “sue”q2:sel
20、ect cc.cnamefromcext ccwhere exists bb in bext : bb.mya.aname = “sue”examplesq1:select x : count(aa.mybs)fromaext aaq2:select x : count(partition)frombext bbgroup by bb.myaoql中對象的賦值和建立中對象的賦值和建立nodl/oql能很方便地與宿主語言銜接,混入宿主語言之中noop的宿主語言,擴充了oql的oopoql編程編程變量賦值noql與oop宿主語言體系是匹配的n直接可以使用oql的結(jié)果對象oldmovies = se
21、lect distinct mfrom movies mwhere m.year 1920set oldmovies從聚集中提取元素從聚集中提取元素noql的結(jié)果集(即使只有一個對象)n集合n包nelement運算符n獲得僅有單個對象的結(jié)果集中的成員gwtw = element(select mfrom movies mwhere m.title = “gone with the wind”);獲取聚集的獲取聚集的每個每個成員成員n類似于sql中的cursor,但比cursor便捷noql結(jié)果集(集合或包)列表noql中的order by使結(jié)果集成為列表n利用宿主語言的循環(huán)語句,逐個獲取列表中
22、的元素獲取聚集的獲取聚集的每個每個成員成員movielist = select m/listfrom movies morder by m.title,m.year;numberofmovie = count(movies);for(i=0;inumberofmovies;i+)movie = movielisti;建立新對象建立新對象n產(chǎn)生新的對象nselect-from-wheren類型構(gòu)造符、常量、表達式建立新對象建立新對象n構(gòu)造x = struct(a : 1,b : 2);y = bag(x,x,struct(a : 3,b : 4);建立新對象建立新對象n查詢(select - f
23、rom - where)selectdistinct starpairs(star1:s1,star2:s2)fromstars s1,stars s2wheres1.addr = s2.addr a 構(gòu)造對象類型starpairs:structstar1:star,star2:star建立新對象建立新對象n建立一個movie對象 gwtw = movie(title : “gone with the wind”,year : 1939,length : 239,ownedby : mgm);sql3中的元組對象中的元組對象noodbms中oql描述對象為結(jié)構(gòu)的
24、集合(或者包),關(guān)系是次要的nordbms中關(guān)系是重要的,關(guān)系是核心nrow object (row type)n本質(zhì)上就是元組(tuple)nabstract data type (adt)n作為元組分量的對象sql3行類型行類型n定義元組類型n類似于odl中的classncreate row type t()sql3行類型行類型create row type addresstype(streetchar(50),citychar(30);create row type startype(namechar(30),addressaddresstype);sql3具有行類型的關(guān)系具有行類型的關(guān)
25、系nof type create table moviestar of type startype;sql3訪問行類型的分量訪問行類型的分量n行類型是關(guān)系的分量,行類型本身包含分量n以“.”表示分量的分量(層次)selectmovies, moviestar.address.streetfrommoviestarwhere moviestar.address.city = sfosql3行類型的引用行類型的引用n行類型可以被引用作為另一行類型的分量n通過具有引用類型的屬性,直接引用對象(元組)nref(t)sql3行類型的引用行類型的引用create row type movi
26、etype(titlechar(30),yearinteger,incolorbit(1) );create table movie of type movietype;create row type startype(namechar(30),addressaddresstype,bestmovie ref(movietype) );sql3行類型的引用行類型的引用n通過ref引用對象(元組),實現(xiàn)關(guān)系的聯(lián)系n多對多的引用sql3行類型的引用行類型的引用create row type movietype(title char(30),year integer,incolor bit(1);create row type addresstype(street char(50),city char(30);create row type startype(name char(30),address addresstype);cre
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中國小動物技能大賽第三屆寵物訓導技能大賽參考試題庫(含答案)
- 民營企業(yè)黨支部換屆選舉三年任期工作報告
- 2025民用航空運輸行業(yè)的未來:市場與技術(shù)展望
- 戶外廣告合同范本
- 危險品運輸業(yè)務(wù)承包經(jīng)營合同范本
- 投資擔保合同模板
- 綜合授信合同
- 茶青購銷合同茶葉定購合同
- 人力資源勞務(wù)分包合同書
- 第二章 數(shù)據(jù)結(jié)構(gòu)與算法
- 課題申報參考:流視角下社區(qū)生活圈的適老化評價與空間優(yōu)化研究-以沈陽市為例
- 《openEuler操作系統(tǒng)》考試復習題庫(含答案)
- 項目重點難點分析及解決措施
- 挑戰(zhàn)杯-申報書范本
- 北師大版五年級上冊數(shù)學期末測試卷及答案共5套
- 2024-2025學年人教版生物八年級上冊期末綜合測試卷
- 2025年九省聯(lián)考新高考 語文試卷(含答案解析)
- 第1課《春》公開課一等獎創(chuàng)新教案設(shè)計 統(tǒng)編版語文七年級上冊
- 電子技術(shù)說課課件
- 探索者三維建筑結(jié)構(gòu)建模設(shè)計軟件說明書
- 社會治安視頻監(jiān)控系統(tǒng)項目技術(shù)及設(shè)計方案
評論
0/150
提交評論