面向对象数据库系统(OODBS)是数据库技术与面向对象程序设计方法想结合的产物。
对于OO数据模型和面向对象数据库系统的研究主要体现在: 研究以关系数据库和SQL为基础的扩展关系模型;以面向对象的程序设计语言为基础,研究持久的程序设计语言,支持OO模型;建立新的面向对象数据库系统, 支持OO数据模型。
面向对象程序设计方法是一种支持模块化设计和软件重用的实际可行的编程方法。程序设计的主要活动集中在建立对象和对象之间的联系(或通信)上,面向对象程序设计的基本思想是封装和可扩展性。
面向对象数据库系统支持面向对象数据模型(OO模型)。即是一个持久的、可共享的对象库的存储和管理者;而一个对象库是由一个OO模型所定义的对象的集合体。
一个OO模型是用面向对象观点来描述现实世界实体(对象)的逻辑组织、对象间限制、联系等的模型。一系列面向对象核心概念构成了OO模型的基础。概括起来,OO模型的核心概念有如下一些:
(1)对象(Object)与对象标识OID(Object IDentifier)
现实世界的任一实体都被统一地模型化为一个对象,每个对象有一个唯一的标识,称为对象标识(OID)。
(2)封装(Encapsulation)
每一个对象是其状态与行为的封装,其中状态是该对象一系列属性(Attribute)值的集合,而行为是在对象状态上操作的集合,操作也称为方法(Method)。
(3)类(C1ass)
共享同样属性和方法集的所有对象构成了一个对象类(简称类),一个对象是某一类的一个实例(instance)。
(4)类层次(结构)
在一个面向对象数据库模式中,可以定义一个类(如C1)的子类(如C2),类Cl称为类C2的超类(或父类)。子类(如C2)还可以再定义子类(如C3)。这样,面向对象数据库模式的一组类形成一个有限的层次结构,称为类层次。
(5)消息(Message)
由于对象是封装的,对象与外部的通信一般只能通过显式的消息传递,即消息从外部传送给对象,存取和调用对象中的属性和方法,在内部执行所要求的操作,操作的结果仍以消息的形式返回。
OODB语言用于描述面向对象数据库模式,说明并操纵类定义与对象实例。OODB语言主要包括对象定义语言(ODL)和对象操纵语言(OML),对象操纵语言中一个重要子集是对象查询语言(OQL)。OODB语言一般应具备下述功能:
(1)类的定义与操纵
面向对象数据库语言可以操纵类,包括定义、生成、存取、修改与撤销类。其中类的定义包括定义类的属性、操作特征、继承性与约束等。
(2)操作/方法的定义
面向对象数据库语言可用于对象操作/方法的定义与实现。在操作实现中,语言的命令可用于操作对象的局部数据结构。对象模型中的封装性允许操作/方法由不同程序设计语言来实现,并且隐藏不同程序设计语言实现的事实。
(3)对象的操纵
面向对象数据库语言可以用于操纵(即生成、存取。修改与删除)实例对象。
目前,还没有像SQL那样的关于面向对象数据库语言的标准,因此不同的OODBMS其具体的数据库语言各不相同。
对象-关系数据库系统就是将关系数据库系统与面向对象数据库系统两方面的特征相结合。 对象-关系数据库系统除了具有原来关系数据库的各种特点外,还应该提供以下特点:
(1)扩充数据类型,例如可以定义数组、向量、矩阵、集合等数据类型以及这些数据类型上的操作。
(2)支持复杂对象,即由多种基本数据类型或用户自定义的数据类型构成的对象。
(3)支持继承的概念
(4)提供通用的规则系统,大大增强对象-关系数据库的功能,使之具有主动数据库和知识库的特性。