下载
第12章 面向对象的特性
本章要点:
背景
面向对象技术
Oracle 8对象选项
R E F属性
方法
集合—变长数组与嵌套表
对象视图
12.1 背景
面向对象的D B M S (O O D B M S ),也就是那些非主流的关系型( R D B M S )的D B M S ,是
面向对象程序语言(如 A c t o r 和S m a l l Ta l k )的直接继承。永久存储的需要是促使 D B M S和
R D B M S 的出现来替代第三代语言(3 G L )/基于文件的信息系统的最基本的原因之一,也促使
O O D B M S 的产生来替代面向对象的编程语言信息系统。很有趣的是,喜爱面向对象系统的人
通常认为,面向对象系统比关系数据模型的派生物(如实体关系图的变体)提供更有力的语
义模型,并具有更高的层次。然而,与此同时,反对面向对象系统的人认为,由于它们关注
3 G L /基于文件的信息系统,它们的实现和语言要素偶尔会下降到十分低的层次(按 C / C + +指
针方式)。从本质上讲,它们采取导航的或过程化的查询,这也与前关系型系统(如基于
C O B O L 的分层和网络D B M S )十分相似,而在基于S Q L的R D B M S系统中的查询大多是描述性
的和声明的。
不能不考虑关系型的厂商(如 O r a c l e )因此考虑Oracle 8 和它的当前关系 -对象型的实现。
当用任何R D B M S厂商的产品时,为了估计它的面向对象的能力,必须考虑几件事情,如下所
示:
■ 对面向对象概念和结构的信任。
■ 面向对象到关系的映射的概念和结构。
■ 仿真、完全或混合实现。
■ 性能的降低或加强。
■ 使用现有R D B M S子系统的能力。
希望R D B M S具有面向对象的接口的一个主要的原因是,这样做面向对象应用的程序就可
以与R D B M S 中的面向对象部分直接进行通信,这与在程序代码中必须动态地处理对象 - 关系
型映射(分解和重组)相反。作为一个例子,考虑嵌入式 S Q L。这里S Q L是基于集合的语言,
必须与一个基于记录的主机 3 G L (如C )交互。这是不希望的情况,称为阻抗失配,可以通过
诸如游标的结构和诸如预编译的软件(例如 P r o * C )来进行补救。一个基于面向对象的程序语
言的应用与一个RDBMS 的交互,情况与此相似。
第12章计面向对象的特性计计117
下载
Oracle 8 特别地帮助缓解面向对象的开发和 R D B M S后端的情况,方法是提供一些强有力
的内建的面向对象能力,如下所示:
■ 关系作为数据类型。
■ 继承。
■ 集合作为数据类型,包括嵌套(容器)。
■ 用户定义(可扩展的)数据类型。
■ 改进大对象(L O B )。
和如用任何O O D B M S或对象-关系D B M S (O R D B M S )一样,使用Oracle 8 时,你能利用
面向对象模型的优点。面向对象模型是比关系型模型更高层次的抽象。换句话说,你能抽象
出事物的模型作为一个整体来比较接近地反映“真实的”世界。例如,在你的 O O D B M S 中,
可以具有一个称为 C A R 的复杂对象,它很可能是 R D B M S 中的几个表,如M A K E 、M O D E L 、
E N G I N E 、PA RT S 等等。面向对象模型与关系模型在“自然性”方面的注释是不同。我们来
打个比方:
用面向对象技术,就像你在早上醒来穿上你的衣服,在夜晚你简单地脱掉它们以供下次
再穿,十分自然。但是用关系型技术,你必须为你的衣服收集所有的纺织物,将它们缝在一
起,然后穿上;在夜晚,必须把它们分开,按次序保存它们以供下次再缝和再穿。
尽管这个比喻不完全准确,却有些道理。基本思想是,用 R D B M S进行工作时必须连结在
前一次通过规范