




已阅读5页,还剩63页未读, 继续免费阅读
(计算机应用技术专业论文)面向对象数据库开发平台的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象数据库开发平台的研究 邱晓风( 计算机应用技术) 指导教师:张文东高级工程师 摘要 面向对象数据库是o o 方法与先进的数据库技术相结合的新一代数 据库,它具有支持复杂数据类型、表达丰富语义等优点。目前面向对象 数据库系统对软硬件平台要求高、学习复杂,还未广泛应用。为了学校 的教学服务,自行设计了适合教学的小型t o o d b ( o b j e c t - o r i e n t e d d a t a b a s ef o rt e a c h i n g ) 。t o o d b 集成了关系数据库和对象数据库的理 论和技术,是在w i n d o w s 平台和a c c e s s 数据库环境下用c + + 开发的单 机版面向对象教学管理数据库。 本文研究了面向对象数据模型,包括复杂数据类型、类与类之间的 关系( 继承、组合) 等;设计t o o d b 的数据字典,实现了用十字链表 存储分类数据字典的方法;设计了t o o d b 数据定义语言和数据查询语 言并给出实例;给出查询转换算法:在前人研究的基础上给出了面向对 象数据模式转换为关系数据模式后的数据存储的b + 树方法。t o o d b 关 键技术是面向对象数据模式转换为关系数据模式,包括集合、聚合和继 承的转换等。研究结果表明,t o o d b 是一种使用方便,学生在短时间 内学会并掌握使用的面向对象数据库原型系统。 关键词:面向对象数据库,数据字典,模式转换,o d l 语言,o q l 语 言 s t u d yt h es y s t e m o fo b j e c t - o r i e n t e dd a t a b a s e q i ux i a o f e n g ( c o m p u t e ra p p l i c a t i o nt e c h n o l o g y ) d i r e c t e db ys e n i o re n g i n e e rz h a n gw e n - a l o n g a b s t r a c t o b j e c t - o r i e n t e dd a t a b a s ec o u p l e so om e t h o da n da d v a n c e dd a t a b a s e t e c h n i q u e i ti san e wg e n e r a t i o n a ld a t a b a s e i ts u p p o r t sc o m p l e xd a t at y p e a n de x p r e s s e sa b u n d a n c es e m a n t i c s ,e r e o b j e c t - o r i e n t e dd a t a b a s en e e d s a d v a n c e ds o 脚a r ea n dh 卸d w a r ea tp r e s e n t a n do b j e c t - o r i e n t e dd a t a b a s ei s n o ta p p l i e d w i d e l y i n o r d e rt o p w m o t es t u d y a n dd e v e m p m e n to f o b j e c t - o r i e n t e dd a m b a s ei no u rs c h o o l ,w ed e s i g n e dt o o d b - - - t h ee a s yo n e t oo t h e r sf o ru t o o d b i n t e g r a t e st h e o r y a n d t e c h n o l o g yo f o b j e c t - o r i e n t e dd a t a b a s ea n dr e l a t i o n a ld a t a b a s ea n dn i t r o 缸w i n d o w sa n d a c c e s sd a t a b a s eb yc 什l a n g u a g e f i r s t l y ,w es t u d i e do o d m ;o o d mi n c l u d e sc o m p l e xd a t a t y p e s 、 c o n c e p t i o n so f0 0 - - i n h e r i t 、r e l a t i o no fc l a s s ,e t c t h e n , w ed e s i g n e dd a t a d i c t i o n a r ya n di m p l e m e n t e di tw i t hg r i d m a t r i x ,d e f i n e do d la n do s q l w i t l le x a m p l e g a v eq u e r yt r a n s f o r ma r i t h m e t i c s f i n a l l y , w i t h i ni n h e r i t e d f r o mo t h e r s w eu s e db + t r e em e t h o dt os a v ed a t aw h i c ht r a n s f o r m e df r o m c l a s st ot a b l e t h ek e yt e c h n i q u eo ft o o d bi st r a n s f o r m e df r o mc l a s st o t a b l e , w h i c hi n c l u d e st r a n s f o r m a t i o n so fs e t 、a g g r e g a t i o n 、i n h e r i t a f i o n t h e s t u d ys h o w s t h a tu s i n gt o o d bi se a s i e rt ou s e ra n dc o n v e n i e n c et ot e a c h e r k e yw o r d s :o b j e c t - o r i e n t e dd a t a b a s e , d a t ad i c t i o n a r y ,s c h e m at r a n s l a t i o n , 0 d l ,o q l 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取 得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论 文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得中国 石油大学或其它教育机构的学位或证书而使用过的材料。与我一同工作 的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了 谢意。 签名:堂工d 口占年 牛月 ;日 关于论文使用授权的说明 本人完全了解中国石油大学有关保留、使用学位论文的规定,即: 学校有权保留送交论文的复印件及电子版,允许论文被查阅和借阅;学 校可以公布论文的全部或部分内容,可以采用影印、缩印或其他复制手 段保存论文。 ( 保密论文在解密后应遵守此规定) 学生签名:垒邀巫加易年 年月日 导师签名: 酝童重: 矽。年 牛月歹日 中国石油大学( 华东) 硕士论文第1 章前言 第l 章前言 1 1 课韪的提出及意义 1 1 1 课题的提出 面向对象数据库( o o d b ) 经过十多年研究和开发,出现了 o b j e c t s t o r e 、o n t o s 、g e m s t o n e 、i r e s 、0 2 、o p e no d b 、o r i o n 、 o b j e c t i v i t y d b 、u n i s q l 等许多原型系统。面向对象数据库是更能满足 高级应用要求的下一代数据库,它的优点是:具有多种数据类型并能构 造抽象数据类型能力;具有构造复杂数据结构与模式的能力;具有多种 数据操纵能力;具有模式演化能力。然而,从目前的现状看,面向对象 数据库管理系统的应用还不普及。本校对面向对象数据库教学没有形象 化教学演示系统,学生对面向对象数据库技术理解起来晦涩难懂、不易 掌握。o r a c l e 对象关系数据库管理系统较易获得,但其抽象而复杂,对 软硬件平台要求高,仅安装o r a c l e 服务器端就需要硬盘空间1 8 g 。关系 数据库系统尽管不是面向对象的,但其有坚实的理论和深厚的应用基础, 而且已被普通用户广泛接受。基于以上考虑,本文采用一种可行的开发 方式,即用面向对象的分析与设计方法,建立所需要的面向对象数据模 型,然后应用成熟的关系数据库系统存储数据,实现适合教学用的面向 对象原型系统t o o d b 。 1 1 2 课题提出的意义 ( 1 ) 对于理论研究的意义 课题定义t t o o d b 的语言规范,构建了较为合理的数据模型,建立 数据字典,给出面向对象数据库中对象的存储方法,这对面向对象数据 中国石油大学( 华东) 硕士论文第1 章前言 库系统的相关研究也具有参考价值。 ( 2 ) 对于现实的意义 目前的面向对象数据库产品由于在市场的份额很少,不易获得; o r a c l e 数据库中既有关系模型又有对象关系模型,而且较易获得,但对 于普通用户来说,学习o r a c l e 数据库仍是十分困难的。当前本校对于面 向对象数据库的教学仅限于课本,没有通过实验进行形象化的教学。本 课题实现的实例针对性强,复杂性小,可以使本校学生了解到面向对象 数据库中数据的创建、查询的过程,对本校教学将有重大意义。 1 2 国内外研究现状 面向对象数据库开发方法大致有以下几种“;第一种是扩展现有的 面向对象编程语言基础,使其具有数据库的功能。这种方法将传统的数 据库功能加入到已存在的面向对象语言中,这是产品g e m s t o n e 所采用 的方法,该产品扩展了s m a i l t a l k ,c + + 和j a v a 这三种语言。第二种是提 供可扩展的面向对象d b m s 库,这种方法也是将传统的数据库功能加入 到已存在的面向对象语言中,但是,提供类库是为了支持持久性、聚集、 数据类型、事务、并发、安全等,而不是为了扩展语言,这是产品 o n t o s ,v e r s a n t 和o b j e c t s t o r e 所采用的方法。第三种是将面向对象的数 据库语言嵌入到一般的宿主语言中。这是产品0 2 采用的方法,这种产品 提供了对于编程语言c 的嵌入式扩展。第四种是扩展己存在的数据库语 言,使其具有面向对象的功能,这种方法目前是r d b m s 和0 0 d b m s 供应商推崇的方法。产品o n t o s 和v e r s a n t 提供了o b j e c ts q l 的一个版 本。第五种是开发一个新的数据库模型数据语言。这是一个激进的方法, 一切从头开始,开发一个完整的新数据库语言和具有面向对象功能的 2 中国石油大学( 华东) 硕士论文第1 章前言 d b m s 。这是s i m 所采用的方法,它是基于语义模型的,并具有一个新的 d m l d d l 。 1 2 1 国外研究现状 ( 1 ) o m c l e 9 i 数据库管理系统 o r a c l e 9 i 综合采用上述第三种( g t 面向对象的数据库语言结构嵌入 到一般的宿主语言中) 和第四种( 扩展已存在的数据库语言,使其具有 面向对象的功能) 这两种方法来开发的数据库管理系统。o r a c l e 9 i 支持 增加了处理新的、更加复杂的数据类型和应用语义的能力。它的数据模 型用对象一关系扩展集合来支持对象。在允许对象方面有如下功能嘲: 扩展类型系统( 对象类型,具有特性、方法、参数) ;用户定义函数( p l 、 s q l 、c c + + # b 部过程) ;对象视图;客户对象存储器;对象类型翻译器; 新数据集( 嵌套表、可变数组、大对象、引用等) 。当一个应用使用到 对象时,建立对象存储器并将复杂对象放入客户端对象存储器中,并通 过数据库中的复杂对象检索提供客户端导航。o r a c l e 9 i 为用户提供的管 理和使用对象的工具是对象类型翻译器,它能将o r a c l e 9 i 的对象类型翻 译成相应的编程语言的结构和对象。o r a c l e 9 i 还提供广泛的语言绑定 a p i 。数据库内部对j a v a 提供本地支持“1 ,对象类型系统和j a v a 环境间 可以紧密集成。它还支持s o l 和c + + 对象间的映射,从而可以从c + + 应用 程序无缝地访问s o l 对象。o r a c l e 已经扩展了s q l ( d d l 和d m l ) ,并允 许用户定义他们自己的类型以及这些类型间的关系( 例如,继承、集合) 将它们作为基本或本地类型存储在数据库中( 存储在表的某列中,或存储 为表本身) ,以及查询、插入和更新它们。 o r a c l e 9 i 还提供由o r a c l es e r v e r 创建和保持的数据字典,数据 字典存储了用来管理数据库对象的所有信息,包括数据库信息。可以对 3 中国石油大学( 华东) 硕士论文第1 章前言 数据字典进行查询:当前用户自己拥有的数据对象信息( 以u s e r 开头) ; 所有可以访问到的表的信息( 以a l l 开头) ;系统管理员可以看到的系 统中所有的表的信息( 以d b a 开头) 。 ( 2 ) u n i s q l 数据库系统 u n i s q l 采用上述第四种( 扩展已存在的数据库语言,使其具有面向 对象的功能) 方法开发的数据库管理系统。u n i s q l 数据库系统在关系模 型中引进了面向对象的核心概念,如在面向对象的编程语言中用到的数 据封装、对象标识、多重继承、任意数据类型,嵌套对象等。 u n i s o l 从三方面扩充了关系模型,反映了对象的概念响。第一个扩 充反映了面向对象的基本概念个对象的值也是一个对象。即系统 允许一个元组的某一列的值是任一用户定义的表的一个元组,而不仅仅 是某个系统定义的数据类型的一个元素。第二个扩充是面向对象的封装 概念。把数据和对数据进行操作的程序结合到一起,让用户将过程附着 在表上,并使该过程对每个元组的列的值进行操作。第三个扩充是面向 对象的继承层次的概念。允许用户将数据库中所有表组织成一种层次结 构,这种表的继承性比常规的关系模型中大量独立的简单聚集有两个优 点。它允许用户创建一个新的表,该表作为一个或多个已有的子表;这 个新的表继承了已有表及其祖先表中所说明的全部列和过程。 ( 3 ) d b 2 数据库管理系统 d b 2 是采用上述第四种( 扩展已存在的数据库语言,使其具有面向 对象的功能) 方法开发的数据库管理系统。d b 2 是i b m 公司推出的数据 库数据库管理系统。d b 2 对关系型数据库进行面向对象扩展,主要表现 在以下四个方面“1 :第一扩充数据类型,用户定义类型是面向对象延伸 的特性之一。d b 2 关系型扩展模块提供了用于文本、图像、语音、视频 4 中国石油大学( 华东) 硕十论文第l 章前言 的预定义抽象数据类型,还支持多继承功能的用户定义的抽象数据类型。 第二用户定义函数提供了对象的模式,定义了它的行为和核心性质。定 义了标量函数与特殊类型一起使用,能够进行方法的创建。用户定义函 数提供了对象的封装,数据被隐藏或保护于直接操作之外,这样可以避 免对它的破坏。把用户定义的数据类型和函数组合在一起使用,能把数 据的表示和解释该数据的一组函数定义都隐藏起来,利用它们能创建函 数库,这些函数库可以是客户自行开发的,然后直接把它们集中在数据 库中。第三d b 2 关系型扩展模块提供了多种索引结构,还支持引导访问 表达式索引以及用户自定义索引结构。第四可扩展优化器,d b 2 优化器 基于规则,并有复杂的查询转换功能。 1 2 2 国内研究现状 ( 1 ) 0 0 e d b m s 工程数据库管理系统 o o e d b m s 是清华大学赵致格等人采用上述第四种( 扩展已存在的数 据库语言,使其具有面向对象的功能) 方法开发的数据库管理系统“1 。 该系统设计了面向对象数据库模式描述语言d d l ,对象操纵语言o d m l 和 查询语言o s q l 。该原型以中科院开发的扩展关系数据库管理系统 e d b m s 2 为底层,实现基于s t e p 的面向对象的工程管理系统。0 0 e d b m s , 它是在扩展关系数据库的内核基础上提供了面向对象的概念。该原型系 统说明复杂对象的存储、控制、对象查询以及对象在内存中的映象管理 等功能的实现。o o e d b m s 中的对象可分为简单对象、聚合对象和复杂对 象。简单对象即原子对象,如整数、实数、字符串等;聚合对象指集合、 数组和表:复杂对象指包含或引用了其它类型对象的对象。o o e d b m s 支 持对象的分类、继承和封装,对象按其共同的结构和行为特性分类,同 类对象有相同的结构描述和操作方法,数据库结构按类进行存储和管理。 5 中国石油大学( 华东) 硕士论文第1 章前言 ( 2 ) x d 0 0 d b 数据库管理系统 x d 0 0 d b 是西安电子科技大学陈平等人采用上述第三种( 将面向对象 的数据库语言结构嵌入到一般的宿主语言中) 和第四种( 扩展已存在的 数据库语言,使其具有面向对象的功能) 开发的x d 0 0 d b 数据库管理系统, 该系统支持关系模型和数据库的方法嘲。数据库服务器负责完成对象数 据的管理,包括对象的生成、存储、查询、修改等功能,它同时又可作为 单独的一部分,支持复杂应用中的复杂数据管理功能。在数据库服务器中, 提供了扩充的s q l 语言o s q l 。o s q l 对s q l 的扩充和修改包括以下几个 方面:用o d l 、o m l 定义的对象数据模式与对象操作;c + + 类的定义 和方法的实现体;模式信息;应用包含文件;数据库方法;虚 拟方法接口;数据库应用源程序( 嵌入y o s q l 的c + + 程序) ;数据库应 用;交互式操作请求;在具体实现过程中,充分利用w i n d o w s 和c + + 的支持,实现了对象的生存、存储、查询、修改等功能。 ( 3 ) 0 2 d b 数据库管理系统 0 2 d b 是林国璋,徐俊等人采用上述第二种( 提供可扩展的面向对 象d b m s 库) 方法开发的数据库管理系统州。0 2 d b 是建立在面向对象 的程序语言c h 类库的基础上,由一套实现数据库功能的c + + 类库和若干 数据库实用工具组成的,0 2 d b 的对象数据模型是基于集合和元组的复 杂对象模型。在这种数据模型中,提供了基本数据类型如整型、浮点型、 字符型等,以及对象构造符如集合和元组等;0 2 d b 将这些语法成分实 现成原子对象。复杂对象就是由这些最基本的原子对象递归地构造而成 的。解决方法是为每一种原子对象都实现一个具体的成员函数,用于完 成该种数据类型的持久性功能;对于复杂对象的持久性,就可以递归地 调用组成它的每一个原子对象的成员函数。 6 中国石油大学( 华东) 硕十论文第1 章前言 1 3 论文的章节安捧 本论文着重研究对象数据模型、面向对象数据库语言技术、数据字 典技术、数据存储技术。第一章介绍课题的提出及国内外研究现状;第 二章讨论了面向对象数据库的相关技术,包括面向对象数据模型和面向 对象数据模式转换为关系数据库模式;第三章对t o o d b 的设计进行详 细讨论,数据字典的设计、数据定义语言和数据查询语言的设计;第四 章对t o o d b 的实现进行详细讨论,包括数据查询转换、数据字典实现 及数据存储。第五章对全文进行总结并指出创新点。 7 中国石油大学( 华东) 硕士论文第2 章面向对象数据库相关技术 第2 章面向对象数据库相关技术 2 1 面向对象数据模型的基本概念及建模要素 2 1 1 基本概念 面向对象数据模型是用面向对象的方法建立的数据模型,它包括数 据模式、建立在模式上的操作和建立在模式上的约束。数据模式用对象 与类结构及继承与组合关系建立数据间的复杂结构关系。 类( c l a s s ) ;具有相同属性和方法的一组对象的集合,它为属于该类 的全部对象提供了统一的抽象描述。 对象( o b j e c t ) :系统中用来描述客观事物的一个实体,它是构成系统 的一个基本单位。一个对象由一组属性和对这组属性进行操作的一组方 法构成。 属性( a t t r i b u t e ) ;用来描述对象静态特征的一个数据项。 对象包含( o b j e c tc o n t a i n ) :一个( 或一些) 对象是另一个对象的组成 成分( i s - p a r t - o f 联系) 。包含其他对象的对象称为复杂对象或复合对象。 实例( i n s t a n c e ) :由类所创建的具体对象。类可视为对象的类型,实 例则视为具有此类型并且具体赋予了值( 具有具体数据和操作) 的实际对 象。 方法( m e t h o d ) :用来描述对象动态特征的一个操作序列。在对象上描 述对象行为特征的操作称为方法或成员函数,方法是实施对象操作和访 问的外部接口。 消息( m e s s a g e ) :对象之间相互作用和相互协作的一种机制。对象之 间的相互操作、调用和应答都是通过发送消息到对象的外部接口来实施 的。因此,消息就是为完成某些操作而向对象所发送的命令和命令说明。 8 中国卉油大学( 华东) 硕十论文第2 章面向对象数据库相关技术 继承( i n h e r i t a n c e ) :类构成特殊化层次( i s - a 联系) 。i s - a 联系中 子类的对象拥有其超类的对象的全部属性和方法,称做子类对超类的继 承。 多继承( m u l t i p l ei n h e r i t a n c e ) :一个类从多个超类中继承属性和方法 的能力。 多态性( p o l y m o i p m s m ) :通过继承相关的不同的类,它们的对象能够 对同一函数调用作出不同的响应,即一种函数调用形式,多种不同调用 结果。 封装( e n c a p s u l a t i o n ) :将一个实体的属性( 数据信息) 和操作( 程序代 码) 集成为一个整体而使之成为对象模型。封装提供了对象中信息的隐藏 机制,对象的数据成员对外是不可见的,只能通过对象的方法实施对象 数据的操作,增强了数据操作的安全性。 2 1 2 建模要素 对象模型的基本建模要素有以下几种“: ( 1 ) 对象和常量是基本的建模要素。只有对象具有对象标识符。 ( 2 ) 对象和常量可以归为类型,具有给定类型的所有对象和文字表现出 共同的行为和状态。类型本身也是对象,对象有时被称为它的类型的实 例。 ( 3 ) 行为用一组操作定义,操作由对象执行或者在对象上执行。操作 可能含有一系列类型化的输入输出参数,并返回一个类型化的结果。 ( 4 ) 状态用对象所携带的一组性质的值来定义。性质可能是对象的性质, 或者是对象与一个或多个对象之间的联系。通常,随着时间的推移,对 象的性质可以被改变。 ( 5 ) 对象数据管理系统用于存储对象,使他们能够被多个用户或应用 9 中国石油大学( 华东) 硕士论文第2 章面向对象数据库相关技术 程序共享。 2 2 数据类型及操作 2 2 1 数据类型 ( 1 ) 大对象 大对象,即l o b ( l a r g eo b j e c t ) ,能够存储大量的数据。由于多媒 体信息的的大量传播,网络上w e b 服务器的流行使人们需要在数据库中 存储大量的大型数据对象,如声频、视频、图像、大型文本等。 每个最大为2 g b 的大对象列可以被每个表定义,可以像操作其他数 据库对象一样操作它们,准确大小依赖于每列的定义。为了使大对象数 据在数据库中被直接管理和用s q l 进行存储和恢复,要求数据库提供存 储复杂内部状态对象的能力。对于非结构信息如图像、声音和视频,其 存储的最重要的特性之一是其绝对尺寸。 ( 2 ) 复合类型 集合类型是一种特殊的数据类型。它是对象的一个集合,其中每 个对象都有相同的数据类型。集合用来在对象模型中表示多个重复的数 据项,即在一个表中可以使用集合作为某个字段的数据类型,集合的大 小及可以存储数据项的性质由集合声明时决定,集合可以存储抽象数据 类型的数据。集合中的元素不排序,且不允许有重复的元素存在;行 类型:不同类型元素的有序集;数组类型:相同类型元素的有序集合; 列表类型:相同类型元素的有序集合,并且允许有重复的元素;包 类型:相同类型元素的无序集合,并且允许有重复的元素;字典类型 是由若干( 键,值) 二元组构成的无序序列,且不会出现重复的键。字 典类型可看成是集合类型的特例。 1 0 中国石油大学( 华东) 硕十论文第2 章面向对象数据库相关技术 ( 3 ) 抽象数据类型 抽象数据类型是由一个或多个标准的数据类型组合而成的数据类 型,它可以根据用户需要由用户自行定义新的类型。抽象数据类型可以 嵌套使用,即一个类的成员属性可以是另一个在数据库中已经定义的类。 2 2 2 数据操作 ( 1 ) 创建类:创建一个类,这个类可以有父类,也可以没父类: c r e a t ec l a s s 类名 ( 2 ) 修改类:支持动态修改类的方法和属性。 增加一个属性。若属性已经存在,提示出错:否则将属性加入类中: a d da t t r i b u t e ( 类名,变量类型,变量名) 删除一个属性。若属性不存在,则提示出错;否则将属性删除: d e l e t ea t t r i b u t e ( 类名,变量名) 增加方法。若有同名方法存在,则查看参数类型是否一致,如果一 致,则方法不能插入,如果不一致,在类中增加方法一满足对象 的多态性,若没有同名方法存在,方法直接插入类中: a d d m e t h o d ( 类名,函数返回类型,函数名,参数表) 删除方法。只能删除己经存在类的方法: d e l e t em e t h o d ( 类名,函数返回类型,函数名,参数表) ( 3 ) 创建对象:将类定义实例化,对象创建时只是一个临时的对象,直 到它和数据库中某个已存在对象的o l d 关联,或指明它需要存储: 类名对象名 ( 4 ) 把一个对象和一个o l d 关联:将数据库中该o i d 各属性的值赋给这个 对象,而且今后对这个对象操作的结果将反应到数据库上: 对象名b i n d ( o i d ) 中国石油大学( 华东) 硕士论文第2 章面向对象数据库相关技术 ( 5 ) 指明对象须要存储:为该对象分配一个o i d ,同时在数据库中保存该 对象: 对象名m a l l o c o ( 6 ) 修改对象公有属性值:在对象的外面可以对该对象的公有属性直接 进行读写操作。 ( 7 ) 在对象内部修改本对象的属性值:如果想在对象外面对该对象的私 有属性进行修改,就要调用对象的某些方法对该属性进行操作“1 。 2 3 约束 2 3 1 类模式演化 类模式演化是指类层次结构发生变化,主要包括类中内容的变化、 类间关系的改变、类结构重组。在类的演化中必须遵循一些不变式和规 则,才能确保类间语义和关系的关联。 类演化的四种不变式“”。类层次结构不变:此不变式表示整个数据 模型由唯一的类层次结构组成。名字不变:类、属性和方法名字唯一, 在类演化中保持此特性。来源不变:当一个类有多个超类,包括有相同 属性和方法时,仅继承其中一个属性和方法。全继承不变:一个类将继 承它的每个超类的全部属性和方法,除非这种继承违反了名字和来源不 变式。 。 2 3 2 类演化的十个规则 规则1 :如果一个类局部定义的属性或方法与继承来的属性或方法 发生冲突时,则选择局部定义的属性或方法,如果局部定义的新属性或 方法与类中已有属性或方法发生冲突,则舍弃新属性或方法。 规则2 :如果一个类中两个或多个超类有一个属性或方法,它有相 同的名字但有不同的来源,则选择那些冲突超类中的第一个超类的属性 中国石油大学( 华东) 硕七论文第2 章面向对象数据库相关技术 和方法。 规则3 :如果一个类中两个或多个超类包含有系统来源的属性,则 该类继承有最小定义域的属性,然而如果定义域都相同,或者一个定义 域不是其它任何定义域的一个超类,该属性从冲突超类中的第一个超类 继承而来。 规则4 :对类c 中的一个属性或方法的性质的任何改变,都不断地 传送到c 的没有重新定义这些性质的每个子类w 中。 规则5 :只有在不会给类w 造成冲突新的名字冲突的情况下,一个 属性或方法的名字的改变,或者类c 中新加入的属性和方法,才能不断 地传送给类c 的一个子类w 中。 规则6 :一个属性的定义域在继承时可以缩小,但是一旦一个类中 实例己被创建,则不论它的属性是继承的或是局部定义的,其定义域只 能扩大,而且一个类的继承属性的定义域不能大于其超类中该属性的定 义域。 规则7 :如果一个新加入的类没有指定超类,则把根类作为这个新 类的超类的默认值。 规则8 :若类a 是类b 的唯一超类,而a 又从b 的超类中去掉了, 则b 变成a 的每一个超类的一个直接子类,b 的这些新超类的排序与a 的超类的排序相同。 规则9 :若a 被增加为b 的一个超类,则a 就变成b 的最后一个超 类。 规则1 0 :删结点a 分三步,首先删除从a 到它的所有子类的边;其 次删除所有从a 的超类到a 的边:最后删除结点a 。 1 3 中国石油大学( 华东) 硕十论文第2 章面向对象数据库相关技术 2 3 3 对象完整性规则 完整性规则1 :对象标识符o l d 在对象建立时由系统自动生成,并 随对象一起插入或删除,但不能修改。该规则将一对象与一o i d 捆绑起 来,使在对象生命周期内o i d 始终作为对象一起插入或删除,但不能修 改。 完整性规则2 :每个对象由其o i d 唯一确定。该规则确保了对象的 唯一性,使一o l d 就能确定一对象。 完整性规则3 :若系统中有对象0 存在,则对象0 一定属于0 0 数据 模型中的某一对象类。该规则保证了客观世界的对象能反映到对象类构 成的数据模型上,并确定了对象在模型中的位置。 完整性规则4 :子类中任一对象的对象标识符一定能在父类中找到。 该规则反映了单继承上的约束关系,保证子类一定是父类某个对象的细 化,并继承了该父对象的全部特性,也反映了概括语义的抽象特性。 完整性规则5 :多重继承中,子类中任一对象标识符一定能在其父 类中找到。该规则保证了在多重继承的情况下,子类继承其所有父类的 特性,而不仅是某一父类的特性,从而真实的反映出多重继承的语义。 完整性规则6 :若类之间的继承为完全继承,则不仅任一子类中的 对象标识符能在其父类中找到,且其父类中任一对象标识符也能在某个 子类中找到。该规则不仅保证继承关系中父类对子类的约束关系,同时 也确保了子类对父类的约束关系。 完整性规则7 ;若类间的继承关系为互不相容关系,则父类的所有 子类间一定不含有相同的对象。该规则反映了在不相容继承关系下,子 类间彼此独立成类,互不相关的一种约束关系。 完整性规则8 :整体类中任一对象所含的部分对象的对象标识符一 1 4 中国年i 油大学( 华东) 硕十论文第2 章面向对象数据库相关技术 定能在分类的对象标识符集中找到。该规则确保了整体对象中所含的任 一部分对象必须是已存在的,防止了整体对象中含有非法的部分对象。 完整性规则9 :若聚集关联为强聚集关联,除满足规则8 外,还必 须满足组成部分对象中的任一对象标识符均能在整体类中该组成部分的 属性域中找到。即整体类中所含的组成部分的对象标识符一定与该组成 类中所含的对象标识符一一对应。该规则确保了组成部分对整体部分的 完全依赖的特性,表明整体与部分之间一种双向约束关系。 完整性规则1 0 :关联对象类中所含发生关联的对象标识符一定能在 其相应的对象类中找到。该规则确保了关联对象中的对象类中的对象一 定是发生关联的对象中对象所产生,从而保证了关联语义的正确性“”。 2 4 类与类之间的关系 关联关系表示两个类之间存在某种语义上的联系。它是一种结构关 系,规定了一种事物的对象可以与另一种事物的对象相连“”。例如,雇 员为公司工作,一个公司有很多部门,就可以认为雇员和公司、公司和 部门之间存在某种语义上的联系,用一条实线表示。 类属关系表示子类继承一个或多个父类的结构或行为。类属关系描 述了之间的“是一种”的关系,类属关系用来连接一般类和特殊类,用 来描述父类与子类的关系。子类继承父类的特性,尤其是属性和操作。 类属关系用空心三角形的实线书表示。具有与父类中操作同样名字的 操作会覆盖父类的操作,这被称为多态。 聚合关系是一种特殊的关联关系。聚合表示类之间是整体与部分的 关系,它代表了“h a s - a ”( 拥有) 关系,也即作为整体的对象拥有作为 部分的对象,可描述为由组成。聚合关系用带空心菱形头的实线 中国石油大学( 华东) 硕士论文第2 章面向对象数据库相关技术 表示。 组合关系是聚合的变种,它加入了一些重要的语义,整体与部分之 间有很强的所有关系和一致的生命周期。“整体”负责“部分”的创建 和破坏,可描述为是的一部分。组合关系用带实心菱形形头的实线 - 表示。 聚合和组合在类中将属性的值域定义为另一个类,组合是聚合的变 种,“整体”负责“部分”的创建和破坏“”。 2 5 面向对象数据模式转换为关系数据库模式 类和类之间有继承、聚合及多层继承等关系。以下类图示意了类属 和聚合的多层继承之间的关系“”,空心三角形代表继承,空心菱形代表 聚合。 图2 1 类图 1 6 中国石油大学( 华东) 硕十论文第2 章面向对象数据库相关技术 根据面向对象数据的特征,两种模型中的基本数据类型不需转换。 面向对象虽有多种复合类型,但只要实现一种转换,其它的转换类似。 在此,仅举出集合属性的转换。将对象数据模型转换为关系数据模型的 基本原则是“。”“:一是模式层,每一类对应一个关系模式,称为相应 类的主关系;二是属性层,不同类型的属性作不同的处理。类中默认的 对象标识符的属性对应为关系的一个关键字属性;类的原子属性对应为 相应关系的一个原子属性;类的继承属性将类分结构中的每一个类映射 为一张表,还要根据继承规则将父类的属性扩延到它们所有子类表中; 类的组合属性对应为相应关系的一个外关键字属性;类的集合属性对应 为一个原子属性附加一个额外的被称为子关系的关系模式,它是用来处 理集合元素的。类的方法在此广义的视为属性,它对应关系数据库管理 系统的外部函数或过程。类之间的关联关系将它们转换为关系数据模型 中相互联系的若干关系模式。 将每一个类对应为一个关系模式,类c 的默认的对象标识符属性对 应为经映射后的关系r c 的一个额外增加的原子类型属性a 2 。a 2 是 的一个关键字属性,其值是系统赋予的类c 的对象标识符。 2 5 1 类的集合扁性的转换 类的集合属性对应一个原子属性附加一个额外的被成为子关系的关 系模式,用它来处理集合元素。一个对象的集合属性的值可以是多值的, 每个集合值可看成是一个对象具有它自己的对象标识符。由于一个集合 值的元素数目可变,所以不能将一个集合映射为必须具有固定域数的元 组。解决这一问题是把每个集合元素映射为一个元组,为了能识别不同 集合的元素,一个元组不仅包含一个元素,而且包含该元素所属的对象 中国石油大学( 华东) 硕士论文第2 章面向对象数据库相关技术 标识符。因此子关系有两个属性,一个是保存o i d 的原子类型属性,另 一个是以集合元素类型作为类型的属性。( 包类型、数组类型、列表类 型和字典类型的分解方法与集合类型的分解相同) 根据上述转换规则,集合属性模式转换举例: 假设类c 有一组原子属性a 1 ,还有一组集合属性a 2 。,属性a 2 。是 以t 为元素类型的一个属性集合,模式映射如下; c ( a i ? ”,a 2 n ) 一1 l ( a 乞, a ir 。,a 2r 。) + r a 2 - c ( a 1 ra 2 - - c , a 2 r j 2 ,) 表2 - 1c 类数据结构 o l d a 1 。a 2 。 c o ) l a l l ,a 1 2 ,a j 3 a l c - o 融 a 2 c o 脚 a - l l ,a n 2 ,a n 3 ) a n 类c 分解为关系表如表2 2 所示: 2 5 2 类属( 继承) 关系的转换 将类分层结构中的每一个类映射为一张表,子类表中只记录父类关 键字;或根据继承规则将父类表的属性扩延到它们的所有子类中。例如: c i ( a 1 ,a 2 ) 一r c l ( a 乜l ,a ir - e l ,a h i ) c 2 ( a 3 ,a 4 ) a ss u b c l a s so fc i - - i l 2 ( a 2 2 ,a 1m 2 ,a 2r - c 2 ,a 3 m , 1 8 中国石油大学( 华东) 硕士论文第2 章面向对象数据库相关技术 a 4 n 。2 ) c 3 ( a 3 ,a 4 ) a ss u b c l a s so fc 1 一3 ( a z 3 ,a lr a 2 m ,a 3 h 3 , a 4 h 3 ) 表2 - 2 c 类转换为关系表i l , 、耽c a 恐 a 1 月一。a 2 月。 c 旬m l c - o d l a l c o i d 2c - o l d 2 a z c - o i d nc - o i d n a n a 2 月一。 a 2 r j 2 c c - o i d i a l i c o i d l a 1 2 c - o i d l a 1 3 c - o i d 2 n u u 。 c - o i d n a n 3 2 5 3 组合关系的转换 组合属性设置了这样一种关联,它从包含该属性的类的指向说明该 属性的类的对象,起到了类似关系数据库外关键字的作用,并且加上所 包含的类的关系表。例如c 2 类中a 4 是由c l 类组合而成,则分解如下表 2 5 :假设c l 类中有两组原子属性,c 2 类包括c 1 类,c 2 类有一组原子 属性,模式映射如下: c i ( a i r ”,a 2 d a t o m ”) 一r c i ( a z l , a 1r - c l ,a 2 h 1 ) c 2 ( a 3 字”,a 4 。c 1 2 ) 一( a 忽2 ,a 3r - c 2 ,a 罂:) 1 9 中国石油大学( 华东) 硕士论文第2 章面向对象数据库相关技术 表2 - 3 类c l 数据结构表2 - 4 类c 2 数据结构 o i d a 1 da 2 d c i o i d l a 2 1 a l l c 1 - 0 1 i ) 2 i t l 2a 2 2 c 1 0 i d n a i n - 2 h o i d a 3 。2a 4 。2 c 2 - 0 1 d 1c l 加虹) l 0 3 1 c z 旬l d 2 c l - o l d 2 3 2 c 2 - o i d n c i - o | d n 3 h 表2 - 5c 2 类转换为关系表i l c - 、如 a 。 a i r - e la 2 r _ d c i - 0 1 d 1 4 2 1 a 1 1 c 1 - 0 1 1 3 2 a 1 22 2 c l - o i d n a i n a 2 a 2 :a 3 r ma 4 怨 c 2 - c d l c l - o i d a 3 1 c 砌d 2c 1 o i d - 3 2 c 2 - o i d nc l 0 d l i t 3 当包含的类和被包含的类所含属性不等时,含有属性少的类对应的值置 为空。对于一对多的组合,每个子类映射为一个单独的表( 用一个外键 将它和它的超类的表连接起来) 。 聚合的分解同组合的分解,只是在生成对象时它们的生命周期不同。 2 5 4 类中的方法转换 方法是其值不能静态存储在数据库中只能动态执行相关程序计算得 2 0 中国石油大学( 华东) 硕七论文第2 章面向对象数据库相关技术 到的一种特殊的属性。”。方法是以宿主程序语言加嵌入的o s q l 写成的 一个函数或过程,有其定义和调用两方面的表示。在定义方面,在方法 的类定义中说明指定的方法名、参数数目、各参数的数据类型以及返回 值的类型,并且所有方法定义通常出现在另一源代码文件中,经预编译 和编译生成可执行代码文件。一些商业化的r d b m s 产品提供了支持用 户自定义函数和过程的机制,称为p s m 子程序。p s m 子程序支持以下 两项功能:( 1 ) 创建用户自定义函数并调用此函数;( 2 ) 创建用户自 定义过程并通过一个新的s q l 语句( c a l l 语句) 调用这些过程。方法 名的转换将转换后的关系p s m 子程序命名为它对应方法所属类名后跟 此方法名。转换方法的若干参数可根据从类到关系的模式转换来进行。 方法调用的一个显著特征是多态,即动态绑定。解决此问题的一个一般 方法是将方法调用映射为c a s e 语句,在c a s e 语句中列出所有捆绑的 条件和各种情况下相关的p s m 子程序的调用。 本章小结:面向对象数据库技术是学习面向对象数据库系统的基础, 本章介绍了t o o d b 用到的面向对象数据库技术,其中包括面向对象数据 模型、面向对象数据模式到关系数据模式的转换等内容。 2 1 中国石油大学( 华东) 硕士论文第3 章t 0 0 d b 设计 第3 章t o o d b 设计 3 1 t o o d b 设计步骤及实现模型 本开发平台为本校的教学做参考,命名为t o o d b 。t o o d b 的语言 开发采用c + + ,在w i n d o w s2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年高校招生面试准备手册及模拟题
- 2025年医学生考研复习策略及备考经验
- 2025年电子信息工程专业模拟题集及解析
- 2025年特岗教师招聘考试物理学科考前冲刺攻略
- 2025年会计助理求职面试预测题与技巧解析集
- 2025年信息技术员招聘模拟题物资储备仓库管理篇
- 2025年特岗教师招聘考试初中英语写作模拟题及答案详解
- 2025年销售代表面试宝典与预测题集
- 2025年工业自动化工程师中级面试准备要点与题库
- 2025年村级污水处理项目专员面试宝典与模拟题解析
- GB/T 43241-2023法庭科学一氧化二氮检验气相色谱-质谱法
- 小儿腹泻护理查房
- GB/T 42653-2023玻璃高温黏度试验方法
- 代持股权挂名法人协议书
- 2017年人教版英语五年级上册说教材
- 普通化学(第五版)浙江大学普通化学教研组P课件
- 医疗保障法律法规行政处罚司法审视及建议PPT学习培训课件
- GB/T 9999.2-2018中国标准连续出版物号第2部分:ISSN
- GB/T 6543-2008运输包装用单瓦楞纸箱和双瓦楞纸箱
- GB 19522-2004车辆驾驶人员血液、呼气酒精含量阈值与检验
- GB 10238-1998油井水泥
评论
0/150
提交评论