剖析数据库特性:滞后联编和对象嵌套

2008-02-23 07:43:41来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

面向对象数据库系统支持面向对象数据模型,简称OO模型。也就是说,一个面向对象数据库系统是个持久的、可共享的对象库的存储和管理者;而一个对象库是由一个OO模型所定义的对象的集合体。

面向对象数据库系统现在尚缺少关于OO模型的统一的规范说明,OO模型缺少一个统一的严格的定义,但是有关OO模型的许多和新概念已取得了共识。

1、OO模型

一个OO模型是用面向对象观点来描述现实世界实体的逻辑组织、对象间限制、联系等的模型。一系列面向对象核心概念构成了OO模型的基础。

OO模型的核心概念主要有:

(1) 对象和对象标识:现实世界的任一实体都被统一地模型化为一个对象,每个对象有一个惟一的标识,称为对象标识(OID)。OID和关系数据库中码的概念,连同部分系统中支持的记录标识、元组标识有本质的区别。OID识单独于值、系统全局惟一的。对象通常和实际的表识始终保持不变。如一个对象的部分属性、方法可能会发生变化,但对象标是不会改变。OID是区分两个不同的对象的标准。常用OID有以下几种:

值标识:用值来表示标识。如关系数据库忠实永远组的码值区分元组。

名标识:用一个名字来标识。如在一个作用域内程式变量一般使用的就是名标识。

内标识:是建立在数据模型或程式设计和严重的不需要用户给出的标示。例如,面向对象数据库系统使用的就是内标识。

(2)封装:每一个对象是其状态和行为的封装,其中状态是该对象一系列属性值的集合,行为是在对象状态上操作的集合,操作也称为方法。封装是OO模型的一个关键概念,封装是对象的外部界面和内部实现之间实行隔离的抽象,外部和对象的通信是通过“消息”实现的。

封装将对象的实现和对象应用相互隔离,允许对操作的实现算法和数据结构进行修改而不应相应用接口;不必修改使用他们的应用,这有利于提高数据单独性。封装还隐藏了数据结构和程式代码等细节,增强了应用程式的可读性。

查询或使用对象属性值必须通过调用方法,如在VB中,要将一个文本框的文本内容存储到一个字符串变量中,能够使用下面的语句:

以下是引用片段:

myStr=txtTextBox1.text

其中,“.”被称为访问符,通过他能够访问文本框对象txtTextBox1的 text属性。

(3)类:共享同样的属性和方法集的任何对象构成了一个对象类(CLASS),一个对象是某一类的一个实例。类的概念在面向对象数据库中是个基本概念,我们把属性、方法相似的对象集合称为类,而把每一个对象称为所属类的一个实例。

类的概念类似于关系模式,类的属性类似于关系模式中的属性;对下类似于源组的概念,类的一个实例对象类似于关系中的一个元组。类本身也可看作一个对象,称为类对象。

(4) 类层次:在一个面向对象数据库模式中,能够定义一个磊(C1)的子类(C2),类C1称为类C2的超类;子类还能够再定义子类(C3)。这样,面向对象数据库模式的一组类构成一个有限的层次结构,称为类层次。在每个类的最顶部通常被称为基类。 对一个类来说,他能够有多个超类,也能够继承类层次中其直接或间接超类的属性和方法。

(5)消息:对象是封装的,对象和外部的通信一般通过显式的消息传递。即消息从外部传送给对象,存取和调用对象中的属性和方法;在内部执行所需要的操作,操作的结果仍以消息的形式返回。

(6)继承:在OO模型中常用的两种基称:单继承和多重继承。若一个子类只能继承一个超类的特性,这种继承称为单继承;若一个子类能继承多个超类的特性,这种继承称为多重继承。例如“旅行用小汽车”既是小汽车又是旅行车,他继承了小汽车和旅行车两个超类的任何属性、方法和消息,因此他属于多重继承。

继承性是建模的有力工具,他同时提供了对现实世界简明而精确的描述和信息重用机制。子类能够继承超类的特性,能够避免许多重复定义,还能够定义自己特别的属性、方法和消息。假如在定义自己特别的属性、方法、消息时和继承下来的超类的属性、方法和消息发生冲突时,通常由系统解决,在不同的系统中使用不同的冲突解决方法,因此便产生了不同的继承语义。例如对于子类和超类之间的同名冲突,一般是以子类定义的为准,即子类的定义取代或替代由超类继承而来的定义;对于子类的多个直接超类之间的同名冲突,有的系统是在子类中规定超类的优先次序,首先继承优先级最高的超类的定义,有的系统则指定继承其中某一超类的定义。

2、持久性

不同对象的标识的持久性程度是不同的。若标识能在程式或查询的执行期间保持不变,则称该标识具备程式内持久性。若标识在从一个程式的执行到另一个程式的执行期间保持不变,则称该标识具备程式间持久性。若标识不但在程式执行过程中而且在对数据的重组重构过程中一直保持不变,则称该标识具备永久持久性。例如,面向对象数据库中对象标识具备永久持久性,而SQL和严重的关系名不具备永久持久性,因为数据重构可能修改关系名。

对象标识具备永久持久性含义是:一个对象一经产生,系统就给他赋予一个在全系统中唯一的对象标识符,指导他被删除。对象标识是由系统统一分配的,用户不能对对象标识符进行修改。对象标识是稳定的,他不会因为对象中某个值的改变而改变。

3、面向对象数据库

面向对象数据库模式是类的集合。面向对象的数据模型提供了一种类层次结构。在面向对象数据库模式中,一组类能够形成一个类层次。一个面向对象数据库可能有多个类层次。在一个类层次中,一个类继承其任何超类的全部属性、方法和消息。

面向对象的数据库系统在逻辑上和物理上从面向记录上升为面向对象、面向可具备复杂结构的一个逻辑整体。允许用自然的方法,并结合数据抽象机制在结构和行为上对复杂对象建立模型,从而大幅度提高管理效率,降低用户使用复杂性。

4、面向对象数据库的特性

面向对象数据库的特性有主要表现在滞后联编和对象的嵌套两方面。

1) 滞后联编

在OO模型中,当子类定义方法和继承下来的超类的方法产生同名冲突,即子类只继承了超类中操作的名称,子类自己实现操作算法,并有自己的数据结构和程式代码。这样,同一个操作名就和不同的实现方法、不同的参数相联系。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: MySQL中文化解析

下一篇: 用户认证功能的SQUID代理服务器