暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
对象代理数据库系统介绍.pdf
819
28页
1次
2023-03-11
免费下载
1
5 面向对象数据库
5.1 面向对象数据库
5.1.1 概述
随着计算机性能和容量的不断提高,可处理数据的复杂度在迅速增长。关系数据模型
表现复杂数据类型方面明显感到不足。于是,人们提出了面向对象数据模型面向对象数据
模型既能表现复杂的数据又能实现数据处理的高效性,人们曾期待面向对象数据库能取代关
系数据库成为主流。
ODMG(Object Data Management Group)是著名的 OMG 成员之一,它成立于 1991 年,
并于 1993 年发布第一版标准:The Object Data Standard ODMG1.0 1999 年发布的最新
版本 ODMG3.0 已经被广泛认可为一个比较成熟的关于面向对象数据库的标准。它主要规
和引导面向对象数据库市场,以解决由于缺少标准而造成各种面向对象数据库产品间缺乏可
移植性的问题,保护用户和厂商双方利益。ODMG 标准把面向对象数据库定义为数据库与
面向对象语言的结合,它主要由以下四个部分组成:
(1) 对象模型: 它从 OMG 对象模型继承演化而来,主要定义了对象的特性,对象间的
联系(继承)等。
(2) 对象描述语言: 它包括对象定义语言(ODL)和对象交互格式(OIF)对象定义语言主
要定义符合对象模型的数据库中对象数据类型而对象交互格式则主要是利用已经创建的类
型创建对象实例,并利用文件形式在多个数据库间移植类型,实现可移植性
(3) 对象查询语言: ODMG 定义了申明(非过程型的)的对象查询语言 OQL用于查询
据库对象.ODMG 遵循 SQL 标准,但在其上又增加了对象的功能。但是 ODMG OQL 不包
SQL UPDATE 等数据操作语句,类似工作由语言绑定完成。
(4) 对象语言绑定: ODMG3.0 中绑定了 C++, Smalltalk Java 三种语言。语言绑定主
要是实现 ODL ODMG 缺乏的 OML。同时利用这些语言的灵活性可以方便对 ODMG
现扩展。
5.1.2 面向对象数据模
面向对象数据模型主要是借鉴了面向对象程序设计语言和抽象数据类型的思想,能用来
表达面向对象数据库管理系统中的各种语义这些语义明确了对象的特征。例如,对象的命
名、标识及联系。它具有很强的可扩充性,是具有丰富语义的数据模型。ODMG 提出的面
向对象数据模型规定了一个面向对象数据库管理系统所支持的基本概念:
1)基本建模单位是对象(Object)和文字(Literal,对象具有唯一的标识符,文
没有标识符。
2每个对象(或文字)都能划分为一个类型Type某个类型的所有元素具有相同的
状态和行为。
3)一个对象的状态由一组特征(Property
Attribute和一个或多个其它对象的之间联系(Relationship)。
4)一个对象的行为由一组操作(Operation来描述,操作应该具有输入输出参数,
且能返回特定类型的结果。
2
5通过 ODL 定义对象数据库管理系统的模式,所存储的对象为该模式中定义的类
的实例。
面向对象数据模型确定了对象文字、类型、操作、特征等含义。这些结构用来定义具
体应用的一些特定的类型以及它们的操作和特征,这就是面向对象数据库的逻辑模式。联系
和操作可以使对象数据模型能够表达出比关系模型丰富得多的语义。
5.1.2.1 类型
类型的定义包括两个方面:一个外部说明和一个或多个实现。外部说明是对象的抽象,
是类型对用户可见的方面,包括对象的特征、操作以及操作引发的异常。类型的实现是定义
对象的内部状况及操作的具体细节。类型的外部说明可分为:类定义接口定义和文字定义。
类定义是定义一个对象类型的抽象行为和抽象状态。接口定义仅定义一个对象类型的抽象行
为。文字仅定义了一个文字类型的抽象状态。
类型的实现包括一个表示和一组方法。表示是语言联编后由该类型的抽象状态生成的数
据结构:对类型的抽象状态中包含的每个特征来说都有一个与之对应的实例变量。方法是是
语言联编后由该类型的抽象行为生成的过程体对类型的抽象行为中定义的每个操作来说都
有与之对应的方法。法实现了对象类型的抽象行为。方法可以读或修改一个对象状态的表
示,或调用其它对象上的操作。
5.1.2.2 类层次结构
ODMG对象模型支持类型层次。不能实例化的类型称为抽象类型如果两个对象或文字具
有相同的类型,当且仅当他们是同一类型的实例。如果类型B是类型A的子类型,那么类型B
的对象可赋值给类型A的变量,反过来则不可以。
面向对象数据模型包括基于继承的类型/类型联系,也称子类型/超类型联系。超类型
是更一般的类型,而子类型是更特殊的类型。例如:
interface Person{…}
interface TeacherPerson {…}
interface ProfessorTeacher {…}
Teacher/Person就是一个子类型/超类型联系。子类型继承其所有超类型的行为,并可以重
定义来自超类类型的行为。
一个类型的外延Extent是由数据库中该类型的所有实例组成。如果一个对象是型A
的一个实例,则该对象必然是A的外延中的成员。如果型A是型B的一个子型,A的外延是
B的外延的一个子集。
5.1.2.3 对象
在面向对象数据模型中,对象是数据库中的基本数据单位,它将具有一定数据结构的数
据元及相应操进行封装,有标识符名字和生存期个对都有标识符(Object
Identifier,一个对象在数据库内总是能够与其它对象相区别。数据库中所有对象都可以
一标识,它是对象身份的表示,称为对象标识符。对象标识符在对象的整个生命周期内是
保持不变的。对象除拥有对象标识符外,还可以有名字。对象标识符是由系统产生的,而
对象名字是由应用产生的。对象名字在整个数据库范围中必须唯一,一个对象可以具有多
个名字,但一个名字只能表示一个对象。对象的生存期决定了如何管理分配给对象的存储
空间。它是在对象创建时被已经确定。面向对象数据模型提供两种生存期:临时的和持久
的。
ODMG对象模型把对象分为原子对象、结构对象和聚集对象。原子对象Atomic Object
类型是用户定义的,ODMG对象模型没有固有的原子对象类型。它的结构对象包括1)期型
Date2)时间段型Interval3)时间型Time4)时间戳型Timestamp聚集对象Collection Object
3
包含许多元素聚集对象的一个重要特征是它的所有元素必须是同一类型的。实际上,聚集
类型就是带参数的类型生成器,聚集对象所有元素的类型为tODMG象模型支持的聚
类型包括:
1) 集合类型 Set<t>它包含的元素是无序的、不重复的。
2) 包类型 Bag<t>:它包含的元素是无序的、可重复的。
3) 列表类型 List<t>它包含有序的、可重复的元素,列表可按位置操作,元素位置是
可变的。
4) 数组类型 Array<t>:它包含有序的、可重复的元素,数组也可按位置操作,但元素
位置是不变的。
5) 字典类型 Dictionary<k,v>:它是无序的、<关键字,值>的无重复元素的集合
5.1.2.4 文字
文字没有对象标识符,它是不能独立存在的文字嵌入在对象中,不能被单独引用。
字的值是不可改变的。ODMG对象模型主要支持下面几种文字类型:原子文字(Atomic
Literal)、聚集文字(Collection Literal)、结构文字Structured Literal)。
5.1.2.5 性质
性质即对象的状态,包括属性和联系属性是属于单一类型的;联系在两个类型之间定
义。联系必须具有对象标识符可引用的实例,文字没有对象标识符所以不能出现在联系中。
属性是用来定义类型实例的抽象状态。例如,student类型可能包含下面的属性声明:
class student{ attribute int numberattribute short ageattribute string name}
属性的值是一个文字或一个对象属性不和数据结构等同,属性是抽象概念,而数据结构则
是物理表示。在类中定义属性是对抽象状态的说明般作为数据结构来实现;在接口中
义属性是对抽象行为的说明,可以做为方法来实现。例如,定义接口
interface person{attribute short age;};
属性age可以是一种计算年龄的方法。属性不是对象,无标识符,不能定义属性的属性或
性间的联系。
联系是定义在类型之间的。ODMG对象模型只支持二元联系,即定义在两个类型之间的联
系。二元联系可分为一对一、一对多和多对多的联系。联系必须是成对出现的。下面的例子
是一个一对多联系的表示方法:
class Teacher class Course
{ {
relationship set<Course> teaches relationship Teacher is_taught_by
inverse Course :: is_taught_by ; inverse Teacher :: teaches;
….
} }
一名老师教(teaches)一组课程,一门课程只由一名老师教(is_taught_by),遍历
路径teaches类型Teacher中定义,遍历路径is_taught_by在类型Course中定义,关键字
inverse可以表明两个遍历路径表示同一联系。
5.1.2.6 操作
性质描述的是类型的状态,类型的另一个特征是行为,操作就是用于描述类型的行为。
类型的建模对象行为具有多态性滞后联编、操作重载等特点操作的定义总是和一个类型
相关联,即操作需要和类型相关且只能和一个类型相关。
of 28
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。