1
数据库原理与应用技术
1.2.2.4 1.2.4 面向对象数据模型
1.2.4 面向对象数据模型

图1-19 面向对象数据模型

在很多领域中,一个对象可由多个属性来描述,而其中某些属性本身又是另一个对象,也有自身的内部结构。例如,计算机辅助设计(CAD)的图形数据,多媒体应用的图像、声音和文档等。

所谓面向对象数据模型是指属性和操作属性的方法封装在称为对象类的结构中的模型。可以通过将一个对象类嵌套或封装在另一个类里来表示类间的关联,新的对象类可以从更一般化的对象类中导出,如图1-19所示。

以下是描述面向对象数据模型的几个概念。

1. 对象

对象是对一组信息及其操作的描述。现实世界中实体的模型化,和记录的概念相似,但更加复杂。

一个对象对应着E-R模型中的一个实体,面向对象类型的基础是将一个对象的相关数据和代码封装为一个单元,其内容对外界是不可见的。

2. 类(对象类)

类是类似对象的集合(相似的对象组成一个类)。面向对象数据模型中类的概念对应于E-R模型中的实体集概念。

3. 类层次

一个面向对象数据库模型通常需要很多的类,然而,有些类是相似的。为了表示类之间的相似性,我们把类放入一个特殊化层次(ISA)中。图1-20描述了一个带有特殊化层次的E-R图,表示银行人员之间的关系,图1-21给出了对应的类层次。

图1-20 银行实例的特殊化层次

一个系统中,所有的类和子类组成一个树形的类层次。类层次的概念实际上类似于E-R模型中特殊化层次的概念。在类层次中,一个类继承其直接或间接祖先的所有属性和方法。所谓继承性是指允许不同类的对象共享它们公共部分的结构和特征。继承性可以用超类和子类的层次联系实现。

可用ISA指出一个类是另一个类的特殊化,类的特殊化称为子类(Subclass)。例如,图1-21所示,employee是person的一个子类,是teller的超类(Superclass),person是employee的超类。

4. 对象标识

创建对象时,系统为每个对象赋予一个唯一的标识。这个标识称为对象标识。标识的形式包含以下几种。

(1) 值(Value):用于标识的一个数据值。这种形式的标识常在关系数据库系统中使用。例如,一个元组的主码标识了这个元组。

(2) 名称(Name):用于标识一个用户提供的名称。这种形式的标识常用于文件系统中的文件。不管文件的内容是什么,用户会给每个文件赋予一个名称来唯一标识这个文件。

(3) 内置(Built-in):数据模型或程序设计语言中的一种标识方法,它不需要用户提供的标识符。这种形式的标识常在面向对象系统中使用,对象创建时系统会自动赋予每个对象一个标识符。

5. 对象包含

对象之间的引用可以用于对现实世界中的不同概念进行建模,对象包含是其中之一。图1-22所示的是自行车设计数据库的包含层次,每辆自行车的设计包括车轮、车架、车闸和齿轮。车轮又包括轮框、一套辐条和轮胎。该设计的每个构件可以建模为一个对象,同时构件间的包含可以建模为对象间的包含。

图1-22给出了自行车之间的包含关系。

图1-21 图1-20对应的类层次

图1-22 自行车设计数据库的包含层次

包含其他对象的对象称为复杂对象(复合对象),可以包含如图1-22所示的多层次包含,这种情形就产生了对象间的包含层次。

在面向对象系统中,包含是一个重要的概念,因为它允许不同的用户用不同的粒度来观察数据。一个自行车设计师只专注于自行车的实例,而对于一个市场职员来说,所关心的只是自行车的价格。