对象关系数据库_第1页
对象关系数据库_第2页
对象关系数据库_第3页
对象关系数据库_第4页
对象关系数据库_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、对象关系数据库张志远、孟禹彤、仲逸凡、覃夏怡、郭晨、徐昊。对象数据库产生的原因1.关系数据库在处理复杂关系的时候很笨重,往往需要很多个表来表示关系。 其主要原因是因为关系模式不能很好的描述客观的事物,而且缺乏对复杂数据类型的支持。2抗阻失配(Impedance mismatch)3数据不能与行为相关联。也即是这有数据不能有方法(操作)。阻抗失配(Impedance mismatch)SQL语言不是图灵完备语言。一般来说一门语言只要有if判断,递归或循环结构以及最基本的赋值能力和四则运算就是图灵完备的了。由于对象模型和关系模型之间缺乏固有的“亲和力”从而产生面向对象程序设计向关系数据库存取数据表

2、示方式不一致的问题。由于要解决阻抗失配,从而产生了对象数据库的概念。但是,由于对象关系数据库只是在原有的关系数据库的基础上加入了面向对象的部分,所以不能完全解决抗阻失配问题。而解决只能靠对象数据库OODB简介OODB (Object Oriented Data Base)既面向对象数据库。对象关系数据库是在关系数据库的基础上加入面向对象思想而形成的。是面向对象数据库发展的一个分支。OO (Object Oriented)面向对象的思想把现实世界抽象为一系列对象及其联系的集合。面向对象程序设计方法是一种支持模块化程序设计和软件重用的编程方法,它把程序设计的主要活动限定为建立对象及其联系。一个面向

3、对象程序就是相互联系的对象集合。封装性和继承性是对象概念两个重要的特性。对象对象是一组数据结构以及在这些数据结构上的操作的程序代码封装起来的基本单位,一个对象应该包括几个部分属性集合:所有属性构成了对象数据的数据结构,属性可以是值或者值的集合也可以是对象。方法集合:方法描述了对象的行为特性。一个是方法的接口,二是方法的实现。OID(对象标识)数据库中每个对象都有一个唯一不便的标识即为OID,它具有永久性,而且是作用于整个系统的,要区别于关系数据库中得码的概念。他是独立于值的,系统全局唯一的。封装每个对象是起状态与行为的封装。也即是属性和方法(操作)。封装对象是对象外部界面与内部现实之间隔离的一

4、种抽象。外部与外界的通信只能通过消息。对象封装之后查询属性只能通过调用对象的方法。不能直接修改。类有共同属性和方法的所有对象构成一个类,而对象是一个类的实例。类的属性可以是基本类,也即基本的数据类型例如字符,整型,布尔型,也可以是类。继承继承也是面向对象思想中的一个重要概念。由于面向对象数据模型的一种类层次结构,而产生了继承,分为单继承和多重继承。对象的嵌套既对象的属性可以是对象。对象关系数据库ORDBS是OODBS的一个分支,即RDBMS的OO扩充。它以关系型的方式仅吸取OO部分功能,既支持广泛使用的SQL,又具有OO特性,适应了传统应用领域发展和新应用领域的需要。而SQL标准从1999年的

5、SQL-3添加了对对象的支持。它有如下特征:对基本类型扩充的支持 具有可扩充的数据类型、函数和操作符,并把一些数据类型及有关的函数、操作符和访问方法进行封装。对复杂对象的支持 通过一些构件把多种基本类型或用户定义类型构建成复杂对象。其中最基本的构件是组合、集合和引用。支持继承子类对超类各种特性的继承,包括数据继承和函数继承、单继承和多重继承。提供强大和通用的规则系统 RDBMS通过约束定义和触发器对规则提供支持,ORDBMS支持的规则系统更强大灵活近年国际上主要数据库产品ORACLE,INGRESS,UDB均先后推出ORDBS的功能结构模式,这可能预兆着今后数据库发展的方向。对象-关系数据库的

6、数据类型关系类型LOB大对象类型BOOLEAN类型集合ARRAYDISTINGCT类型对象类型行对象与行类型列对象与列类型ADT(抽象类型)行对象和行类型行对象是代表表中一行数据的数据类型。创建语句 CREATE ROW TYPE ();例如:CREATE ROW TYPE ROW1( first char(n), second char(n), third integer,);用行类型可以创建表中表,也即是不符合第一范式的表。所以,对象数据库是不受范式约束的。主要原因(个人认为) 由于范式的产生是参照表中各项的关系来约束的,所有关系数据库中存在着范式的约束。但是由于对象的与关系的区别,所以面

7、向对象的数据库不能被范式约束。建立基于行类型的表CREATE TABLE TNAME OF ROW_TYPE_NAME (* PRIMARY KEY);表中每行是一个对象,有OID标识。 列对象与列类型CREATE TYPE ONAME AS OBJECT( FIRST CHAR (N), SECOND CHAR(N), THIRD INTEGER,);CREAT TABLE OTABLE(ONAME1 FIRST, ONAME2 SECONDONAME3 THIRD,.);行列类型序行列类型可以创建其他的复杂对象,行具有类的特性,而列则是对象。行列式不具有封装特性的因为他们没有定义自己的方法

8、。所以数据也无法和外界隔离。在实际的应用中主要还是应用ADT,就是允许用户自定义的类型,抽象数据类型。ADT抽象数据类型,见数据结构。用户可以自己定义的类型。建立方法: CREATE TYPE ( 属性, 方法 );ADT的特点(1)ADT的属性定义和行类型的属性定义类同。(2)在创建ADT的语句中,通过用户定义的函数比较对象的值。如果不定义该类型的比较函数,则采用默认的等于和小于函数来比较对象的大小。(3)ADT的行为通过方法methods、函数function实现。(4)SQL3要求抽象数据类型是封装的,而行类型则不要求封装。(5)ADT有3个通用的系统内置函数,构造函数(Construc

9、tion Function)、观察函数(Observer function)和删除函数(Mutation Function)。(6)支持继承。对象到关系的映射(ORM)1属性类型映射成域属性类型映射成数据库中的域。2属性映射成字段类的属性映射至关系数据库中0个或多个字段。3类映射成表类直接或间接映射成表。ADT方法的实现参照类型SQL3提供了一种特殊的类型:参照类型,也称为引用类型,简称REF类型。因为类型直接可能具有相互参照的联系,因此引入了一个REF类型的概念:REFREF类型总是和某个特定的类型相联系。它的值是OID。OID是系统生成的,不能修改。继承类型ORDBMS应该支持继承性,一般

10、是单继承性。NOT FINAL表示不是类层次结构中最后的叶节点,FINAL则表示该类型是类层次结构的叶节点。既决定了可不可以被继承。子表和超表简单来说就是表与表之间的继承。操作时是对表和他的所有子表进行操作。添加ONLY可以实现对单独表的操作。进行映射后的表对象对象属性属性1属性属性2属性属性3OID1OID2OID3OID4整个表为类Primary key再次介绍OID针对于对象,需要能够唯一识别它们的标识符。在关系数据库中,对应的概念称之为键(Key);在面向对象的技术中,称之为OID(Object ID)。OID在对象模型中的典型实现是作为完整的对象,而在关系模型中,则作为整数来实现,或

11、者对于较大的应用中,以若干整数来实现。关系数据库中实现继承关系数据库中实现继承在关系数据库中,一个关键问题是表主键的唯一性策略的选取。适当的方案能优化继承、组合及对象之间关系的实现。考虑类的继承问题。在关系数据库中保存对象时,基本上问题归结于“如何在数据库中组织被继承的属性?”该问题的不同解决方案会影响到整个设计。关系数据库中实现继承的方法关系数据库中实现继承的方法可划分为三类: 1. 将整个类层次映射为单个数据库表将整个类层次映射为单个数据库表。2. 每个具体子类映射成单个数据库表。每个具体子类映射成单个数据库表。3. 每个类均映射为数据库表。每个类均映射为数据库表。1. 将整个类层次映射为

12、单个数据将整个类层次映射为单个数据库表。库表。类层次的所有类映射为单个的数据库表,表中保存所有类(基类、子类)的属性。优点: 实现简单。 支持多态对象角色发生变化,或存在多重角色时。 报表操作实现简单:表中包含了所有信息。缺点: 增加类层次中的耦合。类层次中任何类的属性的增加都会导致表的变更;某个子类属性的修改会影响到整个层次结构,而不仅仅是该子类。 浪费了大量的数据库空间。 可能需要指明具体的角色。2每个具体子类映射成单个数据库每个具体子类映射成单个数据库表。表。数据库表包括自身的属性和继承的属性,每个具体的子类包含各自的OID。抽象的基类不参与映射。优点: 报表操作实现简单:表中包含了具体

13、子类的所有信息。缺点: 类的修改会导致相对应的表及其子类所对应表的更改。 角色的更改会造成ID的重新赋值(因为不同子类的ID可能重复)。 难以在支持多重角色时,保持数据的完整性。3. 每个类均映射为数据库表。每个类均映射为数据库表。(子表与超表)(子表与超表)为每一个类创建数据库表,表中包含特定于该类的属性和OID。优点: 与面向对象的概念的一致性最好。对多态的支持最好,对于对象所可能充当的角色仅需要在相应的表中保存记录。 易于修改基类和增加新的类。缺点: 数据库中存在大量的表。 访问数据的时间较长。 对报表的支持较差,除非定义视图。关系映射(参照类型)不仅仅是对象需要被映射至数据库,对象之间的关系也需要映射至数据库。对象之间的关系可分为:继承(Inheritance),关联(association),聚集(aggregation),组合(composition)。要有效地映射关系,必须理解它们之间的不同点,如何实现一般的关系以及如何实现特定的多对多关系。但是由于对象之间的关系接触最多的是继承,以讲解,其他的关系主要讲以下三点。关系映射(续)关系数据库之间的关系实现主要靠外键。主要是三种一对一一对多多对多一对一引

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论