(计算机应用技术专业论文)基于net的对象关系映射技术的研究与应用.pdf_第1页
(计算机应用技术专业论文)基于net的对象关系映射技术的研究与应用.pdf_第2页
(计算机应用技术专业论文)基于net的对象关系映射技术的研究与应用.pdf_第3页
(计算机应用技术专业论文)基于net的对象关系映射技术的研究与应用.pdf_第4页
(计算机应用技术专业论文)基于net的对象关系映射技术的研究与应用.pdf_第5页
已阅读5页,还剩64页未读 继续免费阅读

(计算机应用技术专业论文)基于net的对象关系映射技术的研究与应用.pdf.pdf 免费下载

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

文档简介

摘要 几乎所有企业应用软件的丌发都涉及数据的存取、更新等操作。目前的解决 方案大多采用关系数据库存储数据,并采用面向对象的方法为企业应用领域建 模。但是对象模型和关系模型之问的矛盾使得我们需要花费大量时问和精力将数 据在这两个模型之间转换。为了解决这个问题,较为有效的方法是在多层企业应 用中构建基于对象关系映射( o b j e c t r e l a t i o n a lm a p p i n g ) 技术的持久层。 本文重点研究r 基于对象关系映射技术的轻量级持久层框架,对框架中的 关键问题给出了解决方案,并以此为基础给出了持久层框架在实际项目中的实 现。本文 要的工作包括: 】在分析了对象模型、关系模型以及对象关系映射理论的基础上,提出了 一种基于对象关系映射技术的轻量级的持久层框架,并给出了此框架的设计。 框架针对、 前n e t 平台下的持久层在中小型企业应用中存在的技术复杂度高、 架构庞大、难以学习、应用等小足,在满足应用需求的前提下,提供了更为方便 的使用方式,简化了映射机制,提高了系统效率,降低了持久层的耦合度。 2 详细分析了持久层框架设计中的关键问题,并给出了相应的解决方案。 框架采用了单实例的对象代理来实现数据访问,有效地提高了连接操作的效率: 设计了号门的类层次用来实现基于条件的多对象的处理;加入了对s q l 语句和 存储过程的支持以满足性能需求:对不同数据库产品进行了封装以隔离数据库差 异;提供灵活的事务处理机制以应对不同的业务需求并运用时问戳解决并发问 题;采用游标、代理和缓存映像等技术对系统性能作了优化;使用了x m l 文件 表达类与数据库的映射,便j 一修改与维护。 3 按照面向对象的软件工程思想,采用u m l 统建模语言和c # 语言,在 镇江市水业总公司工程项目管理信息系统中实现了此持久层框架,并给出了系统 的费用管理模块通过持久层与数据库交互的示例,在实践中证明了持久层框架的 易用性与实用性。 关键词:对象关系映射,关系数据库,持久层框架,n e t 框架 a b s t r a c t a l m o s ta l lt h es o f t w a r e d e v e l o p m e n to fe n t e r p r i s ea p p l i c a t i o n si n v o l v e s o p e r a t i o n so td a t aa c c e s sa n du p d a t e m o s lp r e s e n ts o l u t i o n su s er e l a t i o n a ld a t a b a s e s t op r e s e r v ed a t aa n du s eo b j e c t o r i e n t e dm e t h o df o re n t e r p r i s ea p p l i c a t i o n sd o m a i n m o d e l i n g b u li tt a k e su sm u c ht i m ea n d e n e r g y t ot r a n s f o r md a t ab e t w e e n o b j e c t o r i e n t e dm o d e ja n dr e l a t i o n a lm o d e l ,b e c a u s eo ft h ec o n t r a d i c t i o nb e t w e e n t h e m i no r d e rt os e t t l et h a tp r o b l e m i ti sm o r ee f f e c t i v et oc o n s t r u c tap e r s i s t e n c e l a y e rb a s e do no b j e c t r e l a t i o n a lm a p p i n gi nn - t i e re n t e r p r i s ea p p l i c a t i o n s t h i s p a p e r r e s e a r c h e s l i g h t w e i g h tp e r s i s t e n c el a y e r f r a m e w o r kb a s e do n o b j e c t r e l a t i o n a lm a p p i n g ,p r o v i d e ss o l u t i o n sf o rk e yp r o b l e m sa n di m p l e m e n t st h e p e r s i s t e n c el a y e rf r a m e w o r ki np r o e c tb a s e do nt h a t t h em a j o rw o r ko ft h i sp a p e r i n c l u d e s : 1 h a v i n ga n a l y z e dt h et h e o r e t i c so fo b j e c tm o d e l 、r e l a t i o n a lm o d e la n d o b j e c t r e l a t i o n a lm a p p i n g ,i tp r o p o s e sal i g h t w e i g h ta r c h i t e c t u r eo fp e r s i s t e n c el a y e r f r a m e w o r kb a s e do no b j e c t r e l a t i o n a lm a p p i n g ,a n dp r o v i d e st h ed e s i g no fi t i n v i e wo ft h ed e f i c i e n c yo fc u r r e n tp e r s i s t e n c e l a y e rf o ra p p l i c a t i o n so fs i n a i la n d m e d i u m - s i z e de n t e r p r i s e si n n e t p l a t f b r r nl i k ec o m p l e x i t yi nt e c h n i q u e 、b u l k i n e s si n a r c h i t e c t u r e 、i n c o n v e n i e n c ei ns t u d ya n du s e i tp r o v i d e sam o r ec o n v e n i e n tm a n n e rt o u s e ,s i m p l i f i e st h em e c h a n i s mo fm a p p i n g ,e n h a n c e st h ee f f i c i e n c yo fs y s t e m ,r e d u c e s t h ec o u p l i n go fp e r s i s t e n c el a y e r 2 i t a n a l y z e st h ek e yp r o b l e m si nd e s i g no fp e r s i s t e n c el a y e ra n dp r o v i d e s c o r r e s p o n d i n gs o l u t i o n s t h ef m r n e w o r ka d o p t so b j e c tb r o k e ri ns i n g l e t o np a t t e r nt o i m p l e m e n td a t aa c c e s s ,e f f e c t i v e l ye n h a n c e st h ee f f i c i e n c yo l c o n n e c t i o n ;d e s i g n sa s p e c i a l l y c l a s s h i e r a r c h yt oi m p l e m e n tm u l t i o b j e c t sp r o c e s s i n ga c c o r d i n gt o c o n d i t i o n s ;p r o v i d e ss u p p o r t s t o s q la n d s t o r e p r o c e d u r e s f o r p e r f o r m a n c e ; e n c a p s u l a t e sd i f f e r e n td a t a b a s e st oi s o l a t et h ed i l y e r e n c e so ft h e m ;p r o v i d e sam o r e f l e x i b l e m a n a g e m e n to ft r a n s a c t i o n f o rd 饵鼍r e n t r e q u i r e m e n ta n dt i m e s t a m pf o r c o n c u r r e n tp r o b l e m s ;a d o p t sc u r s o r 、p r o x ya n dc a c h ei m a g et oo p t i m i z e s y s t e m p e r f o r m a n c e ;u s e sx m l f i l e st om a pc l a s s e sa n dd a t a b a s e sf o rt h ec o n v e n i e n c eo f m o d i f i c a t i o na n dm a i n t e n a n c e 3a c c o r d i n gt ot h et h e o r yo f o b j e c t o r i e n t e ds o f t w a r ee n g i n e e r i n g ,i ti m p l e m e n t s t h ep e r s i s t e n c el a y e rf r a m e w o r ki np r o j e e lm a n a g e m e n ts y s t e mo fz h e n j i a n gw a t e r i n d u s t r yp a r e n tc o m p a n yu s i n gu m i 。a n dc 群a n dt a k e se x p e n s e sm a n a g e m e n t m o d u l e ,w h i c hc o m m u n i c a t e sw i t hr e l a t i o n a ld a t a b a s eb yp e r s i s t e n c el a y e r ,f o r e x a m p l e t op r o v ei t su s a b i l i t ya n dp r a c t i c a b i l i t y k e yw o r d s :o b j e c t r e l a t i o n a lm a p p i n g ,r e l a t i o n a ld a t a b a s e ,p e r s i s t e n c el a y e r f r a m e w o r k ,n erf r a n l e w o r k 学位论文版权使用授权书 y - 。1 0 1 3 9 7 二 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同 意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许 论文被查阅和借阅。本人授权江苏大学可以将本学位论文的全部内容或 部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制 手段保存和汇编本学位论文。 本学位论文属于 保密口,在年解密后适用本授权书。 不保密 学位论文作者签名:恶曲。;f :孽、囱 指导教师签名 硼6 年5 月乙日 二月侣 独创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立 进行研究工作所取得的成果。除文中已注明引用的内容以外,本论文不 包含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究 做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意 识到本声明的法律结果由本人承担。 学位论文作者签名:弓q ,椭、f 窜 日期:加6 年6 月2 - - 日 江前人学硕 学位论文 1 1 课题的背景 第一章绪论 当今的企业级应用领域必然会涉及到多种数据( 文本、超文本、图形、图像、 声音等) 的显示、操纵、存储以及对这些数据进行处理的业务流程。对数据的管 理一直是企业应用中重要的研究课题之。 数据管理首先要弄清这些数据的应用领域信息,也就是对这些信息进行建 模。传统的层次型、网状型、关系型这三种数据模型早已力不从心,而面向对象 的模型被普遍认为是最台适的,因为它很好地抽象了真实世界问题域,对现实数 据实现了易于理解的自然的描述。 对于已经建立面向对象模型的数据,可以选择不同的方式实现数据的持久化 ( 存储) 。数据持久化既可以直接通过文件系统实现,也可以通过数据库实现。 由于文件系统存在的很多弊端,诸如数据共享性低、冗余度高和不易扩充,数据 独立性低以及数据的管理与控制问题等,在实际应用当中数据的持久化多数通过 数据库系统实现。 应用领域的数据具备面向对象的特征,因而采用面向对象的数据库来持久化 领域数据是很自然的事情。但是可靠性、性能以及移植成本上的问题决定了关 系数据库在很长一段时间内还将被广泛运用。 以关系数据库来存储对象数据需要复杂的转换机制【2 】,这是南于面向对象设 计和关系型数据库设计存在很大的不同,对象模型和关系模型之间存在“阻抗不 匹配”3 1 的现象。对象模型基于软件工程的原理,包括封装、关联、聚合、继承、 多态等理论,而关系模型基于数学原理,主要针对数据的存储,“阻抗不匹配” 就成为了它们的主要矛盾l ”。我们希望通过面向对象的设计方式来完成业务流 程,并将对象保存下来。当我们的存贮介质采用关系型数据库,并将对象保存到 关系型数据库的时候,矛盾也就出现了。这也是我们要研究对象关系映射嘲【q f 7 l 网 f o b j e c t r e l a t i o n a lm a p p i n g ) 的主要原因:架起对象和关系型数据库之间的桥粱1 9 j 。 对象关系映射是对象模型与关系模型之间进行转换的方法【l o 】,主要解决对象层 次的映射、对象与关系的映射以及对象的持久化问题。在此我们需要将面向对象 模型映射到关系模型,如此一来,我们就可以在领域建模过程中使用对象模型, 而在存储真实数据时采用成熟的关系数据库,并且保护应用开发者不受底层变化 的影响】,隔离应用与持久化机制之间的模型冲突。 江掂人学硕f 二学位论文 1 2 课题的研究现状 在面向对象的应用系统中使用关系数据库存储和读取对象的方式宏观上可 分为如下三种: 1 在业务逻辑类( d o m a i nc l a s s ) 中直接访问关系数据库。这是常见的方式, 但效果却最不理想。这种方式将s q l 语句硬编码到业务逻辑类的实现中,优点 是可以快速构建出系统的原型,也可以应用于规模较小的系统当中;缺点是业务 逻辑类直接耦合到关系数据库上,需要所有的业务逻辑类了解底层关系数据库的 模式,不利j i 二系统的维护和扩展。另外这种方式直接针对具体的类使用关系数据 库存储和读取对象数据,因此重用性也很低。 目 目目 s q l _ - 图1 1 业务逻辑类直接访问关系数据库 2 通过专门的数据类( d a t ac l a s s ) 访问关系数据库。对于每一个业务逻辑类, 都有一个与之对应的数据类,它实现对应的业务逻辑对象的存储和读取工作。这 种方式也只适宜于构造较小的系统。它比方式一优越之处是:把耦合到关系数据 库的s q l 语句集中到数据类中处理,而不是分散于业务逻辑类中。这种方式也 是直接针对具体应用系统中的业务逻辑类进行持久化操作,同样难以被其他应用 系统重用。 目一目 s q l 目目目目 阁1 2 通过专门的数据类访问关系数据库 3 通过 个面向对象的持久层实现对象关系映射。所有业务逻辑类的对象 数据与对应的关系数据库中的数据通过一个面向对象的持久层实现相互映射。这 个持久层通常独立于系统的其他模块,虽然它也町以实现在系统的内部。与上两 种方式对比,持久层的设计完全屏蔽了业务逻辑类与底层关系数据库之间的直接 江苏人学颤卜学位论史 关联,二j 者z i b j 没有直接的耦合关系。这个持久层应陔提供一个比较通用的持久 化对象的机制,并不绑定在特定的业务逻辑类上,在其它的应用系统中可以重用 这个持久层,而且可以支持不同的关系数据库管理系统,不需要绑定在特定的关 系数据库上。在当前技术条件下,对象关系映射技术是达到上述目的的最佳方 案之一。 目一甄 目目一 图l - 3 通过面向对象的持久层实现对象关系映射 对象关系映射完成面向对象数据模型与关系模型的相互映射,参与映射的 关系模型就是e f c o d d 博士提出的关系模型1 1 2 】1 1 3 1 ,它被目前所有的关系数据库 所支持。面向对象数据模型以o d m g 的对象模型1 1 4j 为标准。o d m g 标准目前也 得到了大多数面向对象数据库厂商的支持。尽管面向对象数据库的o d m g 标准 和实现在过去几r 年里逐渐成熟,关系数据库管理系统仍然被广泛的运用并目也 没有明显的迹象表明未来会发生显著的变化l l ”。 对象关系映射的基本思想是用面向对象模型解决数据表达的问题,同时用 关系模型成熟的理论实现数据库底层功能。这一思路的特点是两种数据模型各司 其职,发挥各自的优势,从而达到既能表达和处理复杂的数据,又能在数据库实 现上采用成熟技术的目的。对于对象关系映射的实现方式,目前既有对传统的 关系数据库进行扩充、在数据库内部实现映射,也有在应用系统内部实现的映射, 包括基于关系数据库实现一个独立的持久层提供的对象关系映射。 许多著名的数据库厂商对传统的关系数据库进行r 扩充,提供了一个更加丰 富的、具有面向对象特征的类型系统,并且对查询语言进行扩充以处理新的类型 ,如o r a c l e t ”i 系列以及i b md b 2 1 ”i 系列的产品。在这种情况下,数据库要随 时负责两种数据模型之间的转换,无论是在数据定义过程还是在数据操纵过程 中,数据都将穿越这两种数据模型【旧i 。因为转换中的实现机制并没有对外公开, 所以无法具体描述以及扩充运用。 除了在数据库内部实现的对象关系映射,许多应用系统也使用关系数据库 存储、读取对象数据,并在应用系统中实现对象关系映射。 对象关系映射技术的巨大优越性使它很快成为面向对象开发中流行的开发 模式。在j a v a 社区中,有很多优秀的产品,如:h i b e r n a t e 2 0 1 、j d o f 2 ”、i b a t i s l 2 “、 江苏大学蛳l “学位论文 o j b 2 引、t o p l i n k l 2 4 1 等等一系列的开源或商业的框架给了j a v a 爱好者很多的选择。 在这个方面,n e t 平台虽然起步比较晚,但是相关的讨论也逐渐彼人们注意,陆 续也出现了一些各有特色的对象关系映射框架,诸如:n h i b e m a t e 2 引、o p f | 2 6 i 、 g e n t l e n e t 2 7 j 和o b j e c t s p a e e s 2 s 】等等。 n h i b e m a t e n h i b e r n a t e 是一个基于n e t 的对象关系映射持久库,是从j a v a 下的对象 关系映射1 具h i b e r n a t e 移植过来的。它采用x m l 映射文件来处理映射关系。 如今n h i b e m a t e 在n e t 下的对象关系映射领域获得了较为广泛的支持,关注的 人也比较多。虽然目前文档还不是很令,但是由于其移植自j a v a 下颇为成功的 h i b e r n a t e ,因此被丌发者寄予厚望。 0 p f o p f 的全称是:o b j e c tp e r s i s t e n tf r a m e w o r k 。o p f 走的路线有点类似于t y p e d d a t a s e t 或b o r l a n de c o ,实现比较简单,提供更多的源码级控制。它的对象属 性与数据库字段的对应关系是通过n e ta t t r i b u t e 机制体现的,所以修改起来比 较方便,虽然相比配置文件的方式显得不够灵活,比如:需要重新编译,开发人 员不得不关注数据库字段等。 g e n t l e n e t g e n t l e n e t 也是一个基于n e t 的对象关系映射持久库。它可以自动的生成 s q l 语句和构造对象,使用上比较简单。g e n t l e n e t 提供两种外健( 1 :r l ,n :m ) 关 联,在数据完整性方面,没有提供级联操作。另外,g e n t l e n e t 也是使用属性来 完成映射,即通过自定义a t t r i b u t e 来建立对象到数据的映射,这在使用上确实比 较方便直观。 o b j e c t s p a c e s m i c r o s o f t 在f 代的n e t 开发平台中可能提供称为o b j e c t s p a e e s 的对象 关系映射框架,但是由于种种原因,它的发展前景还不是很明朗。 对象关系映射的核心部分是数据库表与持久化类之f e l j 的映射,现在主要有 两种方式2 9 1 : 种是单纯的采用持久化类实现映射,表与持久化类之间的映射是通过硬编 码的方式写成类,编译后运行的,如同o p f 的映射方式。这种方式用起来直观 明厂,开发人员可以控制的部分多,运行速度快。缺点是如果更改表的字段、类 型等,需要直接更改类里面的代码,再编译后才能运行。 另一种是通过x m l 文件和持久化类一起来实现映射,如n h i b e r n a t e 等。持 久化类是映射出来的实体类,大部分关于类属性的类型、长度、是否能修改、是 甭可以插入,表字段的类型、长度、是否允许为空等,都通过x m i 。格式的文件 江苏人学倾 学位论文 来表达。表的映射关系需要改动时,只需修改x m l 文件部分,持久化类不需要 改动及重新编译。这种方式现在被广泛采用,因为它更加灵活,耦合性更低。 l - 3 目前的解决方案存在的问题 对象关系映射技术起源fj a v a 领域,在其被n e t 平台吸收的过程当中,不 可避免的存在一定的问题,这些问题 要包括: 1 单纯的移植j a v a 平台的实现方式 当前许多n e t 平台的对象天系映射框架都来自于对j a v a 平台的相关产品 的改造。由于j a v a 平台和n e t 平台之间的固有差异,这些改造的产品往往难以 充分发挥n e t 平台的优势,使得对象关系映射技术在n e t 平台的实用性有所 降低。 2 复杂的框架结构不利于中小型企业应用 对象关系映射技术的主旨是用来解决对象模型与关系模型的不匹配的问 题,是为了提高系统的健壮性、可移植性、可读性、可维护性,同时减轻开发人 员的工作量。目前的对象关系映射持久层框架大多追求完备的功能,如果将其 运用在大型的系统上,也许是较为合适的,但是如果应用到中小型的企业应用当 中,就显得太庞大了,复杂的框架使得系统效率难以令人满意,学习、配置持久 层所带来的巨大的工作量也可能会使我们达不到预想的目标。就像当前许多对象 关系映射框架虽然向开发者屏蔽了s q l 语句,但是又推出诸如o q l ( 对象查询 语言) 等概念,使得学习、开发的成本依然居高不下。 1 4 本文提出的解决方案 针对上述问题,本文设计并实现了一个基于对象关系映射技术的轻量级持 久层框架。本文在分析了目前流行的数据访问模式的优劣之后,针对中小型企业 应用的需求,紧密联系n e t 平台的特性,充分发挥a d o n e t 体系的优势,将 对象关系映射技术与a d o n e t 中的d a t a s e t 、d a t a t a b l e 等技术融为一体,向业 务层及表示层提供了一个轻量级的持久层框架。它不但向上层系统提供了易于进 行数据绑定的接口实现,使得n e t 平台下的数据处理与表示更加高效与自然, 而且向下层的数据库屏蔽了应用系统的影响,使得数据库的维护更加方便。另外, 由于其专注于数据映射的轻量级特性,使得开发基于它的上层应用更为简便,易 于学习和使用,从而有效降低了系统的开发成本,并为以后的应用开发提供了可 复用的持久层框架。 江荐人学硕l 学位论文 本文还给出了持久层框架在镇江市水业总公司工程项目管理信息系统中的 应用实例,从应用的角度对持久层框架的实用性与易用性做出了验证。 1 5 论文的组织 论文可分为以下几个部分: 第一章绪论,主要对课题的研究背景、研究现状、目前的解决方案存在的 问题、本文提出的解决方案和论文的整体结构作简单的介绍。 第二章数据模型与对象关系映射理沦,介绍了本文涉及的关系模型和面向 对象模型,并由二者的矛盾引出对象关系映射理论。文中对对象关系映射的规 则、实现策略、优势和局限性也做了研究。 第三章持久层的分析与设计,这是本文的框架设计部分。在具体分析对比 了n e t 平台的数据访问模式之后,引出了基_ j 埘象关系映射技术的持久层,分 析了持久层的功能需求,给出了基于对象,关系映射的持久层的设计,并针对设 计中的关键问题给出了本文的解决方案。 第四章持久层框架的应用,以镇江市水业总公司的工程项目管理信息系统 为例,给出了持久层的实现以及在具体项目巾的应用。 第五章总结与展望,对本文所作的工作进行了总结,并对以后的发展进行 了展望。 江苏大学硕i 学位除文 第二章数据模型与对象关系映射理论 2 1 数据模型 本文讨论基于对象关系映射技术的持久层框架的设计与实现,实际上实现 的就是数据模型的映射。本节描述相关的数据模型,下节将讨论从面向对象数 据模型到关系模型的映射。 2 1 1 概述 数据模型是数据库结构的基础,它是描述数据、数据联系、数据语义以及一 致性约束的概念工具的集合“。数据模型在整个数据库系统中具有非常重要的地 位。它既与应用程序和用户相关,又和d b m s 相关:既可用于描述应用领域的 数据,又可用于描述数据库系统的实现方式1 。数据库系统的数据模型主要包括 网状模型、层次模型、关系模型和面向对象的数据模型。目前关系模型的应用范 围最广泛。 本文涉及的数据模型主要是关系数据模型和对象数据模型。f 面将分别介绍 两者。 2 1 2 关系模型 关系模型是建立在严格的数学概念基础上的。关系模型概括地讲由关系数据 结构、关系操作集合和关系完整性约束三部分组成。 一关系模型的结构 关系数据模型是基于记录的。记录是属性的集合,属性是事物特征的抽取。 每一个属性都有一个域,表示属性的取值范围。在关系数据模型巾,所有属性的 域都必须是原子类型,这就是著名的第一范式f 3 0 l ( f i r s tn o r m a lf o r m ,1 n f ) ,它 使得记录不能复合和嵌套。 关系是描述对象的基本手段。关系就是定义在它的所有属性域上的笛卡尔积 的子集o “,用元组的形式表示。关系模式。般由属性序列和各属性对应的域组成, 关系模式是相对固定的,但关系的值是可变的。从形式上看,关系相当于一个二 维表,表的列对应于属性,而表的行对应于元组。 如果某一属性组的值唯一地决定了关系中其他属性的值,并且任何真子集均 江击、人学硕 :学位论史 无此性质,则该属性称为关系的键( k e y ) 。一个关系至少有一个键,也可能有多 个键。在多个键中选一个作为主键( p r i m a r yk e y ) 。如果关系中的属性或属性组 不是本关系的键,而是引用其他关系或本关系的键,则称为此关系的外键( f o r e i g n k e y ) 。键是关系模型的核心。 二关系模型的约束 约束提供了种手段保证当授权用户对数据库作修改时不会破坏数据库的 一致性,约束防止的是对数据的意外破坏。关系数据模型的约束主要有以下方面: 域完整性约束( d o m a i ni n t e g r i t yc o n s t r a i n t ) 。属性值必须是域中的值,这 是关系模式的基本规定; 实体完整性约束( e n t i t yi n t e g r i t yc o n s t r a i n t ) 。每个关系应当有一个 键, 主键的值是唯一的,不能为空: 参照完整性约束( r e f e r e n c ei n t e g r i t yc o n s t r a i n t ) 。参照完整性约束是小同 关系之间或同一关系的不删元组之间的约束。它的基本内容是:外键要么是空缺, 要么是引用实际存在的主键值: 一般完整性约束( g e n e r a li n t e g r i t yc o n s t r a i n t ) 。一般完整性约束是指允许 用户对数据做自定义的语义约束。 关系数据库的完整性检查有些由d b m s 承担,有些由应用程序负责。从发 展趋势看,d b m s 将逐渐承担大部分完整性检查工作。 三,关系模型的操作 关系数据库的操作称为关系代数操作( r e l a t i o n a la l g e b r ao p e r a t i o n ) 。操作可 以分为两类:关系专用操作和集合操作。其中关系专用操作包括选择操作和投影 操作:集合操作包括连接操作、集合操作、除操作、外连接操作、外并操作。 除关系操作外,还,j 以用谓词演算来表达关系的操作,称为关系演算( r e l a t i o n c a l c u l u s ) 。关系演算分为元组演算和域演算。关系演算和关系代数的根奉不同是, 前者只要说明所要得到的结果,坷i 必标明操作的过程,而后者必须标明关系操作 的序列。因而,关系演算是说明性( d e c l a r a t i v e ) 的,而关系代数是过程性 ( p r o c e d u r a l ) 的。 四关系模型的优势和局限性 关系数据库的主要优点足自助丁开发具有较高数据独立性的应用程序。关系 表达式容易理解,操作方式也为大多数人所熟知,并且有一套较为成熟的关系理 论支持数据分析方法的形式化。关系模型擅长于大量的结构简单的数据的组织。 这些优点使得关系数据模型在许多虑用领域成为主要的数据库模型。 江j | j = 大学硕【学位论文 关系模型的局限性主要表现在以下几个方面:首先,关系模型没有克服面向 实现的弱点。这种以记录为最基本的独立数据表达单位的模型,不能很好的面向 应用。其次关系模型不能以自然的方式表达实体之问的联系。实体问的联系是数 据模型的莺要描述内容,也是判断数据模型是否适用于具体领域的重要依据。关 系模型所表达的实体间的联系不是显示的,而是隐含在关系的公共属性中的,这 就使得用户较难得到全局的逻辑体系结构。再次,关系模型表达的语义不够丰富。 关系模型不能由一张表表达出复杂对象的语义,这就限制了它在数据类型较复杂 的领域的应用。最后,关系模型支持的数据类型过于简单。一般只提供一些简单 的数据类型,如整型、实型等并且对新类型的定义与生成的支持不够完善。现 实世界是纷繁芜杂的,很难用简单静态的结构描述清楚。 2 1 3 面向对象模型 数据库系统的宗旨是为了管理大量数据,在传统的关系数据库适用的事务处 理领域般都具有以下特征【3 2 l1 3 3 1 :结构统一、面向记录、数据项小、所有的记 录字段都是原子的( 符合i n f ) 。但是在非事务处理领域,至少某方面不具备上 述特征,并因而阻碍了数据库在这些领域得到充分的应用。在这种背景下,寻找 新型的数据模型就成了研究的必然方向。面向对象数据模型克服了传统数据模型 的缺陷,吸收了面向对象程序设计语言和抽象数据模型的主要思想,借鉴了语义 数据模型的思路,在应用中逐步形成和发展i j 。 一面向对象模型的基本概念 1 对象( o b j e c t ) 。对象是面向对象模型基本的数据表达单位,所有现实世 界的实体都可以被认为是对象。在面向对象概念中,对象的定义包括状态和行为 两个方面,对象的状态由属性组成,对象的行为由操作构成,这组操作称为方法。 方法描述对象的行为特性,它可以改变对象的状态。应用程序通过方法对对象进 行操作。方法由接口定义和实现两部分组成。 对象的根本优点在于将数据从被动型转变为主动型,是真正的独立实体,拥 有自己的操作,一经定义就取得与原来存在的对象的同等地位。这一点为系统的 扩充和重用提供了良好的基础。 2 类( c i a s s ) 。在面向对象概念中,类是对象的模版,对象是类的实例。一 个类中的所有对象共享公共的定义。如果将类本身看作个变量,则对象意味着 该类对象全部实例的集合,还口,以包括l l 叫: ( 1 ) 被该类的全部对象实例共享的属性和方法说明。具体来说包括属性名称、 属性性质、方法名称、方法代码等等。这些说明可以由系统或者用户定义,任何 江苏大学坝i 学位论文 一个单独的对象实例都可以使用: ( 2 ) 对类对象本身的属性和方法说明。这些说明可以应用到该类对象的全部实 例上,或者具有全部实例的集合特征,比如缺省属性和某些平均值、总计值等。 3 封装( e n c a p s u l a t i o n ) 。面向对象的封装是将表示属性的状态和表示行为的 操作包装成一个对象类型,对状态的访问和修改只能通过封装的接口进行。封装 通常提供信息而隐藏实现方法,封装和信息隐藏使系统具有更多的可维护性。对 象可以简单地看作是状态( s t a t e ) 和行为( b e h a v i o r ) 的结合恻。状态由实例变 量来描述,而行为由方法来表示。从对象的外部来看,客户只能看到对象的行为: 而从对象的内部来看,方法通过修改对象的状态,以及和其他对象的相互作用, 提供了适当的行为。 4 继承( i n h e r i t a n c e ) 。通常一个面向对象系统包括许多类,但有些类是相 似的。为了表示类之间的相似性,可以将类放入一个特殊化层次中,一般特殊化 后的类形成子类,而原来的类就是基类。 面向对象模型中,定义子类时只定义不同于基类的属性和方法,并且规定基 类的属性和方法也可以被子类对象使用,称为了类对基类i j 勺继承。子类对基类方 法的继承一般是指继承实现,但也允许只继承方法的定义,然后由子类自己实现 方法,这种方式就是面向对象中的重载( o v e r l o a d ) 。 5 多态( p o l y m o r p h i s m ) 。对象根据所接受的消息而产:生动作( 执行方法) 做出 反应。同样的消息被不同的对象接收时町导致完全不同的实现方法,得到不同的 结果,该现象称为多态性。利用多态性,对象之间可以组成一个体系,这个体系 对外提供统。的接口,但内部有不同的实现方式,根据运行时的状态选择采用不 同的实现方式。这种接口和实现分离的方法,对实现面向对象的应用是非常有效 的。这也使得用户能够发送通用形式的消息,而将所有的实现细节留给接受消息 的对象。 6 消,鼠( m e s s a g e ) 。消息是从源对象到目标对象的请求,在目标对象上作为 方法调用实现。对象相互间是通过消息来协作的。 7 对象间的其他关系。多个对象之间除了继承外还可能存在关联、聚合、 组成、依赖关系。 关联关系是对象之间最弱的一种关系,表示对象问的某种联系,使一个对象 知道另一个对象的属性或方法。关联有单向的和双向的。 聚合是关联的一种,是对象间的整体和部分之间的关系。 组成是更强的聚合,组成关系中代表整体的对象负责代表部分对象的生命周 期。在组成关系中,一个部分对象仅属于一个整体对象,并且部分对象通常与整 体对象共存i 二。 江苒大学硕l 学位论义 依赖也是对象之问的一种关系,它表示一个对象依赖于另一个对象的定义。 二o d m g 标准的对象模型 o d m g ( o b j e c td a t am a n a g e m e n tg r o u p ) 提出的关于永久对象存储的标准是 一个涵盖数据库、对象和程序设计语言的标准集,至少从理论上说,与该标准兼 容的软件产品具有很好的可移植性p “。遵循这一标准,开发商可以用j a v a 、c + + 或c 撑等直接将对象存储于o d m g 兼容的关系数据库、对象关系数据库或对象 数据库中。它尽可能地利用和借鉴了已有的标准,如o m g 、s q l 一9 2 、i n c i t s 等,其主要功能部件包括对象模型、对象定义语言、对象查询语言和j a v a 、c + + 、 c # 语言绑定。o d m g 对象模型扩展了o m g 对象模型,为对象数据库产品提供 一个通用的模型,包括:持久对象、对象特性、特定对象类型、查询以及事务。 三面向对象模型的优势和局限性 对象模型与关系模型的根本区别在于对象模型是面向应用的,更能反映现实 中的事物,它提供了丰富的语义和自然的表达方式,方便地表达应用领域地事物 和它们之间地联系。与关系模型相比,对象模型的最大局限性是缺乏一个完善的 理论指导,还没有公认的形式化描述。因此面向对象的数据库更多地带上了领域 的印记,在不同领域中有着不同的表现。 2 2 对象关系映射 2 2 1 概述 对象关系映射在很大程度f :缓解了应用系统中面向对象模型和关系模型的 “阻抗不匹配,的现象。在使用对象关系映射的应用系统中,通常使用面向对象 模型实现应用逻辑,而对象的存储和读取完全由实现对象关系映射的模块完成。 实现对象关系映射的模块模拟面向对象数据库提供的功能,在关系数据库中操 作关系和元组,实现对象的存储和读取。 2 2 2 对象关系映射的规则 对于已经存在于关系数据库中的大量数据,可以通过对象关系映射模拟为 对象。这时的映射实际上是从关系模型到对象模型的转换。在这种已经定义了关 系模式和约束的情况下,可必归纳出下列从关系数据到对象数据映射的基本规则 1 3 7 1 。 关系映射为类,关系属性映射为类的属性; 江苏人学硕卜学位论文 元组映射为对象; 关系名加上关系的键可以在关系数据库中唯一确定一个元组,因而可以 映射为对象标识; 在上面规则的基础上,可以继续推导出下列规则。下面的规则中r 和s 定义 为两个关系。 如果n r ( r ) 包含n s ( s ) ,则s 的对应类是r 对应类的子类。r 、s 分别表示 关系r 和s 的键: 如果a ( r ) n a ( s ) = t o ,则可以从r 和s 中抽象出共同的基类t 。其中 a ( r ) 和a ( s ) 分别表示r 和s 的属性集; 如果a ( r ) 包含a ( s ) ,则s 町以看作r 的基类。其中a ( r ) 和a ( s ) 分别表 示r 和s 的属性集; 如果r 的外键r 引用到关系s ,则s 对应r 的域; 上面的规则一般适用于从关系模型巾抽象出相应的对象模型,当然对于把对 象模型转换为关系模型也是有用的。但当1 i 存在已经定义的关系模式和约束时, 从对象模型到关系模型的映射可以选择更加灵活的实现方式。 2 2 3 对象关系映射的实现策略 在面向对象模型中,类是对象的模版,对象是类的实例。对象和类的映射实 现是对象关系映射的基本内容。许多面向对象语义与对象和类的映射实现方式 紧密相关,包括类的定义的映射、对象的映射、对象标识符的实现、对象间关系 的映射以及完整性和约束检查等。 一类的映射 类的定义包括类的属性和方法定义。类的属性定义主要包括属性的名称、属 性的类型和属性值的域,如果是数值属性还可能包括精度等。另外在实际应用中 可能包含一些辅助的说明信息,这样数据库中所有类的属性定义就可以抽象出一 个关系模式,比如简单地抽象成关系模式c l a s s p r o p e r t i e s s c h e m a : c l a s s p r o p e r t i e s s c h e m a 2 ( p r o p e r t y n a m e ,p r o p e r t y t y p e ,p r o p e r t y - p r e c i s i a n ) 关系模式c l a s s p r o p e r t i e s s c h e m a 可以描述数据库中一个类的属性定义,对 应的关系实例用于存储这个类的属性定义。但通常数据库中会存在多个类,每个 类的属性定义使用个关系模式描述显然是小合理的,因此需要扩充关系模式 c l a s s p r o p e r t i e s s c h e m a 使之能够掐述类之间的对应关系,扩充后的关系模式为: a l l c l a s s p r o p e r t i e s s c h e m a = ( c l a s s ,p r o p e r t y n a m e ,p r o p e r t y t y p e ,p r o p e r t y p r e c i s i o n ) ,增加的关系属性c l a s s 在数据库中唯一标识一个类。这样关系模式 江苏人学顾l 学位论文 a l l c l a s s - p r o p e r t i e s - s c h e m a 的关系实例就可以存储数据库中的所有类的属性定 义。需要注意的是这个

温馨提示

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

评论

0/150

提交评论