




已阅读5页,还剩66页未读, 继续免费阅读
(管理科学与工程专业论文)动态ORM技术研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
, i l f 1 i - y r e s e a r c ha n di m p l e m e n t a t i o no fd y n a m i co r m at h e s i ss u b m i t t e dt o d a l i a nm a r i t i m eu n i v e r s i t y i np a r t i a lf u l f i l l m e n to ft h er e q u i r e m e n t sf o r t h ed e g r e eo f m a s t e ro fe n g i n e e r i n g b y z h a ol u ( m a n a g e m e n ts c i e n c ea n de n g i n e e r i n g ) t h e s i ss u p e r v i s o r :p r o f e s s o rc h e ny a n m a y 2 0 1 1 - 大连海事大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:本论文是在导师的指导下,独立进行研究工作所取得的成果, 撰写成硕士学位论文 :麴查q 趔遮莶硒究皇塞丑:。除论文中已经注明引用的 内容外,对论文的研究做出重要贡献的个人和集体,均己在文中以明确方式标明。 本论文中不包含任何未加明确注明的其他个人或集体己经公开发表或未公开发表 的成果。本声明的法律责任由本人承担。 学位论文作者签名:型滋 学位论文版权使用授权书 本学位论文作者及指导教师完全了解大连海事大学有关保留、使用研究生学 位论文的规定,即:大连海事大学有权保留并向国家有关部门或机构送交学位论 文的复印件和电子版,允许论文被查阅和借阅。本人授权大连海事大学可以将本 学位论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或扫 描等复制手段保存和汇编学位论文。同意将本学位论文收录到中国优秀博硕士 学位论文全文数据库( 中国学术期刊( 光盘版) 电子杂志社) 、中国学位论 文全文数据库( 中国科学技术信息研究所) 等数据库中,并以电子出版物形式 出版发行和提供信息服务。保密的论文在解密后遵守此规定。 本学位论文属于:保密口在年解密后适用本授权书。 不保密电i 请在以上方框内打“ ) 论文作者签名:赶隍导师签名:彩氨垂 日期:乙l 7 年6 月2 - 7 日 r 中文摘要 摘要 软件开发系统中存在着两种主要的数据模型:对象模型和关系模型,它们的 特点截然不同。对象模型可以完美的描述现实世界中的事物的属性和关系,可以 很好的建立和描述复杂的软件系统。但是,与之相匹配的面向对象数据库的发展 还达不到主流数据库的标准,因此,大部分应用程序还是选择了使用关系数据库。 但是对象模型和关系模型对数据的描述是不同的,对象包括属性、行为,对象之 间有各种关系,关系数据库包括表,表之间的关系通过外键、主键来表述,在二 者之间存在着明显的模式不匹配问题。 解决这一问题的常见方法是持久化机制,它是近年来计算机领域发展最为迅 速的几种技术之一,是开发领域研究的热点,在计算机领域中得到了广泛的应用, o r m 技术是持久化机制的核心。 o r m 在对象模型和关系模型之间建立相应的映射,使持久化对象可以转储在 关系数据库中。但是近年来随着业务功能的不断增加,这种传统的o r m 技术虽然 可以实现对象的持久化工作,但对数据库的格式依赖程度较高,不能满足业务应 用系统越来越高的要求,因此有必要对这些不足之处进行改进。 本文在深入研究o r m 以及持久层理论基础上,结合近年来的实际项目经验, 提出了动态o r m 的技术设计思想;重点对传统的0 1 w 技术存在的不足之处进行 了改进;对动态o r m 实现的关键设计思想进行了介绍和研究;最后对动态o r m 技术的实现进行了深入的介绍。 关键词:o r h ;关系模型;对象模型;持久层 , 英文摘要 a b s t r a ct t h e r ea r et w om a j o rd a t am o d e l si nt h es o f t w a r ed e v e l o p m e n ts y s t e m :o b j e c t m o d e la n dr e l a t i o n a lm o d e l ,w h i c hh a v ed i f f e r e n tf e a t u r e s o b j e c tm o d e lc a nd e s c r i b e t h i n g s a t t r i b u t e sa n dr e l a t i o n s h i p si nt h er e a lw o r l d ,e s t a b l i s ha n dd e s c r i b et h ec o m p l e x s o f t w a r es y s t e m sp e r f e c t l y h o w e v e r , t h ed e v e l o p m e n to fo b j e c t o r i e n t e dd a t a b a s e w h i c hm a t c h i n gt h e0 b j e c tm o d e lh a sn o ty e tr e a c h e dt h em a i n s t r e a ms t a n d a r d , t h e r e f o r e ,m o s ta p p l i c a t i o n ss e l e c t e dr e l a t i o n a ld a t a b a s e s b u tt h eo b j e c tm o d e la n d r e l a t i o n a lm o d e la r ed i f f e r e n ti nt h ed e s c r i p t i o no ft h ed a t a :o b j e c t si n c l u d i n ga t t r i b u t e s , b e h a v i o ra n dr e l a t i o n s h i p sb e t w e e no b j e c t s ;r e l a t i o n a ld a t a b a s e s ,i n c l u d i n gt a b l e sa n d r e l a t i o n s h i p sb e t w e e nt h et a b l e se x p r e s s i n gb yf o r e i g nk e y s ,p r i m a r yk e y s t h e r ei sa c l e a rm i s m a t c hp r o b l e mb e t w e e nt h et w op a t t e r n ac o m l t l o nw a yt os o l v et h i sp r o b l e mi st h ep e r s i s t e n c em e c h a n i s m ,i ti so n eo ft h e f a s t e s tg r o w i n gt e c h n o l o g i e si nr e c e n ty e a r si nt h ec o m p u t e rf i e l d i ti sa l s oah o t r e s e a r c hf i e l dw h i c hh a sb e e nw i d e l ya p p l i e di i lt h ec o m p u t e rf i e l d ,o r mt e c h n o l o g yi s t h ec o r eo ft h ep e r s i s t e n tm e c h a n i s m o r ms e tu pac o r r e s p o n d i n gm a pb e t w e e nt h eo b j e c tm o d e la n dt h er e l a t i o n a l m o d e l s ot h a tp e r s i s t e n to b j e c t sc a nd u m pi 1 1ar e l a t i o n a ld a t a b a s e w i t hb u s i n e s s f u n c t i o n sg r o w i n gr a p i d l yi 1 1r e c e n ty e a r s ,t h i st r a d i t i o n a lo r m t e c h n o l o g y , w h i c hc a n a l s oa c h i e v e dt h eo b j e c tp e r s i s t e n tw o r l ( ,b u ti t d e p e n d so nt h eh i g h e rd e g r e eo f d a t a b a s et h a tc a nn o tm e e tt h ei n c r e a s i n gd e m a n d so fb u s i n e s sa p p l i c a t i o ns y s t e m s oi t i sn e c e s s a r yt oi m p r o v et h e s es h o r t c o m i n g s t h r o u g ht h eb a s eo fs t u d yo fo r m a n dp e r s i s t e n c el a y e rt h et h e o r y , c o m b i n e dw i t h t h ea c t u a lp r o j e c te x p e r i e n c ei nr e c e n ty e a r s ,w ep r o p o s e dt h ed y n a m i co r m d e s i g n m e t h o d ;f o c u so nt h ei m p r o v e m e n t so fe x i s t i n g s h o r t c o m i n g so ft r a d i t i o n a lo r m t e c h n o l o g y ;a n dt h e ni n t r o d u c ea n dr e s e a r c ht h ek e yo fd y n a m i co r m ;f i n a l l y , i n t r o d u c et h er e a l i z a t i o no fd y n a m i co r m t e c h n o l o g yd e e p l y k e yw o r d s :o r m ;r e l a t i o n a lm o d e l ;o b j e c tm o d e l ;p e r s i s t e n c el a y e r 目录 目录 第l 章绪论。l 1 1 课题来源1 1 2 研究背景。l 1 3 国内外发展现状3 1 4 本文研究的主要内容。5 第2 章数据库理论概述7 2 1 概述7 2 2 对象数据库。7 2 2 1 对象数据库的定义7 2 2 2 对象数据库使用范围7 2 2 3 面向对象数据库的基本特征8 2 3 关系数据库9 2 3 1 基本概念9 2 3 2 数据操作10 2 4 关系数据库和对象数据库的优缺点对比1 l 2 4 1 关系数据库系统的优点1 1 2 4 2 关系数据库系统的缺点。1 1 2 4 3 面向对象数据库系统的优点1 2 2 4 4 面向对象数据库系统的缺点1 2 第3 章关系模型与对象模型分析1 4 3 1 关系模型1 4 3 1 1 关系数据结构1 4 3 1 2 关系操作集合17 3 1 3 关系模型的完整性约束1 8 3 1 4 关系模型的优势和局限性1 9 3 2 对象模型2 0 3 2 1 一般概念2 1 3 3 2 对象模型的特征2 3 3 2 3 对象模型的优势和局限性2 4 第4 章o r m 具体实现2 5 4 1 原理2 5 4 2 产生2 5 目录 4 2 1 概述2 5 4 2 2o r m 作用2 6 4 3 实现机制2 7 4 4 映射2 7 4 4 1 映射对象2 7 4 4 2 关系映射3 2 4 5 产品介绍和对比3 5 4 6o r m 框架的优缺点3 5 4 7 动态o r m 实现3 6 4 7 1 动态o r 映射层次结构3 6 4 7 2 动态o r 映射的数据库结构3 7 4 7 3 动态对象数据表创建3 8 4 7 4 动态o r 映射4 1 4 7 5 复合型o r m 优点4 9 4 8 技术应用的背景介绍5 0 4 9 系统应用实现展现5 1 第5 章总结与展望5 4 参考文献5 5 致谢5 9 , 动态o r m 技术研究与实现 第1 章绪论 1 1 课题来源 本课题来源于“云南航务海事综合业务应用系统 。 1 2 研究背景 数据是所有软件系统和应用程序存在的基础,起到了至关重要的作用。几乎 所有的信息管理系统( m a n a g e m e n ti n f o r m a t i o ns y s t e m ,m i s ) 里都有数量庞大的数 据,数据主要包括文件、图片、模型等多种类型,这些数据通常都具备以下特征: 数据量庞大;结构复杂;数据间存在着普遍和复杂的关系;数据需要长时间保存 和维护;数据需要进行版本管理等掣。在企业环境中,大中型企业管理信息系统 要实现对这些数据的合理并且有效的管理,这是一个重要的研究课题。在对这些 数据进行管理前首先需要对这些信息建立数据模型,前提条件是要对这些数据的 应用环境有一个完整并且明确的认识。数据模型是数据库结构的识别语言,它是 描述数据、数据之间关系、数据的完整性约束等一系列概念工具的集合。数据模 型在整个数据库系统起到了至关重要的作用【2 】。 数据模型既和软件系统、应用系统以及数据相关,又和数据库管理系统 ( d a t a b a s em a n a g e m e n ts y s t e m ,d b m s ) 有紧密的关系:它可以用于描述数据库系 统的实现方式,也可用于描述应用环境的数据,目前数据库系统的数据模型主要 有四种,分别是网状模型、层次模型、关系模型和面向对象数据库模型3 1 ,目前应 用最广的是关系模型。在软件行业发展的早期,开发人员编程时一般都是采用面 向过程的方式对问题进行求解,这方式的核心是对具体要解决的问题建立计算 机能够识别的逻辑,执行相应的程序进行求解。它要求数据结构和算法的核心都 是面向过程问题求解。这种方式可以精确的描述一个具体问题并进行完备的求解, 但是不能从这类问题中总结出问题的公共内容,当出现了类似的问题时,需要新 建一个类似的但是并不完全相同的求解过程,但是其中一部分求解过程可能和其 他过程有很多同样的逻辑,这就给编程人员带来了工作量巨大的重复劳动,不仅 仅在编程时,也包括在后期对这些程序的维护上,并且这种方法不能明确表述多 个相互关联的求解过程,在这种情况下面向对象技术应运而生。网状模型、层次 第1 章绪论 模型、关系模型这三种常用数据模型对待面向过程问题的求解游刃有余,但是当 软件系统中存在着大量的包含各种复杂逻辑和复杂关联的事物对象时,这三种方 式已经难以应对,同时面向对象技术也在日益成熟和发展,人们更多的考虑用面 向对象技术解决来这类问题【4 】。 面向对象方法使用对象来理解和分析问题,将问题抽象为对象和对象之间的 关系,设计对象并通过对象组成软件系统,试图找出事物之间复杂的联系,从而 找出解决问题的方法。这种方法可以有效的消除问题空间和解空间结构上的不一 致带来的问题,因为它的核心思想就是认为问题空间和解空间都是由对象组成的。 简单来说,面向对象就是从事情的本身抽象出行为,从更高的层面去解决问题。 面向对象可以帮助人们更好的认识世界,可以对数量巨大、关系复杂的数据进行 描述。 当今企业级软件系统的开发基本上都以面向对象方法作为软件开发的主要方 式。面向对象技术被广泛应用,对业务数据进行分析之后,对相应的数据进行建 模,在当前环境下面向对象的数据建模方法众多,它们提升了数据管理的弹性。 在对业务数据建立面向对象的数据模型后,就要实现对这些数据模型的存储,软 件行业发展早期通过文件系统实现,当前主要是通过数据库系统进行存储。早期 环境采用文件系统存储数据存在很多不足,例如数据的共享性低、冗余高并且不 易扩充;数据的独立性低;数据的管理与版本控制都存在问题等等,因此数据的 持久化存储一般采用数据库系统。在当前的开发环境下,存在着关系型数据库和 面向对象型数据库,从理论上讲,面向对象数据库提供了一种完美的对象存储实 现方式,它可以完美的表述对象和对象之间的复杂关联。同时数据库中的对象和 应用系统的对象之间具有相同的属性和运算逻辑,它们之间不需要任何转换;甚 至于,系统多个对象之间的组合和聚集关系在数据库中都能完美展现。而关系数 据库采取与面向对象数据库完全不同的存储策略,它用严谨的以数学为基础的关 系模型作为依赖,关系数据库理论已经发展成熟,比面向对象数据库有更加悠久 的历史【5 1 。此外,关系数据库在市场上占据绝对优势,被大多数公司所使用,而面 向对象数据库还处在起步阶段,远未发展成熟,所以本文还是采用关系数据库来 存储数据,这样就存在着对象模型向关系模型的数据处理方式的转化,即需要进 动态0 r m 技术研究与实现 行对象关系映射( o b j e c t - r e l a t i o nm a p p i n g ,o r m ) 。 1 3 国内外发展现状 对象模型和关系模型存在着显著的区别。对象模型的设计思想是通过对象的 数据和行为构建应用程序,而关系模型则主要针对数据的存储。对象以及对象之 间的关系是从现实世界中的实体抽象出来的,它们在计算机中的存在形式是对象 模型。对象模型它是基于软件工程的原理,而关系模型主要基于数学原理,并且 现实世界中的对象之间存在着抽象、封装、继承、聚合和多态等多种联系,这些 联系在关系数据库中无法表述,这就意味着数据在对象模型和关系模型间无法相 容,这种问题称之为“阻抗不匹配”,而这两种模型又是当今软件环境中至关重要 的,缺一不可,因此就要在二者之间建立“对象关系映射 ,核心思想是将对象以 及对象之间的关系映射至关系数据库【6 】。 在面向对象的应用系统中使用关系数据库存储和读取对象数据的方式可以分 为如下三种: 一、业务逻辑类直接访问关系数据库。这是比较常见的方式( 如图1 1 所示) 。 这种方式将结构化查询语句( s t r u c t u r eq u e r yl a n g u a g e s q l ) 存放到每个业务逻 辑类中,这些类独自负责对相应的数据进行操作。每个类的独立性较高,单个类 结构的改变并不会影响其他类,但是重复性工作较多,每个类都要有一定程度的 相同数据库操作代码模块。因此这种方式比较适合应用在小型系统中或者是业务 逻辑和s q l 语句较少的系统的应用中,可以快速进行系统构建。优点是可以暂时 加快系统的开发速度;缺点是业务逻辑类与关系数据库进行直接关联,不利于系 统的扩展和重用,长久来看会减缓系统开发速度。并且这种方式需要所有的业务 逻辑类都要去了解底层关系数据库的结构和具体的数据表形式,一旦数据库的模 式发生任何微小的变化,应用程序所有涉及到的数据库操作编码都要修改,开发 人员工作量巨大,这样的应用程序很难维护和扩展,根本无法重用【7 1 。 第1 章绪论 图1 1 在商业逻辑类中加入s q l 操作 f i g1 1s q li nb u s i n e s sc l a s s e s 二、通过专门的数据访问类( 例如d a o 等) 对关系数据库进行操作,如图2 所示。它比第一种方式改进的是针对不同的业务逻辑需要将类中的数据操作编码 提取出来放入一个或多个特定的数据类中,并没有实际意义上的改变。它的数据 库操作优越之处在于:将业务逻辑类耦合到关系数据库的数据库操作编码集中到 数据访问类中进行集中管理,在一定程度上增强了系统的可扩展性,但本质上也 是直接将具体应用系统中的业务逻辑类进行持久化操作【8 】。 图1 2 从商业逻辑类通过s q l 操作类连接数据库 f i g1 2b u s i n e sc l a s s e sc o n n e c td a t a b a s et h r o u g hs q lc l a s s e s 三、通过一个对象数据持久层( o b j e c tp e r s i s t e n c el a y e r , o p l ) 实现。数据持 久层与应用系统其他模块相互独立,提供了一种持久化框架,包含了对象关系映 射操作。它与前两种方式最主要的不同点是完全屏蔽了业务逻辑层与底层关系数 据库层之间直接的耦合,切断了二者之间的直接关联。数据库中数据结构的任何 改变都不会影响应用程序,只需要修改持久层框架中的对象关系映射,除非业务 动态0 r l d 技术研究与实现 功能本身的逻辑发生改变。这种机制有利于系统分工,程序员可以各司其职,负 责应用程序的开发人员不用了解具体数据库的结构,也不需要了解对象在数据库 中具体的存储方式,只需要对对象的数据操作即可。这种方式有利于大型系统、 大型应用程序的开发。这种方式要做的额外工作是要在应用系统的对象和底层数 据之间进行转化。持久层存储对象时需通过对象数据进过映射才能确定存放的位 置,读取对象时也需要先通过映射确定对象数据的存放位置,然后才能读取数据 并构造对象,所以会对系统产生一定程度的存取速率上的影响【9 1 。此外,这种对象 持久层可以独立于数据库管理系统( d a t a b a s em a n a g e m e n ts y s t e m ,d b m s ) 。 图1 3 持久层方式 f i g1 3p e r s i s t e n c el a y e r 1 4 本文研究的主要内容 本文正是着眼于上述第三种通过持久层建立对象模型和关系数据库之间的映 射,通过收集与o r m 以及持久层相关的技术资料,查阅这些技术的基本理论,例 如相关文献,并且对国内外比较流行的o r m 产品进行对比研究:对它们进行性能、 优缺点的对比,了解了它们的架构,总结了o r m 实现的原理,并对它们的不足之 处进行分析,最终提出并设计了动态对象关系映射思想,进行了o r m 技术的持久 层整体框架设计并进行持久层的设计与开发,最终完成了航务海事综合业务系统 的开发、用户数据整合和系统集成运行工作。 本系统所使用的是s u n 公司提出的j 2 e e ( j a v a2p l a t f o i i t ie n t e r p r i s ee d i t i o n ) 平台,他是用于开发、部署、运行和管理j a v a 应用程序的综合平台。j 2 e e 典型的 四层结构如下图所示。 第1 章绪论 客户层 i w e b 层 i业务逻辑层i e i s 层 ili 浏览器 w e b 服务器e j b 容器 ,、 、l 一一 f 纯h t m l j s p 到旧 【j ; 一h 数 n 据 、r j a v a 库 。 a p p l e t j j s p e j b 、l 桌面系统 卜 h s e r v l e t ny e j b 一 j a v a 应用 n r 、一一 h数 兵e 设备 ny 据 卜 j 2 e e 平台 j 2 e e 平台 库 j 2 e e 客户端 ny i l 一 图1 4j 2 e e 层次结构 f i g 1 4h i e r a r c h i c a ls t r u c t u r eo fj 2 e e 系统采用了w s h ( w e b w o r k + s p r i n g + h i b e m a t e ) 开源架构,主要分为表示层、 应用服务层、持久化层、数据源层4 个层次,系统总体结构图如下图所示: 图1 5 系统结构图 f i g 1 5d i a g r a mo fs y s t e ms 仃u c t i l r 6 动态0 r m 技术研究与实现 第2 章数据库理论概述 2 1 概述 数据库是每个企业、组织或部门所涉及的数据的综合,它不仅要反映数据本 身的内容,而且要反映数据之间的联系。在当前的开发环境下,主要存在着两种 形式的数据库:关系型数据库和面向对象型数据库,关系型数据库理论较为成熟, 被大多数公司所使用,占据着大部分的市场份额,而对象型数据库还处在起步阶 段,尚未发展成剥1 们。 2 2 对象数据库 客观世界存在着各种实体对象,而传统的关系数据库是用二维表存储实体的 某些信息,这样就存在着一些不可避免的耦合情况发生,并且它对于某些复杂实 体和这些实体之间的关系存储力不从心,这种情况下,对象数据库就应运而生, 因为它跟人们通常认识的现实世界的实体对象相吻合。 2 2 1 对象数据库的定义 面向对象数据库,简称o o d b ( o b j e c t o r i e n t e dd a t a b a s e ) ,它是一种以对象 形式存储信息的数据库。对象数据库的数据库管理系统被称为o d b m s ( o b j e c t - o r i e n t e dd a t a b a s em a n a g e m e n ts y s t e m ) 。它采用面向对象的数据模型对现 实世界进行描述,使用了面向对象的基本概念,如类,继承性与封装性等。面向 对象数据库具有以下基本特点:安全性和事务管理、并发控制、可恢复性、持续 性、完整性、查询处理等,而这些特点是传统数据库也具有的,同时面向对象数 据库又有自己的独特之处,如数据抽象、可封闭性、可继承性、对象标识、多版 本性及智能性等。而这些特点是传统数据库所不具备的。面向对象数据库是由若 干数量的对象组合而成,这些对象通过传递消息来进行他们之间的连接,每个对 象在生命周期内都是独一无二的,它们由属性和方法组成。对象的所有属性构成 对象的状态。对象可以进行嵌套,对象的属性可以是另外的一个对象或者是对象 集合【l l 】。 2 2 2 对象数据库使用范围 使用对象数据库技术一般是出于两种原因: 第2 章数据库理论概述 ( 1 ) 关系数据库处理复杂数据时效率低,因为一个实体的属性跟其他实体的 属性之间可能会出现耦合。 ( 2 ) 软件系统操作的数据通常都是用面向对象的编程语言如f o x p r o ,j a v a , c 语言编写的,而那些将实体的属性数据转换为数据库系统数据的代码很冗繁,并 且在执行时也会有转换的误差【12 1 。 2 2 3 面向对象数据库的基本特征 ( 1 ) 具有一般的数据库管理系统的功能: 面向对象数据库本身就是一个数据库管理系统,因此它具有数据库管理系统 的功能: 持久性,能够实现保存数据,完成数据的持久化功能; 并发性,系统支持多个数据库用户对数据的并发操作; 故障恢复,当数据库运行发生障碍时,可以把数据库系统恢复到之前正确 状态; 查询功能。可以对数据库系统所包含的数据进行查询,同时应具备对数据 进行建立索引,提供视图的功能。 ( 2 ) 支持面向对象的数据模型: 作为面向对象的数据库,它必须要支持面向对象的数据模型,具备面向对象 的特征。面向对象数据库要支持前文所提到的面向对象模型的所有概念:如对象、 对象标识符、方法等。与此同时它也要能够支持面向对象模型的一些重要的特性, 如封装、多态、继承,能够与程序设计语言结合起来实现计算的完备性【1 3 】。 ( 3 ) 扩充功能: 除了具备上述的两个基本特征外,还应该具备一些可扩充的功能,主要包括 以下三个方面【1 4 】: 类管理。面向对象数据库将类作为管理的实体。它包括类以及类层次结构 的定义、变化等。 对象管理。要完成对由类新建产生的实例对象的操作和管理,包括对这些 对象的增删改查等功能。 对象控制。包括完整性约束、安全性、事务处理、故障恢复等传统d b m s - 动态0 p o d 技术研究与实现 具有的功能;另外还需要包括继承机制的处理,对象结构和方法的重用、版本控 制等新的功能。 对象数据库将面向对象技术应用到数据库管理系统中,使数据库管理系统能 够支持面向对象的数据模型,这对于提高数据库系统模拟现实世界的能力、扩大 数据库应用领域具有重要意义;同时能够提高应用系统的开发效率,在增强应用 系统界面的友好性、系统的可伸缩性与可扩充性等方面具有重要意义。 2 3 关系数据库 关系数据库:是建立在关系数据库模型基础上的数据库,借助于集合代数等 概念和方法来处理数据库中的数据。e e c o d d 在1 9 7 0 年提出了关系数据库的概念、 理论和方法,奠定了关系数据库的理论基础【1 5 】。 2 3 1 基本概念 ( 1 ) 表: 表是以行和列的二维表的形式组织起来的数据的集合。一个数据库可以包括 一个或多个表。例如,本系统中包含tec a ra p p r o v ef o r m 、 t ec a ra p p r o v el i s t 、tec o m m o nl i s t 等表。表的列表示特定类型的 信息,如派车单号。表的每行代表了每组表单的部分信息,如出差的起止日期、 出差地点、火车费、住宿额等等。在关系型数据库中的每个表表示一个关系,一 个关系数据库中可以存在多个表。 ( 2 ) 关系: 关系以二维表格的形式存在,每一行代表一个元组,对应一个实体。 关系数据库中关系的类型分类方法很多,根据关系双方所含对象的多少进行 划分,可以划分成3 种基本的关系类型包括一对一、一对多、多对多。一对一关 系表示关系双方的两个对象是相互对应的。在一对多关系里,一个表中的一行与 另一表中的多行具有相互关联的关系。在多对多的关系中,表中的多行与另一个 表中的多行具有相互关联的关系【1 6 1 。 ( 3 ) 关系模式: 关系模式是一个关系的属性名序列。一个元组表示的是它所属关系模式的一 个值,一个关系模式可以包含任意多个值。如果给一个关系命名刚通常用字母r 第2 章数据库理论概述 表示) ,且其属性的一般形式为a 1 ,a 2 ,a n ,则关系模式通常可写成:r ( a 1 , a 2 ,a n ) 。关系数据库的逻辑结构是所包含的关系模式的集合。 ( 4 ) 关系数据库: 在一个给定的应用领域中,所有实体及实体之间联系的关系的集合构成一个 关系数据库。 ( 5 ) 视图: 视图是从一个或多个实际表中获得的,这些表的数据存放在数据库中。那些 用于产生视图的表叫做该视图的基表。一个视图也可以从另一个视图中产生。 视图的特点: 视图是虚表,数据库中只存在视图的定义,并没有存储对应的数据,数据 还是存储在数据表中。 视图打开的时候才从基表中获取相应数据,呈现给用户。 视图的作用:视图可以分割掉数据表中对于用户来说并不关心的某些数据, 从而使用户将注意力集中到重点数据列,简化了数据浏览工作【1 7 】。 数据库索引,是d b m s 中进行排序的数据结构,可以方便对数据表中的数据 快速查询、更新。 2 3 2 数据操作 关系数据库的操作分为数据查询和数据操作,数据查询通过获取用户的请求 并从数据库中读取相应的数据,包括选择、投影、连接等操作。选择操作是从关系 数据表中找出满足给定条件的元组的操作,用于建立一个包含所需要的数据列的 新表,但是只包含那些满足一定特殊条件的数据行。投影操作是从数据表中指定 若干个属性组成新的数据表的操作,可以指定一个或多个列,因此形成的表是只 包括所需要的某些列的子集。连接操作将若干个关系并成一个关系模式,这些表 之间的连接是通过表之间的共有属性列实现的,从这些关系表中获取到需要的信 息。数据操作包括对数据的增加、删除、修改【1 8 】。 动态o r m 技术研究与实现 2 4 关系数据库和对象数据库的优缺点对比 2 4 1 关系数据库系统的优点 ( 1 ) 灵活性:从当前应用程序的使用情况看,用户对关系数据库的操作非常 灵活,通过在数据库关系管理系统产品中使用标准查询语言s q l ,用户可以毫不 费力的实现从一个数据库中取出一部分数据存储到另外一个数据库系统中。 ( 2 ) 创建数据库的简易性:只要是掌握一些基础的s q l 语句,例如c r e a t e 、 d e l e t e 、d r o p 语句等,就可以轻松的创建由一个或多个二维表组成的关系数据库。 ( 3 ) 结构简单:关系数据库的数据库设计和规范化过程容易理解。关系数据 库由结构简单的元组组成,可以很轻松的实现对相同的数据通过不同视图展现的 功能。由于关系数据库强有力的、多方面的功能,已经被许多软件公司采纳使用1 9 】。 ( 4 ) 数据独立性高t 有助于开发具有较高数据独立性的应用程序。关系表达 式的概念容易理解,操作方式简单,并且有一套较为成熟的关系理论支持数据分 析方法。 2 4 2 关系数据库系统的缺点 ( 1 ) 不能面向应用t 关系数据库将元组作为最基本的存储单元,不能很好的 面向应用。 ( 2 ) 关系数据库不能以自然的方式表达实体之间的联系:实体之间的联系是 数据模型的重要描述内容,也是判断数据模型是否适用的重要体现。关系数据库 所表达的实体之间的联系隐含在数据表的属性列中,这种方式不易于用户直观的 了解到系统全局的逻辑结构。 ( 3 ) 语义表达能力差:不能用一张数据表表达复杂对象的语义信息,不能应 用在数据类型多或者包含复杂对象的应用范围。 ( 4 ) 关系数据库支持的数据类型过于简单:它必须要满足第一范式的要求, 只能支持简单的数据类型,如整型、字符型等,不支持复杂的数据类型。对于复 杂的数据类型来说,只能通过另外的数据分解工作来实现,给系统增加了额外的 负担。而且只通过这些简单的数据类型并不能完全展示现实世界复杂多样的数据 和它们之间的关系【2 0 1 。 ( 5 ) 复杂查询功能差:可以通过结构化查询语言对多个表建立连接,从而实 第2 章数据库理论概述 现在多个表中提取信息。在实际的软件开发应用中,存在着大量的数据表,要实 现复杂查询必须处理大量的键值联系并且建立大量的连接运算,这就一方面需要 软件开发人员对结构化查询语言非常熟悉,另一方面当系统出现结构变动时需对 这些查询语句进行重写,给系统维护带来了阻碍。 ( 6 ) 扩展性差:在软件系统随着业务需求进行不断频繁改变的情况下,再加 上关系数据库和程序语言表述的数据类型存在不一致,使得关系数据库在环境转 换时需要进行新的代码开发。 2 4 3 面向对象数据库系统的优点 ( 1 ) 能真实地表达客观世界:面向对象方法可以将现实世界中的结构复杂的 事物抽象成明确的对象,并且这些对象具有事物本身的属性和行为,便于人们理 解。采用类层次式的结构进行组织,将类作为基本单元用继承与组合的结构方式 组成的图结构形式,这种结构可以形象直观的传递丰富的语义,可以直接有效的 反映现实世界【2 1 1 。 ( 2 ) 可维护性好:与关系数据库不同,当对象的结构发生改变时,系统开发 人员可以在尽可能少的对代码进行修改的情况下修改数据库结构。 ( 3 ) 解决“阻抗不匹配 问题。解决了关系数据库运行中程序语言与d b m s 对数据类型支持的不一致问题。 ( 4 ) 节省存储空间。以对象方式进行数据存储,与程序员使用的面向对象方 法对数据的表述一致,避免了以往在转换数据模型时产生不必要的数据冗余,节 省了存储空间【2 2 1 。 2 4 4 面向对象数据库系统的缺点 ( 1 ) 缺乏系统完善的理论支持。目前还没有一套完善的理论系统来支持对象 数据库管理系统的产品。 ( 2 ) 技术尚未成熟。目前使用对象数据库进行系统开发的公司较少,对象数 据库管理系统尚未进行标准化,多数公司还是选择采用关系数据库来进行系统开 啦 及o ( 3 ) 性能问题有待探究。面向对象系统开发的有关原理才刚开始为人所知, 因此面向对象数据库系统的可靠性、性能等问题仍需要继续研究。 动态o r m 技术研究与实现 本章介绍了两种主要的数据库,面向对象数据库和面向关系数据库,分别介 绍了这两种数据库的基本概念,对这两种数据库进行了优缺点分析,另外从我们 所参与项目系统自身的角度来看,本文就摒弃了使用面向对象数据库的想法,还 是倾向于使用关系型数据库。 第3 章关系模型与对象模型分析 第3 章关系模型与对象模型分析 经过前一章对基于关系数据库的对象持久层的阐述,我们已经了解到持久层 的实现主要包括对象关系映射以及对象在持久化机制中的存取两个方面,涉及到 对象模型、关系模型以及对象关系映射。对象关系映射理论,指的就是对象模型 和关系模型之间的映射。下面对这两种模型进行各自介绍。 3 1 关系模型 关系模型是关系数据库实现的基础和核心,关系数据库是基于关系模型的数 据库。关系模型认为所有现实事物的数据都可以表示为数学上的关系,关系模型 是实体关系模型之后的又一大模型,它也是现在的数据库中运用最广泛的模型, 著名的数据库o r a c l e ,d b 2 都是基于关系模型的。关系模型以严格的数学概念 作为基础,它的概念简单清晰,非过程化程度高,数据具有独立性,更利于数据 管理和数据检索。关系模型主要由关系数据结构、关系操作集合和关系完整性约 束三部分组成。关系模型的特点是:概念结构单一、规范化、用二维表格的形式 表示关系【2 3 1 。 3 1 1 关系数据结构 关系是描述现实世界的实体以及实体之间各种关系的基本手段,从用户角度 看,关系模型中数据在数据表中存储的逻辑结构是一张二维表,由行和列组成, 并且行和列有原子性,不能再细分出其他的行和列。关系可以分成三种类:基本 表( 基表) 、查询表和视图。基本表是数据库中实际存在的表,是现实中数据在数据 表中的逻辑表示。查询表是用来显示查询结果的表。视图表是由基本表或者从其 它视图导出的表,是虚表,在数据库中不存在视图的数据【2 4 1 。 关系模型建立在集合论基础上,下面对关系数据结构中的一些基本项进行说 明: ( 1 ) 关系:一个关系对应通常说的数据库中的一张基本表;关系是描述对象 的基本手段。关系包括定义在它所有属性域上的笛卡儿积的子集,用元组的形式 表示。它表示一种描述,定义了存储的数据的意义,但是一般情况下关系所表达 出的意义并不明确。比如:u s e r : i d ,n a m e ,p a s s w o r d ,a d d r e s s ,e m a i l ) ,标识了一个 动态0 r m 技术研究与实现 用户,其姓名为n a n l e ,性别为s e x ,密码是p a s s w o r d ,家庭地址a d d r e s s ,电子信 箱为e m a i l 。关系数据库由表组成,是表的集合,并且要求每个表的名字不能重复。 ( 2 ) 元组:数据库中基本表的一行就是一个元组;一个元组可以表示一个实 体或实体之间的联系。如果元组的每个属性值都相同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业智能与员工数据应用能力的提升
- 企业内部数字化转型的成功要素分析
- 软考网络管理员考试考试心得分享试题及答案
- 酒店前台合作协议
- 食堂营销推广协议
- 大数据与智能分析在健康教育中的运用
- 高考生物一轮复习(全国版) 第1单元 第1课时 走近细胞
- 伤口小组护理标准化建设
- 商业环境变化下的企业数字化转型战略
- 重庆新型纺织面料项目可行性研究报告
- 科学青岛版五年级下册(2022年新编)21 蜡烛的燃烧 课件
- 抗菌药物临床应用指导原则(2023年版)
- 基因奥秘智能型水润抗衰深层治疗操作流程
- 大学生创业计划书word文档(三篇)
- 土工织物防护施工
- 生产性服务业集聚对城市产业结构优化的影响共3篇
- 施工单位考察记录表
- YY/T 1244-2014体外诊断试剂用纯化水
- GB/T 26192-2010双向拉伸聚丙烯可涂覆合成纸薄膜
- GB/T 2546.1-2006塑料聚丙烯(PP)模塑和挤出材料第1部分:命名系统和分类基础
- GB/T 17702-2021电力电子电容器
评论
0/150
提交评论