首页 理论教育 面向对象数据库的模式演进原则

面向对象数据库的模式演进原则

时间:2023-10-21 理论教育 版权反馈
【摘要】:面向对象数据库在模式上是类的集合。任何一个面向对象数据库模式修改操作不仅要改变有关类的定义,而且要修改相关类的所有对象,使之与修改后的类定义一致。在对面向对象数据库模式进行修改时,先建立一个数据库模式版本,保留旧版本,且不需废弃原本的数据库模式。如何实现面向对象数据库模式的演进,是面向对象数据库系统研究的一个重要方向。

面向对象数据库的模式演进原则

面向对象数据库在模式上是类的集合。根据需要的不同而进行相应变化的模式就是模式演进,包括多种类型,如删除旧的类、修改类的属性和操作等。在关系数据库中,模式的修改主要有创建和删除一个关系、在关系模式中增加或删除一个属性、在关系模式修改完整性约束条件等操作。

面向对象数据库模式的修改要比关系模式的修改复杂,主要原因有以下两点:

(1)模式改变频繁。OODB应用通常需要频繁地改变OODB数据库模式。

(2)模式修改复杂。OO模型具有很强的建模能力和丰富的语义,包括类本身的语义、类属性之间和类之间丰富的语义联系,都可能使模式修改操作复杂多样。OODB中模式演进往往是动态的。

(一)模式一致性

模式一致性是指模式自身内部不能出现矛盾和错误,由模式一致性约束来刻画。模式的演进必须保持模式一致性。

模式一致性约束可分为唯一性约束、存在性约束和子类型约束等,满足所有这些一致性约束的模式则称为是一致的。

1.唯一性约束

这一类约束条件要求名字的唯一性。例如:在同一模式中所有类的名字必须唯一;类中属性名和方法名必须唯一,包括从超类中继承的属性和方法。但模式的不同种类的成分可以同名,如属性的名字和方法可以同名。

2.存在性约束

存在约束性是指显示引用的某些成分必须存在,如不能引用一个没有在模式中定义的类。

3.子类型约束

例如,不允许有从多继承带来的任何冲突等。

(二)模式演进的操作与实现(www.xing528.com)

模式演进的操作主要有以下几类。

1.类集的改变

类集的改变包括创建新的类、删除已有类、改变已有类等。

2.已有类成分的改变

已有类成分的改变包括增加新的属性或新的操作/方法、删除已有的属性或操作、改变已有属性的名字或类型、改变某一操作的名称或操作的实现。

3.子类/超类联系的改变

子类/超类联系的改变包括增加某一新的超类、删除某一已有超类。

模式演进在操作上具有一致性,类的修改可能导致对其他类的定义产生影响。因此,OODB模式演进在实现的过程中必须具有模式一致性验证功能。

任何一个面向对象数据库模式修改操作不仅要改变有关类的定义,而且要修改相关类的所有对象,使之与修改后的类定义一致。一般采用转换的机制来实现模式演进。所谓的转换方法,是指在OO数据库中,已有的对象要根据新的模式结构进行转换,以适应新的模式。根据转换发生的时间,可以分为以下几种不同的转换方式:

(1)立即转换方式。一旦模式发生变化,就立即执行所有变换。其缺点是系统为了执行转换需要消耗一些时间。

(2)延迟转换方式。模式发生变化后不立即执行,延迟到低层数据库载入时,或者延迟到该对象被存取时才执行变换。其缺点是应用程序存取一个对象时,要把它的结构与其所属类的定义进行比较,并完成必需的修改,处理效率较低。

(3)多模式版本方式。在对面向对象数据库模式进行修改时,先建立一个数据库模式版本,保留旧版本,且不需废弃原本的数据库模式。这样一来,多个数据库模式版本是同时存在的。这有利于历史数据库的存取,但存储空间增大了,从而增加了开销。

如何实现面向对象数据库模式的演进,是面向对象数据库系统研究的一个重要方向。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈