面向对象查询语言ppt课件_第1页
面向对象查询语言ppt课件_第2页
面向对象查询语言ppt课件_第3页
面向对象查询语言ppt课件_第4页
面向对象查询语言ppt课件_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八章第八章 面向对象查询言语面向对象查询言语Object-Oriented Query Languages概述概述 面向对象 面向对象数据模型 面向对象方法中引入数据库的概念耐久化 以面向对象的方法构造数据库 关系对象数据模型 关系数据模型中引入面向对象的概念 引入新的数据类型,作为类型扩展概述概述 面向对象查询言语 OODBMS OQL ORDBMS SQL3概述概述 ODMG Object Database Management Group ODMG-93 汲取OMG的COMCommon Object Model、IDLInterface Definition Language 添加数据

2、库内容,构成OM、ODL OQL 力图成为OODBMS的规范ODL中与查询相关的特性中与查询相关的特性 ODLObject Definition Language 用面向对象的术语,阐明数据库构造的规范言语 用于书写面向对象数据库的设计阐明 可直接转换成对OODBMS的实现阐明ODL对象的操作对象的操作 ODL,Interface 属性Attribute 该class的特性 联络Relationship 该类对象与其他类对象的联络援用 方法Method 与类相关的函数,可作用与该类对象的函数 代码不是ODL的成分,由宿主实现ODL方法的阐明方法的阐明 署名 方法的名字 前往值的类型 参数种类

3、In Out InOut 参数类型 异常Exception处置 RaisesODL方法的阐明方法的阐明Interface MovieKeytitle,year /attributes & relationshipsfloat lengthInHours RaisesnoLengthFound;starNamesout Set;otherNamesin Star,out Set RaisesnoSuchStar;ODL类的范围类的范围 ODL的阐明 是该类对象的当前集合名,类似于关系名 extent 范围名可以与类名不一致 将以范围名被援用ODL类的范围类的范围Interface Movieex

4、tent MoviesKeytitle,year /attributes & relationshipsfloat lengthInHours RaisesnoLengthFound;starNamesout Set;otherNamesin Star,out Set RaisesnoSuchStar;OQL 对象查询言语 OQL:Object Query Language 以ODMG对象模型为根底的类似SQL的查询言语 作为OOP宿主言语的扩展 OQL混入宿主言语不是嵌入 完好描画:ODMG-93OQL实例实例Interface Movieextent Movieskeytitle,year

5、attribute string title;attribute integer year;attribute integer length;attribute enumerationcolor,blackAndWhite filmType;relationship Set starsinverse Star:starredIn;relationship Studio ownedByinverse Studio:owns;OQL实例实例Interface Starextent Starskey nameattribute string name;attribute Struct Addrstr

6、ing street,string cityaddress;relationship Set starredIninverse Movie:stars;OQL实例实例Interface Studioextent Studioskey nameattribute string name;attribute string address; relationship Set ownsinverse Movie:ownedBy;OQL类型系统类型系统 OQL中的类型与ODL一致 ODL只涉及变量类型 OQL将涉及常量值OQL类型系统类型系统 常量的表示 根本类型 原子类型 整数、浮点数、字符、字符串、

7、布尔型 枚举类型 由ODL中定义的值OQL类型系统类型系统 常量的表示 复杂类型 Set Bag List Array Struct Structfoo:bag2,1,2,bar:“bazOQL途径表达式途径表达式 采用点.的方式访问变量的分量 假设a表示属于类C的对象,p是该类的某个特性属性、联络或方法,那么a.p表示把p用于a的结果 假设p是属性,那么a.p就是对象a的该属性值 假设p是联络,那么a.p就是经过联络p与a相连的对象或对象的聚集 假设p是方法,那么a.p就是把p用于a的结果OQL途径表达式途径表达式 例:假设myMovie是宿主言语的变量,其值是Movie对象,那么 myMo

8、vie.length对象中的属性名是该电影的长度 myMovie.lengthInHours对象中的方法名的值是实数,经过把方法lengthInHours作用于对象myMovie的结果 mymovie.stars对象中的联络名的值是经过联络stars与电影对象myMovie相连的Star对象的集合 myMovie.starNamesmyStars本身不前往任何值,但以参数myStars作为输出,前往电影对象myMovie中的影星姓名集OQL途径表达式途径表达式 myMovie.ownedB表示什么?OQL中的查询表达式中的查询表达式 具有类似SQL的Select-From-Wher

9、e格式 Select m.year From Movies m/为什么是Movies ? Where m.title = “Gone With the Wind 查询将产生对象的包BagOQL查询中消除反复查询中消除反复 查询结果集是Bag,而不是Set,缺省为ALL DistinctOQL复杂的输出类型复杂的输出类型 Select子句中的表达式 简单变量 任何表达式Select Distinct Structstar1:s1,star2:s2From Stars s1,stars s2Where s1.addr = s2.addr A Select star

10、1:s1,star2:s2OQL中的子查询中的子查询 可在适于聚集的任何地方运用select-from-where表达式 可以出如今From中好似SQLSelectDistinct From Select mFrom Movies mWhere m.ownedB = “Disney d,d.stars sOQL对结果的排序对结果的排序 类似于SQL Order By Selectm FromMovies m Wherem.ownerdB = “Disney Order By m.length,m.titleOQL对结果的排序对结果的排序Select mFro

11、mMovies mWherem.ownerdB = “DisneyOrder By m.length Desc 0:4OQL表达式的附加格式表达式的附加格式 表达式的构造方式 量词表达式 聚合表达式 分组表达式 Having子句 集合运算OQL表达式表达式量词表达式量词表达式 For All 检测能否一切的集合成员都满足条件,前往True/False For All x In S : Cx 集合S中的一切成员每个x均满足条件Cx 类似于SQL中的AllOQL表达式表达式量词表达式量词表达式 For All:仅在“Disney公司的影片中出演的影星 Selects FromStars

12、 s Where For All m In s.starredIn : m.ownedB=“Disneyrelationship Set starredIninverse Movie:stars;OQL表达式表达式量词表达式量词表达式 Exists 检测能否至少有一个集合成员满足条件,前往True/False Exists x In S : Cx 集合S中至少有一个成员x满足条件Cx 类似于SQL中的ExistsOQL表达式表达式量词表达式量词表达式 Exists:在“Disney公司的影片中担任过角色的影星 Selects FromStars s WhereExists m In

13、 s.starredIn : m.ownedB = “Disneyrelationship Set starredIninverse Movie:stars;OQL表达式表达式聚合表达式聚合表达式 聚合表达式,作用于其成员具有适宜类型的聚集Collection AVG/算术类型 COUNT /任何聚集 SUM/算术类型 MIN/可比较类型 MAX/可比较类型OQL表达式表达式聚合表达式聚合表达式AvgSelect m.length From Movies mOQL表达式表达式分组表达式分组表达式 Group By 与SQL有些差别Select std,yr, sumLength :

14、 SUMSelect p.m.lengthFrom partition pFrom Movies mGroup By std:m.ownedB,yr:m.yearOQL表达式表达式分组表达式分组表达式 Group By 格式: Group By f1:e1,f2:e2,fn:en 前往的是构造的集合Structf1:v1,f2:v2,fn:vn,partition:P Select子句中的项,只能取自Group By结果中的域f1,f2,fn和partitionOQL表达式表达式分组表达式分组表达式SelectOld,New,avgLength:AvgSelect p.m.leng

15、th From partition pFromMovies mGroup By Old:m.year = 2000OQL表达式表达式Having子句子句 Having子句与SQL类似 作用于partition,用来删除由Group By建立的某些组 Having 条件为True:输出 条件为False:不输出OQL表达式表达式Having子句子句Selectstd, yr,sumLength:SUMSelect p.m.lengthFrom partition pFromMovies mGroup By std : m.ownedB,yr : m.yearHavingSUMSele

16、ct p.m.lengthFrom partition p 120OQL表达式表达式Having子句子句Selectstd, yr,sumLength:SUMSelect p.m.lengthFrom partition pFromMovies mGroup By std : m.ownedB,yr : m.yearHavingMaxSelect p.m.lengthFrom partition p 120OQL表达式表达式集合运算符集合运算符 并Union、交Intersect、差Except运算 集合?含有Distinct 包?不含Distinct OQL与SQL略有不同 可以

17、是集合:参与运算的参数均为集合 也可以是包:参与运算的参数中包含包OQL表达式表达式集合运算符集合运算符Select Distinct mFrom Movies m,m.stars sWhere = “Harrison FordExceptSelect Distinct fFrom Movies fWhere f.ownedB = “DisneyOQL表达式表达式集合运算符集合运算符 包的并、交、差规那么 假设x在B1中呈现n1次,在B2中呈现n2次 B1B2中,x呈现n1+n2次 B1B2中,x呈现minn1+n2 次 B1B2中, 假设n1 n2,x呈现n1 -

18、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;Interface C extent Cext attribute string cName;relationship Set myBs inverse B:myC;E

19、xamplesQ1:Selectbb.myCameFrom Aext aa, aa.myBs bbWhereaa.aName = “sueQ2:Selectbb.myCameFrom Bext bbWherebb.myA.aName = “sueExamplesQ1:SelectccameFrom Cext cc, cc.myBs bbWherebb.myA.aName = “sueQ2:SelectccameFrom Cext ccWhereExists bb In Bext : bb.myA.aName = “sueExamplesQ1:Selectx : COUNTaa.myBsFrom

20、 Aext aaQ2:Selectx : COUNTpartitionFrom Bext bbGroup By bb.myAOQL中对象的赋值和建立中对象的赋值和建立 ODL/OQL能很方便地与宿主言语衔接,混入宿主言语之中 OOP的宿主言语,扩展了OQL的OOPOQL编程编程变量赋值变量赋值 OQL与OOP宿主言语体系是匹配的 直接可以运用OQL的结果对象oldMovies = Select Distinct mFrom Movies mWhere m.year 1920SetoldMovies从聚集中提取元素从聚集中提取元素 OQL的结果集即使只需一个对象 集合 包 ELEMENT运算符

21、获得仅有单个对象的结果集中的成员 gwtw = ELEMENTSelect mFrom Movies mWhere m.title = “Gone With the Wind;获取聚集的每个成员获取聚集的每个成员 类似于SQL中的Cursor,但比Cursor便利 OQL结果集集合或包列表 OQL中的Order By使结果集成为列表 利用宿主言语的循环语句,逐个获取列表中的元素获取聚集的每个成员获取聚集的每个成员movieList = Select m /ListFrom Movies mOrder By m.title,m.year;numberOfMovie = COUNTMovies;f

22、ori=0;inumberOfMovies;i+movie = movieListi;建立新对象建立新对象 产生新的对象 Select-from-where 类型构造符、常量、表达式建立新对象建立新对象 构造 x = Structa : 1,b : 2; y = Bagx,x,Structa : 3,b : 4;建立新对象建立新对象 查询Select - From - Where SelectDistinct StarPairsstar1:s1,star2:s2 FromStars s1,Stars s2 Wheres1.addr = s2.addr A 构造

23、对象类型StarPairs:Structstar1:Star,star2:Star建立新对象建立新对象 建立一个Movie对象 gwtw = Movietitle : “Gone With the Wind,year : 1939,length : 239,ownedBy : mgm;SQL3中的元组对象中的元组对象 OODBMS中OQL描画对象为构造的集合或者包,关系是次要的 ORDBMS中关系是重要的,关系是中心 Row ObjectRow Type 本质上就是元组tuple Abstract Data Type ADT 作为元组分量的对象SQL3行类型行类型 定义元组类型 类似于ODL中

24、的Class Create Row Type TSQL3行类型行类型Create Row Type AddressTypestreetChar50,cityChar30;Create Row Type StarTypenameChar30,addressAddressType;SQL3具有行类型的关系具有行类型的关系 OF TYPE Create Table MovieStar OF TYPE StarType;SQL3访问行类型的分量访问行类型的分量 行类型是关系的分量,行类型本身包含分量 以“.表示分量的分量层次SelectMovieS, MovieStar.address

25、.streetFromMovieStarWhereMovieStar.address.city = SFOSQL3行类型的援用行类型的援用 行类型可以被援用作为另一行类型的分量 经过具有援用类型的属性,直接援用对象元组 REFTSQL3行类型的援用行类型的援用Create Row Type MovieTypetitleChar30,yearInteger,inColorBit1 ;Create Table Movie OF TYPE MovieType;Create Row Type StarTypenameChar30,addressAddressType,bestMovieREFMovieType ;SQL3行类型的援用行类型的援用 经过REF援用对象元组,实现关系的联络 多对多的援用SQL3行类型的援用行类型的援用Create Row Type MovieTypetitle Char30,year Integer,inColor Bit1;Create Row Type AddressTypestreet Char50,city Char30;Create Row Type StarTypename Char30,address AddressType;Crea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论