六、面向对象模型
数据库技术在商业领域的巨大成功催生了越来越多的复杂数据管理的需求,例如文献管理系统中的大文本,医学诊断产生的CT、核磁共振图像,股票交易市场的时间序列数据等等。传统数据模型难于支持这些复杂数据的管理,面向对象的数据模型(object-oriented data model,OODM)应运而生。
1.面向对象模型的数据结构
面向对象模型是继关系数据模型后最重要的数据模型,是用面向对象的观点来描述现实世界实体(对象)的逻辑组织、对象间限制、联系等的模型。OODM的核心概念包括类(class)、对象(object)、封装(encapsulation)和继承(inheritance)等。
(1)对象 对象是由一组数据结构和在这组数据结构上的操作的程序代码封装起来的基本单位。对象可描述客观世界中实际或抽象的事物,例如一个病人、一个医生、一种疾病、一种药品等,每个对象都包含一定的属性集合和方法集合。
(2)类 共享同样属性和方法集的所有对象构成了一个类,一个对象是某一类的一个实例。现实世界中,一个对象总是存在一些与之相似的对象。例如,病人之间有些共同的特征,医生之间也有些共同的特征,可以将病人(或医生)的共同特征抽取出来表示成病人(或医生)类。
(3)封装 封装用于把数据和操作包围起来,对数据的访问只能通过已定义的接口来完成。每一个对象是其状态和行为的封装,状态是对象一系列属性值的集合,而行为是在对象状态上操作的集合。
(4)继承 继承常用于类的层次模型,它提供了一种表达共性的方法。定义一个新类,可以从现有的类中派生出来,称为类继承。例如,可以定义一个类“病人”,在此基础上派生出两个新的类:“心血管病病人”和“糖尿病病人”。“心血管病病人”和“糖尿病病人”继承了“病人”类的属性和方法,同时又可以有各自特殊的属性和方法。
2.面向对象模型的主要特点
面向对象模型能够清晰地表示复杂对象,支持用户自定义的数据类型,支持用户自定义的运算和函数,满足了许多新的数据库应用需求。