面向对象数据库在模式上是类的集合。根据需要的不同而进行相应变化的模式就是模式演进,包括多种类型,如删除旧的类、修改类的属性和操作等。在关系数据库中,模式的修改主要有创建和删除一个关系、在关系模式中增加或删除一个属性、在关系模式修改完整性约束条件等操作。
面向对象数据库模式的修改要比关系模式的修改复杂,主要原因有以下两点:
(1)模式改变频繁。OODB应用通常需要频繁地改变OODB数据库模式。
(2)模式修改复杂。OO模型具有很强的建模能力和丰富的语义,包括类本身的语义、类属性之间和类之间丰富的语义联系,都可能使模式修改操作复杂多样。OODB中模式演进往往是动态的。
(一)模式一致性
模式一致性是指模式自身内部不能出现矛盾和错误,由模式一致性约束来刻画。模式的演进必须保持模式一致性。
模式一致性约束可分为唯一性约束、存在性约束和子类型约束等,满足所有这些一致性约束的模式则称为是一致的。
1.唯一性约束
这一类约束条件要求名字的唯一性。例如:在同一模式中所有类的名字必须唯一;类中属性名和方法名必须唯一,包括从超类中继承的属性和方法。但模式的不同种类的成分可以同名,如属性的名字和方法可以同名。
2.存在性约束
存在约束性是指显示引用的某些成分必须存在,如不能引用一个没有在模式中定义的类。
3.子类型约束
例如,不允许有从多继承带来的任何冲突等。
(二)模式演进的操作与实现(www.xing528.com)
模式演进的操作主要有以下几类。
1.类集的改变
类集的改变包括创建新的类、删除已有类、改变已有类等。
2.已有类成分的改变
已有类成分的改变包括增加新的属性或新的操作/方法、删除已有的属性或操作、改变已有属性的名字或类型、改变某一操作的名称或操作的实现。
3.子类/超类联系的改变
子类/超类联系的改变包括增加某一新的超类、删除某一已有超类。
模式演进在操作上具有一致性,类的修改可能导致对其他类的定义产生影响。因此,OODB模式演进在实现的过程中必须具有模式一致性验证功能。
任何一个面向对象数据库模式修改操作不仅要改变有关类的定义,而且要修改相关类的所有对象,使之与修改后的类定义一致。一般采用转换的机制来实现模式演进。所谓的转换方法,是指在OO数据库中,已有的对象要根据新的模式结构进行转换,以适应新的模式。根据转换发生的时间,可以分为以下几种不同的转换方式:
(1)立即转换方式。一旦模式发生变化,就立即执行所有变换。其缺点是系统为了执行转换需要消耗一些时间。
(2)延迟转换方式。模式发生变化后不立即执行,延迟到低层数据库载入时,或者延迟到该对象被存取时才执行变换。其缺点是应用程序存取一个对象时,要把它的结构与其所属类的定义进行比较,并完成必需的修改,处理效率较低。
(3)多模式版本方式。在对面向对象数据库模式进行修改时,先建立一个数据库模式版本,保留旧版本,且不需废弃原本的数据库模式。这样一来,多个数据库模式版本是同时存在的。这有利于历史数据库的存取,但存储空间增大了,从而增加了开销。
如何实现面向对象数据库模式的演进,是面向对象数据库系统研究的一个重要方向。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。