3. 面向对象数据库的发展

  面向对象数据库系统是数据库和面向对象技术的集成。就是说一方面需要实现当前数据库系统的复杂操纵,同时需要用面向对象技术满足工程设计领域对数据库的要求。另一方面面向对象语言和系统的应用需要具有数据库系统的能力,如持久性、并发控制、事务管理等。这些要求导致产生面向对象数据库系统如图8-10所示。

  图中的箭头表示继承关系。由图中可以看到:
  面向对象数据库 = 面向对象概念 + 数据库功能。

  自八十年代中期以来,由于面向对象数据库系统缺乏形式化机制,使得对面向对象数据库系统的支持者和崇尚关系数据库形式化基础的专家们展开了一场论战。1989年,M.C.Atkinson等一批专门研究面向对象的著名学者在东京召开了第一届国际DOODB会议,发表了"面向对象的数据库系统宣言"。 "面向对象的数据库系统宣言"把面向对象的数据库应具有的特性分为三类:必备特性、可选特性和开放特性。紧接着,于1990年,美国的高级DBMS功能委员会会员,RDB的著名学者发表了"第三代数据库系统宣言",认为第三代数据库是关系模型的扩充。"第三代数据库系统宣言"给出第三代DBMS应具有的特征,包括三条基本原则和 13 个命题。

  双方虽然在下一代数据库的实现方法、技术路线和功能上存在着分岐,但在许多重要观点上是一致的。
  综合各位专家学者对OODB概念的共识,以及对OODB目标的共识如下:

  (1) 面向对象的数据库系统必须满足如下两个条件:
    ● 支持核心的面向对象数据模型。
    ● 借助扩充/修改传统数据库的语义,使之与核心的面向对象数据模型的语义一致,以支持传统数据库系统中所有的数据库特征。

  (2) 面向对象数据库系统的可选特征和扩充特征是:
    ● 支持大量的常驻内存的对象管理;
    ● 专用于CAX应用方面的特征;
    ● 与面向对象的程序设计语言无缝地集成。

  (3) 一组核心的面向对象概念作为OODB的数据模型的基础。
    面向对象的数据库系统虽然还没有统一的定义和形式化基础,但已经表现出有一系列的重要优点:
    (1) 用简单的概念--对象描述所有的概念实体。从而简化了设计人员的任务和应用软件的开发。一个对象可表示任何事情,从简单的一个数到复杂的一个实体。如一个人是一个对象,一辆汽车、一架飞机也是一个对象。一个对象有与其相关联的属性集合和方法。属性集合的值决定一个对象的状态。一个方法是在一个对象上实现的操作编码。
    (2) 允许把任意复杂的对象表示成循环递归的对象。一个对象的某个属性值本身可以是一个对象,它既可以是一个基本对象,如是一个字符串、一个整数;也可以是包含有属性集合的一个复杂对象。对象的一个属性值可以是一个简单对象,或者是对象的一个集合。用这种方法,面向对象的数据模型能把任何一个复杂对象构造成一个递归的对象,这样构造的对象才是复杂对象的精确概念。复杂对象的各种表示方法已看作是为了描述 CAD/CAM 对象,对关系数据模型的基本扩充。
    (3) 提供类层次和伴随类层次的特性继承概念。类层次是指在一个类和它的子类或者是一个类和它的超类之间产生"IS_A"的关系。一个类的所有子类要继承为其超类定义的所有特性,而且可以有它自己的另外特性。伴随类层次的特性继承概念使得可以实现设计对象的再利用,以及数据库和应用程序的自顶向下的设计方法。

  传统的数据模型,由于缺乏丰富的语义描述能力,难以支持相当多的新型应用。新的数据类型如图形、图象、文本、声音、规则或过程,以及各种信息的多版本性。面向对象的数据库系统支持丰富的语义和复杂的数据模型,可以对广泛的数据库应用领域的要求提供支持。
由于程序设计的面向对象的风格已应用在许多领域,在各个领域中,面向对象的风格有各种不同的解释。然而与面向对象的数据库(OODB)环境有关的某些重要概念基本是相同的。这包括:

  对象(object)的概念。
  把对象分成类(classes)并定义它们的类型(type)。
  复杂对象和特性继承(inheritance)的有关概念。
  对象中数据和过程的封装(encapsulation),以及重载(overloading)。
  对象的持久性(persistence)。