2
(5)通过odl定义对象数据库管理系统的模式,所存储的对象为该模式中定义的类型
的实例。
面向对象数据模型确定了对象、文字、类型、操作、特征等含义。这些结构用来定义具
体应用的一些特定的类型以及它们的操作和特征,这就是面向对象数据库的逻辑模式。联系
和操作可以使对象数据模型能够表达出比关系模型丰富得多的语义。
5.1.2.1 类型
类型的定义包括两个方面:一个外部说明和一个或多个实现。外部说明是对象的抽象,
是类型对用户可见的方面,包括对象的特征、操作以及操作引发的异常。类型的实现是定义
对象的内部状况及操作的具体细节。类型的外部说明可分为:类定义、接口定义和文字定义。
类定义是定义一个对象类型的抽象行为和抽象状态。接口定义仅定义一个对象类型的抽象行
为。文字仅定义了一个文字类型的抽象状态。
类型的实现包括一个表示和一组方法。表示是语言联编后由该类型的抽象状态生成的数
据结构:对类型的抽象状态中包含的每个特征来说都有一个与之对应的实例变量。方法是是
语言联编后由该类型的抽象行为生成的过程体:对类型的抽象行为中定义的每个操作来说都
有与之对应的方法。方法实现了对象类型的抽象行为。方法可以读或修改一个对象状态的表
示,或调用其它对象上的操作。
5.1.2.2 类层次结构
odmg对象模型支持类型层次。不能实例化的类型称为抽象类型。如果两个对象或文字具
有相同的类型,当且仅当他们是同一类型的实例。如果类型b是类型a的子类型,那么类型b
的对象可赋值给类型a的变量,反过来则不可以。
面向对象数据模型包括基于继承的类型/子类型联系,也称子类型/超类型联系。超类型
是更一般的类型,而子类型是更特殊的类型。例如:
interface person{…};
interface teacher:person {…};
interface professor:teacher {…};
teacher/person就是一个子类型/超类型联系。子类型继承其所有超类型的行为,并可以重新
定义来自超类类型的行为。
一个类型的外延(extent)是由数据库中该类型的所有实例组成。如果一个对象是型a
的一个实例,则该对象必然是a的外延中的成员。如果型a是型b的一个子型,则a的外延是
b的外延的一个子集。
5.1.2.3 对象
在面向对象数据模型中,对象是数据库中的基本数据单位,它将具有一定数据结构的数
据元组及相应操作进行封装,有其标识符、名字和生存期。每个对象都有标识符(object
identifier),一个对象在数据库内总是能够与其它对象相区别。数据库中所有对象都可以唯
一标识,它是对象身份的表示,称为对象标识符。对象标识符在对象的整个生命周期内是
保持不变的。对象除拥有对象标识符外,还可以有名字。对象标识符是由系统产生的,而
对象名字是由应用产生的。对象名字在整个数据库范围中必须唯一,一个对象可以具有多
个名字,但一个名字只能表示一个对象。对象的生存期决定了如何管理分配给对象的存储
空间。它是在对象创建时被已经确定。面向对象数据模型提供两种生存期:临时的和持久
的。
odmg对象模型把对象分为原子对象、结构对象和聚集对象。原子对象(atomic object)
类型是用户定义的,odmg对象模型没有固有的原子对象类型。它的结构对象包括1)日期型
date;2)时间段型interval;3)时间型time;4)时间戳型timestamp。聚集对象(collection object)
评论