简介
面向对象数据库管理系统(OODBMS,object-oriented database management system)是支持将数据当作对象来模拟和创造的一种数据库管理系统。它包括对对象类的支持以及对子类及其对象对类特性和方法的继承的支持。现在,由什么组成OODBMS的标准尚未被广泛认同,并且OODBMS产品被认为尚处于初期。其间,与对象相关的数据库管理系统(ORDBMS),有种观念是面向对象数据库概念可以添加到关系数据库上,这一观念在可利用的产品中更为普遍。面向对象数据库界面标准被产业群体发展,成为对象数据管理组(ODMG)。对象管理组(OMG)已经被定为网络中系统之间的面向对象数据的中间界面。
定义在《面向对象的数据库声明》中,Malcolm Atkinson和其他作者对OODBMS的定义如下:
面向对象的数据库系统必须满足两项标准:它必须是一个数据库管理系统,并且必须是面向对象的系统,例如在尽可能的范围内它必须与当前的面向对象的程序语言相兼容。第一个标准转换为五个特征:持续性、二级存储管理、同步性、防御性和一个特定询问工具。第二个标准转换为八个特性:复杂的对象、对象一致性、封装、类型、继承性、迟约束、可延长性和计算的完全性。
开发阶段数据库管理系统的开发须经过需求分析和系统设计两个阶段。在完成了需求分析、进入设计阶段时,通常要进行数据库的设计,数据库设计的好坏直接关系到系统后期的开发。传统需求分析是用数据流图,而数据库的设计是用实体-关系模型方法(E-R方法),需求分析者和数据库设计者对应用理解很难达成一致。如果在需求分析阶段采用面向对象的分析方法,数据库设计也采用面向对象的设计方法,则需求分析阶段的对象模型可以很自然地转为数据库的结构。
一个数据库系统要成为面向对象数据库系统,必须具备面向对象系统的特征及其数据库的特征,支持核心的面向对象数据模型以及扩充 修改传统数据库的语义,使之与核心的面向对象的数据模型取得一致。面向对象数据模型是构成面向对象数据库结构的基础,面向对象的数据库管理系统设计的关健是其新型的数据模型对象即面向对象数据模型,以及数据模型向数据库结构的转化。1
面向对象的数据模型对象、类及继承性构成了面向对象数据模型结构特性的基础,具体有如下的含义:
(1)对象是数据结构和操作的最基本的单位。
(2)每个对象都具有由系统提供的唯一的、可识别的值OID(对象识别符)。
(3)类描述对象共同的类型,用于创建类实例。
(4)类与类之间通过继承而互相联系,通过超类与子类关系还可构成类层次结构。
(5)类定义是说明数据库模式的机制,数据库模式包含特定应用所定义的全部类,类定义包含了继承关系和结构关系,其中后者相当于E-R模型。
(6)完全的数据库模式可包含一个或多个类层次及一个或多个结构关系,就某个模式描述则涉及到某些类的实例变量。
(7)类定义可包含系统所定义或用户定义的实例变量,其类型可与类相一致。
需要说明的是,对象数据模型的结构具有很强的开放性和可扩充性,理由是其数据库模型可通过定义新类而获得动态扩充,同时可扩充性还指定义或增加新的数据类型的共同的能力,包括在常规的数据库管理系统中所不能管理的类型,并可通过增加包括表示与操纵非传统数据类型的结构与操作的新类来实现对非结构化数据的管理。
事实上,面向对象数据模型是对系统进行数据分析时,将欲抽取的事物、概念分解成一个个独立的、可以区分的事物,再是套上对象之间的关系而构成的,包括领域需求分析和建立模型两个主要过程,其操作的基础是消息的传递。1
对象数据模型向数据库结构的转换基于面向对象技术的数据库系统是由若干个对象和这些对象间的相互作用构成,其中对象由数据和操作两部分组成,对象具有自主性、封装性和动态性。将面向对象技术应用到软件工程的各个阶段,其实质就是寻找对象及各对象间的相互作用关系。在需求分析阶段,面向对象分析是对真实世界对象建模,其根本出发点是站在应用的角度对问题域进行刻画和描述,这样有利于对问题的理解。需求分析阶段的结果是:问题陈述+对象模型+动态模型+功能模型。设计阶段是对原对象模型进一步描述,此阶段可用面向对象方法实现数据库的设计。基于面向对象技术的数据库设计中的对象数据模型与数据库管理系统中的外模式和概念模式相对应,因而可引入外对象模型和概念对象模型。不同权限用户所看到的外对象模型不同,但概念对象模型在全局上是一致的。
对象数据模型与数据库管理系统中的表之间有着直接映射的关系。将对象数据模型转化为表结构时,必须考虑完整性约束和范式约束,以反映表之间的联系。将对象数据模型映射为表,可用以下几个步骤来实施:
(1)将单个对象映射为表;
(2)将对象间的二元关联映射为表;
(3)将对象间的聚集关系映射为表;
(4)将对象间的继承关系映射为表;
(5)将三元关联映射为表。1
面向对象数据库管理系统的构造能够自然地表现复杂数据模型的OOP技术可以提高应用系统的统一性。越来越复杂化的系统期待着高效率、短时间内就可以构造出的环境。比如说,我们需要在短期内构造出某单位的含有图像和语音处理的人事数据库管理系统。毫无疑问,采用传统系统开发方式很难达到这一要求。但是,如果假设有关人事管理的基本数据系统、声音系统、图像系统已经存在,那么可以简单地在一个窗口上定义这个相对复杂的人事数据库管理系统。于是面向对象的数据库管理系统作为不可缺少的系统引起人们的注目。
必须指出,一个OODBMS自身就是一个对象。而它又是由若干个具有完全相对独立功能的对象以及各对象间的协调关系所构成。一个OODBMS的制作过程可以用下图简单地描述。
由图可以看出,OODBMS的设计与实现其关键就在于对象的制作。而对象的制作除了要配备相应的工具和支持环境外,一个最大的问题仍然是从错综复杂的数据关系中抽象出对象,并且在作为最小知识单元的基础上用面向对象的程序设计语言加以实现。 面向对象的编程技术并不是一个新概念。但是,只是在当数据关系变得相当复杂的多媒体时代,在开发周期要求短、说明书变化多的情况下,在处理大量信息的领域里才充分显示了它的魅力,并且有着主宰DBMS的开发领域的倾向。但是,一个完备的开发环境包括对作成系统的调试问题,还有待于进一步的研究。2