《对象数据库》PPT课件.ppt
《《对象数据库》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《对象数据库》PPT课件.ppt(89页珍藏版)》请在三一办公上搜索。
1、,第3部分 对象数据库与WEB数据库第10章 对象数据库,高级数据库系统及其应用,2023/7/14,2,第10章 对象数据库,关系数据库的局限性,10.1,面向对象数据模型,10.2,对象定义语言,10.3,对象查询语言,10.4,C+语言绑定与OODBMS实现,10.5,对象-关系数据库系统,10.6,OODBMS与ORDBMS对比,10.7,2023/7/14,3,10.1 关系数据库的局限性,关系数据库系统只支持一个很小的、固定的数据类型子集。对复杂数据类型的处理不方便呈现很大的能力不足问题。包含复杂数据类型的各类新型应用计算机辅助设计与制造(CAD/CAM)多媒体数据处理、大型文档数
2、据处理卫星云图/雷达等复杂气象数据处理地理信息系统(GIS)等,2023/7/14,4,10.2 面向对象数据模型,10.2.5 继承,10.2.4 对象类型,10.2.3 直接量,10.2.2 对象,10.2.1 对象模型概述,10.2.8 事务模型,10.2.7 封锁与并发控制,10.2.6 数据库操作,2023/7/14,5,10.2.1 对象数据模型概述,对象数据模型(ODM)的发展历程ODBMS自由发展阶段(1993年以前)无规范和标准ODBMS:Object Database Managing SystemsODMG 1.0(1993年)ODMG对象模型的最早版本提出者:Objec
3、t Data Management Group ODMG 2.0(1997)ODMG 3.0(2000)是ODMG的最新也是最后版本,2023/7/14,6,ODMG对象模型的核心概念(1),基本模型元素对象(object)和直接量(literal)。每个object有一个唯一标识,而literal则无标识。对象通常用来表示现实世界的一个实体。对象具有状态状态(state)被定义为一组特性(properties)变量值。一个特性可以是一个对象属性(attribute),或是一个关系(relationship)对象的状态是可变的。对象具有行为行为(behavior)被定义为一组可被外界或其它对象
4、执行的操作(operations)。操作的具体编码实现,则被称为方法(method)。,2023/7/14,7,ODMG对象模型的核心概念(2),对象结构可通过定义状态变量和行为来规定对象的结构。共享相同结构的对象被聚合为一个类(class)。同类对象具有一组同名、同类型特性变量和一组相同的操作。一个具体对象也被称为它所属类的一个实例。对象类型(type)除了可用类(class)概念描述对象类型外,ODMG还引入接口(interface)概念。类是关于对象类型之抽象行为和抽象状态的规范,可直接实例化(intantiable),即可基于类创建的实例对象;而接口只规范对象类型抽象行为,不能直接实例
5、化。类型允许继承(inheritance)不同类型之间可能存在特化/泛化关系(或ISA关系),即存在继承关系。子类型(subtype)允许从它的超类型(supertype)继承特性和方法。,2023/7/14,8,ODMG及其应用方式综述,ODMG基本概念objects、literals、types(classes,interfaces)、operations、properties(attributes,relationships)、inheritances、借助基于ODMG对象模型的ODL语言来构造应用的对象模式操纵应用的对象模式利用SQL99或其它宿主语言,结合基于ODMG的对象查询语言O
6、QL实现,2023/7/14,9,10.2.2 对象,一、对象的主要构成(结构)一组可包含该对象特性值的特性变量属性(attributes)或关系(relationships)对象的所有特性变量及其取值规定了对象的状态(state)一组对象可以响应的消息(messages)每个消息可以带0个或多个参数;消息与ODMG对象模型中术语“操作(operations)”等价对象的所有操作,规定了对象的行为(behavior)操作的具体代码实现,称为方法(a method),2023/7/14,10,10.2.2 对象,二、对象的基本特征有唯一对象标识符(object identifier,oid)可以
7、有一个或多个有意义的名字对象名字好比编程语言中的全局变量,必须在整个ODBMS中保持唯一无重名。应用也可通过对象名来引用对象。具有自己的生命周期对象的生命周期指明了对象是临时内存对象(transient),还是一个持久对象(persistent)。对象生命期的一个重要特点是独立于类型。对象具有特定的结构(见前页),2023/7/14,11,10.2.2 对象,三、对象等价与对象相等的概念两对象等价,如果它们有相同的对象标识(即是同一个对象)。两对象相等,如果它们的状态值都相等(但它们可能有不同的对象标识)。两对象浅度相等,如果两对象除了引用字段外,其余字段值都相同。两对象深度相等,如果两对象不
8、仅非引用字段值相等,而且各相应的引用字段也指向相同的其它对象。,2023/7/14,12,10.2.3 直接量(literal),在ODMG模型中,literal指一个没有对象标识的值。literal值可以是简单结构或是复杂结构。有三种类型的直接量:原子型直接量(atomic literal),对应预定义的基本数据类型,如long、float、char或string等。集合型直接量,指定一个值集或对象集。结构化直接量,包括内置结构,如DATE、TIME、TIMESTAMP等,以及用户自定义结构,2023/7/14,13,10.2.4 对象类型,一、类型规范类型规范定义类型的外部特征对外可见的部
9、分,由对外部可见的操作、特性和例外等一些抽象的描述构成。ODMG对象模型支持的类型规范分以下三种:接口(interface),只定义了类型的抽象行为,即操作部分的规范;直接量(literal),只定义了类型的抽象状态,即特性变量部分的规范;类(class),可同时定义类型的抽象行为和抽象状态规范。类的概念可基本对应到ER的实体集。二、类型实现定义该类型实例对象的一些内部方面,包括实现该类型操作的方法(methods)和一些其它内部细节。类型的实现与语言绑定有关。,2023/7/14,14,10.2.4 对象类型,一、类型规范二、类型实现三、常见的对象类型 原子型对象(atomic object
10、)指用户自定义对象在ODMG对象模型中,没有内建的原子对象/类型。集合型对象(collection object)相当于一个元素容器,其内可存储一个或多个同类型元素。ODMG对象模型支持多种集合对象类型构造,如Set、Bag、List、Array、等。结构化对象特指ODMG预定义的四种对象/类型,2023/7/14,15,10.2.5 继承,一、子类型与行为继承ODMG对象模型支持基于继承(inheritance)的超类型/子类型(supertype/subtype)关系。子类型/超类型关系,也称为ISA关系。在ODL规范语法中,用“:”表达接口继承关系,允许多重接口继承。子类型接口可以在超类
11、接口的基础上,附加定义自有的行为特征,或重载细化超类中原有的行为特征。二、状态继承 三、继承与类层次结构,2023/7/14,16,10.2.5 继承,一、子类型与行为继承二、状态继承 ODMG对象模型也允许定义扩展(extends)关系,允许子类型从一个超类型 同时继承行为和状态。扩展关系是一种单继承的、但可传递的关系。(类或接口)子类型可以从(多个)接口继承行为;但接口不能从类继承行为。只有类可以通过扩展(extend)从另一个类(超类)同时继承行为和状态。三、类层次结构 可利用ISA继承关系,将模式中的类组织成层次化的结构,2023/7/14,17,10.2.6 数据库操作,数据库操作指
12、针对Database类型对象的操作允许基于一个Database类型,创建多个数据库实例,即多个逻辑数据库。一般利用DatabaseFactory接口中定义的new方法,来创建Database类型实例。ODMG模型的数据库类型原型定义了基本的数据库open/close操作,以及针对范围内的对象进行命名、定位和查找等操作。在对数据库存储域内的任何持久对象之前,必须先用open操作打开数据库。除了open和close操作,其它所有操作都必须在事务(Transaction)中执行,否则将会引发错误例外。,2023/7/14,18,封锁和并发控制,ODMG对象模型使用常规的、基于封锁的方法进行并发控制作
13、为缺省封锁策略。并不排斥支持其它更广泛的并发控制策略。,2023/7/14,19,事务模型,对持久对象的任何存取、创建、删除或修改都必须在事务范围内进行。ODMG通过Transaction接口中定义了关于事务对象的各种基本操作。,2023/7/14,20,10.3 对象定义语言(ODL),ODL(object definition language)是遵循ODMG标准的对象数据管理系统(ODBMS)规范说明语言,它是独立于任何特定程序设计语言的语义构造。ODL的主要目标促进遵循ODMG规范的ODBMSs系统共享数据,使数据在这些系统之间迁移更为容易。ODL的主要任务创建对象数据库模式,即定义模
14、式中类和接口。用户可先用ODL指定对象DB模式,然后再使用特定语言绑定,将ODL构造映射为特定程序设计语言的相关构造。,2023/7/14,21,ODL应用示例(一个简化版的大学数据库模式),对应该图的ODL定义,可参见课本 p322-323,2023/7/14,22,10.4 对象查询语言,2023/7/14,23,10.4.1 OQL(Object Query Language)综述,OQL是ODMG标准的一部分。OQL应用必须基于由ODMG-ODL定义的对象类型接口模式。只是一个简单的不完全语言,通常以嵌入形式与其它计算机语言结合使用。它也不保证能表达任意复杂的计算,即它不具有计算完全性
15、。与其它语言的关系OQL语句通常以嵌入形式与其它扩展了持久特性的编程语言(如C+、Java、Smalltalk等)结合使用。与SQL对比,2023/7/14,24,OQL与SQL在语法和语义上的差别对比,SQL中的关系表(Table)名,在OQL中被解释为集合型对象名。SQL中的表属性或列名,在OQL中被广义解释为属性名/关系名,或方法名。OQL在SQL形式语法基础上,扩展了面向对象概念方面的运用,如复杂对象、对象标识、路径表达、多态、操作激活和延迟绑定等。OQL能灵活处理复杂结构对象,而SQL不能。OQL是一种纯粹函数型语言,只要类型系统允许所有操作符均可自由组合。QOL采纳了完全正交风格,
16、允许OQL在保持SQL查询表达式语法简单性的基础上,不限制表达的能力且更易学习。,2023/7/14,25,OQL处理复杂结构对象的主要方式,导航存取能利用对象标识和关系,在对象之间导航。对象检索能检索ODB中已有的对象和创建新的对象。对象行为能执行对象操作,以更新对象的状态,或从对象状态中导出信息。利用继承能利用类型之间的子类型/超类型关系,进行对象存取、检索和更新等操作。,2023/7/14,26,OQL实现ODMG对象模型操纵的主要方法步骤,通常以有名对象或有名对象集作为入口,定位感兴趣对象,并可利用对象标识和对象关系在相关对象之间导航。这可形象比喻为一组“挑选(pick)”、“粘合(m
17、ix)”操作。通过pick操作,从已有对象集中挑出感兴趣的对象,再通过mix操作,把这些被挑出的对象粘合关联在一起。通过激活感兴趣对象上抽象操作所对应的方法,修改对象的状态,或从对象状态中抽取感兴趣的信息。返回一个表示结果信息的对象。,2023/7/14,27,10.4.2 OQL语言简介(1),1.类似SQL的基本SQL语句SELECT DISTINCT x.age FROM Persons x WHERE x.name=Pat它通常有一个数据库入口点可以是任意的有名持久对象。对于许多查询来说,入口点就是类的外延名。只要在OQL查询中引用了集合,就应该在定义一个相应的迭代器变量,来指代集合中
18、的每个元素。有三种指定迭代器变量的语法形式(令e表示一个迭代器变量,Es表示一个集合对象):e in Es Es eEs as e,2023/7/14,28,OQL的条件子句,由于OQL支持正交特性,WHERE子句中条件表达更为灵活,允许出现任何返回布尔型直接量的条件表达。例如,除了SQL的比较操作符,OQL还支持一些测试集合对象内容的操作符或表达式。令v为变量,c为集合表达式,b为布尔类型条件表达式,e是与集合c中元素同类型的元素。如元素e是集合c的成员,则表达式(e in c)为true;如集合c的所有元素都满足b,则(for all v in c:b)为true;如集合c中至少有一个元素
19、满足b,则(exist v in c:b)为true;如集合c有且只有一个元素,则表达式unique(c)为true;,2023/7/14,29,10.4.2 OQL语言简介(2),2.一些比SQL更简单直接的OQL查询表达 可以直接是一个对象名甚至一个具体值。名字可表示任何类型对象,包括原子型对象、结构型对象、集合型对象,或直接量。,2023/7/14,30,10.4.2 OQL语言简介(3),3.路径表达式(path expression)为实现对象之间的导航操作,OQL引入了路径表达式的概念。路径表达式由一个或多个路径步(steps)构成以一个有效名字(对象名、属性名、关系名或操作名)表
20、示每个路径步用“点.或箭头”作为路径分隔符。应用举例假设我们已得到某特定人员对象p,若还希望知道其配偶居住的城市名,则可采用表达p 进行导航,2023/7/14,31,10.4.2 OQL语言简介(4),3.从集合中选择对象 1)从一个集合中选择对象简单SFW形式的OQL语句OQL也允许存取有序型集合对象中特定位置的元素,例如:2)关联查询多个对象集3)连接查询多个对象集,2023/7/14,32,10.4.2 OQL语言简介(4),3.从集合中选择对象 1)从一个集合中选择对象2)关联查询多个对象集类似SQL,SFW 形式的OQL中也可通过在在FROM后列出多个相关联的集合,来实现多个对象集
21、的关联查询。例如,通过在前一集合迭代变量p之后,跟随一个以p开头的次层集合路径表达式,就可有效表达两个具有层次关系集合的关联查询。SELECT c.address FROM Persons p,p.children c 将检查所有人员的所有子女,结果值的类型为bag。3)连接查询多个对象集,2023/7/14,33,10.4.2 OQL语言简介(4),3.从集合中选择对象 1)从一个集合中选择对象2)关联查询多个对象集3)连接查询多个对象集在FROM语句中,也可同时声明多个不直接相关的集合。类似SQL,这允许计算这些集合之间的连接(join)。应用示例,从Persons对象集中选择以某种花名作
22、名字的人:SELECT p FROM Persons p,Flowers f WHERE p.name=f.name,2023/7/14,34,10.4.2 OQL语言简介(5),4.利用查询构造对象1)利用类型构造器创建对象可借助类型名构造器来创建有标识对象。例如,为创建一个前述定义的Person对象,可使用下面的简单语句:Person(name:”Pat”,birthdate:date1956-3-28,salary:100000)也可直接创建无标识对象(literal)set(2,4,8,16)/返回一个无标识的set型集合直接量;struct(a:10,b:“Pat”)/返回一个无标识
23、的结构;直接利用一些类型强制转换操作符构造对象:LISTTOSET(LIST(1,2,3,3,4)=SET(1,2,3,4)DISTINCT(BAG(1,2,3,3)=SET(1,2,3)FLATTEN(LIST(SET(1,2),SET(2,3),SET(4,5)=LIST(1,2,2,3,4,5)2)利用选择语句创建复杂对象,2023/7/14,35,10.4.2 OQL语言简介(5),4.利用查询构造对象1)利用类型构造器创建对象2)利用选择语句创建复杂对象SELECT DISTINCT STRUCT(a:x.age,s:x.sex)FROM Persons x WHERE x.name
24、=PatSELECT DISTINCT STRUCT(name:x.age,hps:(SELECT y FORM x.subordinate as y WHERE y.salary100000)FROM Employees x这个语句对每个employee,建立了一个包含名字和它具有高薪下属的名字集结果是一个类型为set)的集合型直接量。,2023/7/14,36,10.4.2 OQL语言简介(6),5.激活方法、多态与滞后绑定1)激活方法OQL允许在属性名出现任何位置-激活一个可带参数的、返回值匹配表达式的方法。这种灵活的语法表达使得用户不需要区分是存储特性还是计算特性。例如,SELECT
25、p.oldest_child.address.street FROM Persons p WHERE p.lives_in(“Paris”);2)多态与滞后绑定,2023/7/14,37,10.4.2 OQL语言简介(6),5.激活方法、多态与滞后绑定1)激活方法2)多态与滞后绑定面向对象的一个主要特性是可操纵多态集。例如,对象集Persons同时包含了Person、Employee和Student这三个类的实例对象,这些类的实例对象汇集构成了一个多态集。当一个多态集(如Persons)被过滤选择时,借助滞后绑定机制或加类限制指示符,在针对不同子类元素统一执行超类方法时,子类的一个特性或重载方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 对象数据库 对象 数据库 PPT 课件
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-5496880.html