




已阅读5页,还剩78页未读, 继续免费阅读
(计算机应用技术专业论文)面向对象数据库技术在地税征管系统中的应用研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象数据库技术在地税征管系统中的应用研究 摘要 面向对象数据库系统是近几年正在发展中的数据库系统。随着应用程序 的面向对象分析与设计的发展,面向对象数据库理论也被广为研究发展,由 于其面向对象的持久化,所以它能很好的支持应用程序的三层或n 层设计 体系,由于它具有封装性并支持消息通讯,所以可以容易的扩展为主动式数 据库及分布式数据库系统。 本文主要研究面向对象数据库系统设计及应用,并尽力分析设计一个有 效的面向对象数据库系统。第章介绍了本论文的内容,第二章讨论了关系 型数据库的弱点,定义了面向对象的数据库系统中的简单对象与复杂对象, 并研究了面向对象的数据库中复杂对象的存储方式,以及对象的管理方法, 解释了如何利用继承、重载技术去扩展数据库系统的功能。第三章介绍面向 对象的数据库上的消息、事务、锁策略,论述如何实现数据库对象及对象上 的事件,讨论了针对不同任务下的线程策略。第四章介绍了如何用面向对象 的数据库实现分布式数据库和主动式数据库和思想。在第五章中,作者根据 在实际工作中的应用,给出了个用面向对象数据库的设计思想进行数据库 系统设计的实例。 关键词:面向对象数据库;分布式技术;地税征管系统;三层设计 r e s e a r c ho f o b j e c t o r i e n t e dd a t a b a s et e c h n o l o g yo nl o c a lt a x i m p o s i n gs y s t e m a b s t r a c t 0 b j e c to r i e n t e dd a t a b a s es y s t e mi sar e c e n t l yd e v e l o p i n gd a t a b a s es y s t e m w i t ht h e d e v e l o p o fo b j e c to r i e n t e d a n a l y s i s a n dd e s i g n ,o b j e c to r i e n t e d d a t a b a s et h e o r yi ss t u d i e da n dd e v e l o p e dq u i c k l y b e c a u s eo b j e c t o r i e n t e d d a t a b a s eo r i e n tt op e r s i s t e n c eo fo b j e c t ,i ts t r o n g l ys u p p o r t e st h et r e e t i e r e d s y s t e md e s i g n b e c a u s e o ft h e m e s s a g es y s t e m a n d e n c a p s u l a t i o ns y s t e m e m b e d e di no b j e c to r i e n t e dd a t a b a s e ,i tc a nb ef r e e l ye x t e n d e da sa c t i v ed a t a b a s e s y s t e ma n dd i s t r i b u t e dd a t a b a s es y s t e m t h i sp a p e rp r i m a r i l ys t u d i e so b j e c to r i e n t e dd a t a b a s es y s t e md e s i g na n d a n a l y s i s i tt r i e st od e s i g nae f f e c t i v eo b j e c to r i e n t e dd a t a b a s es y s t e m c h a p t e r o n ei n t r o d u c e st h ec o n t e x to ft h i sp a p e r c h a p t e rt w od i s c u s s e st h ew e a k n e s so f r e l a t i o nd a t a b a s e i td e f i n e st h es i m p l eo b j e c ta n dc o m p l e xo b j e c ti no b j e c t o r i e n t e dd a t a b a s e s y s t e m ,a n d s t u d i e sh o wc o m p l e xo b j e c t sa r es t o r e di n d a t a b a s es y s t e m i tt r i e st of i n dt h eb e t t e rw a yt om a n a g et h eo b j e c t si nd a t a b a s e s y s t e m ,a n de x p l a i n sh o w t ou s ei n h e r i t i n g 、o v e r r i d i n gt oe x t e n dt h ef u n c t i o no f d a t a b a s es y s t e m c h a p t e rt h r e es t u d i e st h em e s s a g e 、t r a n s a c t i o na n dl o c ks t r a t e g y i no b j e c to r i e n t e dd a t a b a s e ,a n dd i s c u s s e sh o wt oi m p l e m e n tt h ed a t a b a s eo b j e c t a n di t se v e n t i ta l s od i s c u s s e st h ed i f f e r e n tt h r e a d s t r a t e g y f o rd i f f e r e n t t a s k c h a p t e r f o u r e x p l a i n s a ni d e aw h i c hu s e s o b j e c t o r i e n t e dd a t a b a s et o i m p l e m e n td i s t r i b u t e dd a t a b a s es y s t e ma n da c t i v ed a t a b a s es y s t e m i nc h a p t e r f i v e ,a na p p l i c a t i o ni n s t a n c ew h i c hw a sd e s i g n e db yt h ei d e ao fo b j e c to r i e n t e d d a t a b a s ei sc o n t r i v e da c c o r d i n gt om y p r a c t i c e k e y w o r d :d i s t r i b u t e dt e c h n o l o g y ;o b j e c to r i e n t e dd a t a b a s e ;l o c a l t a x i m p o s i n gs y s t e m ;t h r e e t i e r e dd e s i g n h 独创性声明 本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成 果。据我所知,除t i t 中特别加以标注和致谢的地方外,论文中不包含其他人已经发 表或撰写过的研究成果,也不包含为获得 佥8 b 些太堂或其他教育机构的学 :i ) :或证1 5 而使用过的材料。与我一同j 二作的同志对本研究所做的任何贡献均已在论文 中作了明确的说明并表示谢意。 学位论文储始浓三辜签字吼2 畛7 日 学位论文版权使用授权书 本学位论文作者完全了解盒壁兰些太堂有关保留、使用学伉论文的规定,有权 保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被奇阅和借阅。本 人授权鱼熙王些态堂可以将学位论文的全部或部分内容编入有关数据库进行检索, 可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。 ( 保密的学位论文在解密后适用本授权书) 学位论文作者签名: 张弓辜 签字日期:2 肌蝉年f 月 日 学位论文作者毕业后去向 工作单位 通讯地址 钢f 冬必奶讹心 倒料 i l l 导师签名 光秣唼 签字日期:籼侔j 月6 f 日 电话:口“2 ,2 l 2 j 邮编: 致谢 在此论文完成之际,谨向我的导师张维勇表示最真诚的感谢,他一直关 心着我的选题及论文的进度,质量,并提了极为中肯的意见,没有他的帮助, 我是不可能完成这篇论文的。在论文写作过程中,常常是老师主动与笔者联 系,并对论文的内在逻辑和格式提出了严格要求,老师为人师表的态度值得 敬佩。 在这里还要感谢曾给我授课的各位老师,他们的教学让我所得甚多,这 对完成论文有着基础性的作用。 感谢学院的王新生老师及研究生部的老师们所付出的辛勤工作。 感谢父母和亲人在生活和学业上对我的关心和支持。 l 作者: 2 0 0 3 年1 2 月2 8 日 第一章绪论 如同实体关系建模是关系数据库的分析设计基础,面向对象的分析设计 是面向对象数据库的分析设计基础,面向对象数据库将数据库对象理解为对 象的永久保存形式,它面向系统分析员和软件编程人员,为企业级应用提供 在面向对象数据库系统上的解决方案。 面向对象数据库系统是一个管理系统,它负责对所有数据库对象进行管 理,资源配置,并管理数据库上的事务、锁。对所有的对象进行合理的线程 分配、内存分配,并进行可持久化的物理空间分配。 关系数据库的理论和实践都己非常成熟,目前的关系数据库产品,如 o r a c l e 、s y b a s e 、m i c r o s o f ts q ls e r v e r 都在数据库中引入了对象的概念,系统 中的表、触发器、用户等都是数据库内的对象,但是它们本质上都还是关系 数据库中的元素,系统并没有类的继承等面向对象的概念,和真正意义上的 面向对象数据库有一定的距离。 面向对象的分析方法在数据库应用程序的设计中被广为采用,系统分析 员在设计分析系统中的类和对象后,将需要永久保存的对象映射至可持久化 的存贮介质上。通常是将对象保存在关系数据库中,但是关系建模与面向对 象设计思想有一定差异,这使得数据库应用程序设计复杂,而这两种设计思 想在应用程序的设计处理上本身也有一定的冲突。因此笔者从两方面深入, 一方面研究面向对象数据库设计,研究以面向对象的观点去分析一个数据库 系统,内容涉及对象间关系,对象的结构,对象的继承,重载机制,这一部 份虽然是数据库设计的内容,但是它对于建立一个良好的面向对象数据库管 理系统有着重要的启发和指导意义,只有在对面向对象数据库分析设计有很 好的理解的前提下,才可能有比较成熟的面向对象数据库管理系统。另一方 面,笔者以当前的一些新的面向对象技术如c o r b a 、j a v a b e a n 探讨面向对 象数据库系统中的事务、对象保存、对象管理。 第二章重点分析关系型数据库中的一些固有的缺点,指出面向对象数据 库是数据库发展的必然趋势,定义了对象、对象集、对象集上的操作等概念, 并以此探讨了对象间的关联、复合对象的结构、对象上的引用与快照。 第三章重点研究面向对象数据库管理系统,首先根据面向对象技术的新 发展,讨论面向对象数据库上的对象的传递、表示、以及消息通讯。其次将 讨论事务及并发性,它们是实现面向对象数据库管理系统的重要环节。然后 将讨论系统如何合理的分配线程,这关系到系统的性能,线程策略就是关于 线程调度的一些探索。此外,还将详细讨论面向对象数据库上的继承、重载 机制,这是面向对象数据库与一般的关系型数据库的最大不同之处。最后, 笔者还将研究面向对象数据库系统中的数据保存、聚集策略。 第四章重点讨论面向对象数据库在一些新数据库技术上应用,怎样在面 向对象数据库上实现主动式数据库、分布式数据库。 在第五章,笔者根据自己的工作经验,结合国家金税工程的实际要求, 给出了面向对象数据库技术在地税征管系统中应用的一个实例。 在第六章,总结了这几年的工作经验与工作成绩,探讨了金税工程中的 一些技术问题,找出不足之处,并对金税工程的未来做了一些展望。 第二章面向对象数据库的分析设计 面向对象的分析设计方法目前在应用程序的分析和设计中被广为使用, 面向对象建模的特点在于它比过程建模更接近于自然客观世界,面向对象的 分析是一套关于如何看待软件系统与现实世界的关系,以及如何进行系统架 构的软件设计分析方法,用面向对象分析构造的软件具有以下特点旧o 】: 面向对象的技术建立的模型与客观世界一致,因而便于理解。 适应变化的需要,修改局限在模块中。 具有可复用性。 以上的三点,如果应用到数据库对象上,将极大的提高数据库软件的开 发效率,面向对象的分析与设计内容宽广,本文主要研究与面向对象数据库 相关的分析设计。 2 1 关系数据库的缺点 关系数据库已发展得相当成熟,并得到广泛应用,但是它还是有很多缺 点。 + 在当今的应用软件开发过程中,应用层上的实体是按面向对象的分析方 法进行设计的,而数据库上的表一般是按关系数据库的实体关系模型进行分 析设计,因此在将面向对象分析设计过程中产生的需要持久化的对象保存到 关系数据库上时需要建立一个对象,关系的映射过程,它在可持久化对象和 关系数据库的对象之间建立映射,并将对象保存到关系数据库上。但按关系 模型设计的关系实体和按面向对象分析设计出的实体往往不能搭配得很好, 这种按多层设计的应用程序接口间出现的问题被称之为阻抗失配 2 1 。以下将 对阻抗失配表现出的各个问题作详细介绍,并给出在面向对象数据库中的解 决方法。 2 1 1关系数据库的属性问题 关系数据库是按属性值选取数据的,例如用主键值选取某个元组,按属 性值的限制条件选取一个元组等,也就是说关系数据库是按数据的内容访问 数据,于是就需要找到一个稳定的,不重复的属性作为主键,例如:学生、 居民身份证号等。但有时在一个关系中,并不容易找到这样的属性组成主键, 例如:不同学校的人、学号可能是重复的,年龄没有满1 6 岁的人就没有居 民身份证。总之,用属性来识别实体总是不可避免地带来这样那样的局限性。 在面向对象数据库中,所有的对象都有一个o i d 即对象标识与之对应, o l d 具有唯一性和不变性 1 4 】,无论如何修改这个对象的属性,这个o i d 都 不会变,而且o l d 是全局唯一的,不会有第二个与之有相同o i d 的对象, 因此o l d 能更好的反映了对象的唯一特征。有了o l d ,就可以唯一确定一 个对象。 2 1 2 关系数据库的运算问题 关系数据库不支持用户定义的或可扩充的函数或运算,系统只能提供有 限的一些函数供用户使用,而不能提供用户自定义的运算。例如:系统提供 了对表中相关记录的数值型数据的求和函数,但是没有提供绝对值求和,这 些运算当然也可能用其它的办法去实现,如编写出一个存储过程,或一个小 程序,但是实现过于烦琐,也缺乏可维护性和通用性。 在面向对象数据库中,可以自定义对象上的方法,用户可以按自己的需 要编写自己的对象上的方法,实现特定的功能。原则上,面向对象数据库可 以自定义一切自己需要的方法。 此外,由于关系数据库中,数据库的设计试图将表分解为一系列满足第 二、第三范式的小表,在数据库的操作中,不得不使用大量的连接运算,最 后使得数据库程序看上去混乱,难于维护。在实际的程序设计过程中,由于 要考虑到性能等多方面的因素,往往不得不用冗余的方法来降低数据库的范 式,增强数据库的效率,但这样又产生了很多问题。 例如:有一个关系模式( a a ,b b ,c c ,d d ) ,d d 与属性a a ,b b , c c 有函数依赖关系,d d = f ( a a ,b b ,c c ) ,由于d d 计算很烦琐但又经 常被查询,所以将d d 作为关系的一个属性保存在数据库中以便于查询并避 免复杂的运算,但这样的后果是对于a a 、b b 、c c 任何一个字段如果有修 改,都必须对d d 做相应的修改,这对于应用程序的编码来说是很烦琐的事。 在面向对象数据库中,这个关系模式对应为一个类,a a 、b b 、c c 、d d 都是对象上的属性,如果要改变它的属性如a a ,必须调用这个对象上的方 法p u t a a ( ) ,而p u t a a 0 方法在更改a a 的同时也修改了d d ,这样就将关 系上的依赖封装在这个对象的内部,封装了复杂性,增强了可维护性。 2 1 3关系数据库的数据类型问题 关系数据库只提供有限的数据类型,虽然s q l 中不断引入了新的数据 类型,但是它不允许用户自定义复杂的数据类型,然而在软件项目的研发过 程中,往往需要自定义复杂的数据结构和类以描述对象的行为,并在关系数 据库中保存这些对象。因此需要应用程序将这些自定义的数据结构或类转换 成关系数据库可以接受的形式,这使复杂对象在关系数据库上实现数据保存 比较复杂。 面向对象数据库支持更为广泛的数据类型,提供更为强大的数据处理能 力。例如:传统的关系数据库没有提供对声音媒体数据的保存操作能力,但 是在面向对象数据库上,就可以从大文本或长二进制数据类型中派生出相应 的多媒体数据类型,并由用户自由操作它们。 关系型数据库不支持集合性质的数据结构,但在很多情况下,组成类的 元素需要用集合来表示。 例如:学生类的某个属性是亲属,亲属可以是父亲、母亲、弟弟等,这 些亲人就是一个集合,因此学生类的属性亲属就是一个集合。 关系数据库处理集合性质的对象较为繁琐,对于以上学生类的亲属属 性,为了保存学生的亲人,且遵守第一范式,就必须建立学生亲属的一对 多关系,在查询学生的亲人时,必须连接这个关系。 例如:有两张表,一张是学生信息表t 1 ,记录了学生张三的姓名,出生 年月信息,还有学生亲属表t 2 ,记录了每个学生对应的亲属,现查询学生张 三的姓名、出生年月、亲属,则t l 需关联学生亲属关系表t 2 ,使用的s q l 语 句如下: s e l e c tt 1 n a m e ,t 1 b i r t h d a y , t 2 f a m i l yf r o mt l ,t 2w h e r et 1 n a m e = t 2 n a m e a n dt 1 n a m e = “张三” 查询结果如下: 张三1 9 8 0 0 6 0 4父亲 张三19 8 0 0 6 0 4母亲 张三1 9 8 0 0 6 0 4哥哥 由于亲属是一个集合,所以查询结果会出现以上的三行记录,但是用户 真正希望的结果是只有一条记录,即: 张三1 9 8 0 0 6 0 4集合对象 父亲,母亲,哥哥, 在面向对象数据库中,集合对象是对象的一种,面向对象数据库支持对 象集的概念,一个集合可以被看作是对象的一个属性保存在数据库里,因此 查询的结果会如上所示返回正确的结果。 2 1 4 关系数据库的重载、继承机制的问题 关系型数据库不支持类的重载、继承机制,在将面向对象分析与设计过 程设计的对象持久化到关系数据库中时,必须做相应的处理。将有继承关系 的类映射到关系表上去时,有两种对象关系映射方法,即水平分割法和垂 直分割法 2 1 。 ( 1 ) 水平分割法 在水平分割方法中,每一个具体的类映射为一个单独的表,而不论该类 是否从另一个类上派生。例如:税票类包含了税票类型、税票号码、税票名 称、税票金额等属性,这些都可以映射为关系数据库中税票表的相关字段, 税票类有一个派生类即医疗保险税票类,它扩展了一个属性( 医疗保险基 金) ,于是整个医疗保险税票类也要映射为新的表,包括税票类型、税票名 称、税票价格、医疗保险基金。这个表包含祖先类税票类中的所有字段。 水平分割的问题在于:每一个派生类都分割成独立的表,在以上的税票 类中,如果要查询所有的税票的相关信息,就必须分开来在各种税票表上分 别统计查询,再将所有的数据合并。水平分割丢失了类之间的继承结构。 ( z ) 垂直分割法 在垂直分割方法中,具有继承关系的类之间所共享的相同属性将被映射 到同一个关系表上去,对于相互之间不相同的属性,则需要创建新的表去保 存它们。在上面的税票的例子中,垂直分割方法将医疗保险税票类中与税票 类相同的属性如税票类型、税票名称、税票价格放在税票表上保存,同时还 要建立了一个有( 医疗保险税票号,医疗保险基金) 字段的新表,这个新表 保存医疗保险税票医疗保险税票的特有属性医疗保险基金。这样做的好处 是:如果要查询所有税票对象的信息,不需要象水平分割一样在各个表上分 别统计查询,仅需统计税票表既可,但是在垂直分割方法中,所有税票表的 派生类都在税票表中有相应记录,这样会使税票表越来越大,不利于系统的 优化、查询处理。 面向对象数据库能很好的支持面向对象的继承,组装等机制。面向对象 数据库支持基于类的层次查询,可以基于不同的继承层次对类或派生类或祖 先类进行查询,从而避免水平分割,垂直分割产生的各个问题。 面向对象数据库不能完全消除阻抗失配,例如:面向对象数据库支持的 数据类型不能和应用层面向对象的开发工具支持的数据类型完全保持一致, 但可以肯定的是阻抗失配的现象较关系数据库将得到大为改观。 2 2 对象和对象集 对象可以定义为系统中用来描述客观事物的一个实体,这是构成系统的 一个基本单位,由一组属性和一组对属性进行操作的服务组成。对象是面向 对象数据模型的基本结构。对应于现实世界中的实体,都可以称作对象。 对象有一组属性和一组方法。属性也可以是对象,所以属性可递归定义, 这样的变量描述的对象称为复杂对象( 复合对象) 。属性一般只能通过执行 对象的操作来改变。对象可以表示为一个集合( o r d ,p ,f ) ,o i d 称之为对 象i d ,是这个对象的唯一标识,每一个对象的实例其o l d 都是不一样的。p 表示属性集,可以表示为一个集合( p i ,p 2 ,p 3 ,p 4 ) ,p l ,p 2 ,p 3 ,p 4 称之为对象的属性,它们可以是字符串,数字,或其它的对象。 操作又称为方法或服务,它描述了对象执行的功能,对象的方法用来描 述对象的行为特性。方法也可以定义为一个集合( f l ,f 2 ,f 3 ,f 4 ) ,f l , f 2 ,f 3 ,f 4 称之为对象上的方法或操作。 对象是封装的,外界对象问通过消息进行通讯,消息由对象的相应方法 响应,执行操作后将返回操作结果。 2 2 1冗余属性、固有属性、可变属性 在对象的属性中,某些属性之间是相关的,可以找到函数f ,使得p m = f ( p l ,p 2 p m - 1 , p m 十l p n ) ,贝0 称p m 是与p l ,p 2 p m 1 ,p m + 卜p n 相关的,p m 则称为对象的冗余属性。 在面向对象数据库中,冗余属性是只读属性。对象应尽量减少它的冗余 属性。若一个对象中没有冗余属性,则称这个对象的属性间是互相独立的。 对象中所有互相独立的属性的集合称之为对象的独立属性集。 在对象的独立属性集中,有些属性是固定而不发生变化的,称之为固有 属性,有些是受外界影响而发生变化的,则称之为可变属性。 例如:在刚体运动中,一个质点的质量就是固有属性,而质点在空间的 位置,速度则是可变属性。 在面向对象数据库中,因为冗余属性可以由对象上的方法计算出,所以 应尽量减少冗余属性。 在面向对象的系统分析和程序设计过程中,考虑到面向对象数据库是n 层设计的最底层,主要负责对象的持久化,因此面向对象数据库更多的关心 需要持久化的对象,而对于一个需要持久化的对象来说,也并不是每一个属 性都需要保存的,在此只考虑那些需要持久化的属性。同理,对于面向对象 数据库中对象上的方法,面向对象数据库也仅仅考虑那些关系到数据保存的 方法。 同一个类往往有很多对象实例,如纳税人类,它有大量的纳税人实例。 大量同属于一个类的对象组成对象集,对象集上的对象通过o i d 将自身同 其它对象区分开来,o i d 可以由类标志符+ 对象序号生成。类标志符是这个 类的唯一标志。 在现实世界中,大量的对象以集合的形式存在,即对象集。对象集是同 属于一个类的所有的对象的集合,这些对象有相同的数据结构,是同属于一 个类的不同实例。对象集也是一个对象,但它是一个集合对象。 在面向对象数据库中,可以由用户自定义大量的类,但定义了一个类仅 仅是定义了一个数据类型,面向对象数据库中,同一个类会有大量的对象实 例,这些实例以对象集的形式进行存放,对象集本身也是一个对象,对象集 提供对对象集中的对象进行插入、删除、修改的功能。创建了一个类后,还 要创建这个类的对象集,才能提供对对象的插入、删除、修改这些基本操作。 例如:创建纳税人对象的对象集,描述如下: c r e a t en s r d xa sa r r a yb yn s r 以上命令创建n s r 对象的对象集n s r d x ,对象集的类型为a r r a y ,用户可 怿篓一纠 怿篓一纠 怿篓一纠 ( 2 ) 插入运算:i n s e r t ( ) 此功能用于在对象集中插入对象或对象集,相当于在对象集矩阵中插入 新的行。 例如:向s t u d e n t 对象集中插入新的学生对象集s t u d e n t l s t u d e n t i n s e r t ( s t u d e n t i ) 其结果相当于将s t u d e n t l 与原s t u d e n t 对象集求并运算。 ( 3 ) 删除运算:d e l e t e ( ) 此功能用于在对象集中删除数据,相当于在对象集矩阵中删除相应的行 记录,这也相当于在对象集上将所需删除的对象集求补运算。 例如:向学生对象集中删除学生对象集s t u d e n t l s t u d e n t d e l e t e ( s t u d e n t l l 其运算结果是s t u d e n t l 相对于s t u d e n t 的补集。 ( 4 ) 对象集分组方法:g r o u p ( ) 此方法将对象集上的对象按指定的属性进行分类,并形成分类后的新对 象集。 例如:学生对象集定义为s t u d e n t 】,它由s t u d e n t ( i d ,n a m e , y e a r ,c l a s s ) 对象组成,c l a s s 是指班级,设一共有三个班级:c l a s s 。、 c l a s s 2 、c l a s s 3 。 c o l l e c t l = s t u d e n t l g r o u p ( c l a s s ) 此方法生成了新的对象集c o l l e c t l ,它将对象s t u d e n t 按c l a s s 进行分类,分类后的c o l l e c t l 共由三个对象( c l a s s g r o u p l , c l a s s g r o u p 2 ,c l a s s g r o u p 3 ) 组成,每个对象也是一个关于对象 s t u d e n t 的对象集,且每个对象内部的c l a s s 属性保持致,分别为 c l a s s t 、c l a s s 2 、c l a s s 3 。 ( 5 ) 对象集排序:s o r t ( ) 此方法生成一新的对象集,它将对象按某些属性排序,但并不改变对象 集上对象的属性。 例如: c o l l e c t t = c o l l e c t 2 。s o r t ( “i d ”、 c o l l e c t i 对象集和c o l l e c t 2 对象集由相同的对象组成,但是运算改 变了c o l l e c t 2 中对象的次序,c o l l e c t 2 按i d 排序。 ( 6 ) 取对象集中对象的个数:c o u n t ( ) 例如:c o l l e c t l c o u n t ( ) 此方法返回对象集c o l l e c t l 中对象的个数。 以上只是提出了一些对象集上的基本方法,数据库系统或用户可以自定 义其它对象集上的方法,如s u m 方法可以累加对象集上数值对象的数值, c 0 u n t 方法可以计算对象集上对象的数目,a v g 方法可以将对象集上数值 对象求平均数。对于特殊的对象集,也可以自定义相应的方法。 此外,考虑到对象集之间的运算,如连接运算,因此还可以定义对象集 间的方法。 2 2 4对象集间的运算方法 ( 1 ) 集合交运算 此操作求出两个对象集中交集,将相同o i d 的对象选则出来成为一个对 象集。 例如:c o l l e c t 3 = c o l l e c t l n c o l l e c t 2 在以上操作中,c o l l e c t 3 是c o l l e c t t 与c o l l e c t 2 的交集。 求交运算具有可交换性。 ( 2 ) 连接运算:j o i n 连接运算可以将两个不同类的对象集按指定的方式合并为一个新的对 象集。其功能类似于关系数据库上的连接运算。 j o i n ( a ,b ,c ) :a ,b 为两个对象集,c 是定义在a ,b 上的条件限制布尔 函数。设a 对象集由( a i ,a 2 ,a 3 a n ) ,b 对象集由( b l ,b 2 ,b 3 b n ) , 定义a ,b 上的迪卡而乘积,得到a ,b 集合对的集合( ( a 1 b 1 ) ,( a 1 , b 2 ) ,( a l ,b 3 ) ,( a n ,b n ) ) ,a ,b 上的连接运算根据限制布尔函数, 将函数运算结果为假的集合对除去,得到结果对象集。 c _ j o i n ( a ,b ,a n a m e = b n a m e ) 以上连接运算产生一个新的对象c 集,它是由( a ,b ) 元组构成的对 象集,元组满足条件a n a m e = b n a m e 。 对象集上的方法可以嵌套,以实现复杂的运算。也可以通过自定义的方 法,生成对象集上所需要的方法。基于对象集的面向对象数据库在集合的处 理上要强于关系型数据库,所有关系型数据库提供的运算都能在面向对象数 据库上的实现。 2 3 对象间的联系 关系数据库中,关系表之间有着复杂的关系,如一对多,多对多等【7 1 。 在面向对象的系统分析和设计中,对象间也有着复杂的联系。 2 。3 1一对一的强制联系 一对一的强制联系是指相互联系的双方缺一不可,且是严格的一对一关 系。例如:每个企业对象都由两个基本对象组成,一个是基本信息对象,包 含企业的最重要的、最基本的信息,另一个是扩展基本信息对象,包括每个 企业都需要填写的一些特定的信息,如企业的房产情况、土地使用情况等。 1 0 两种对象都是企业必须填写的,任何个没有基本信息对象或没有扩展信息 对象的企业对象都是不存在的。 2 3 2一对一的非强制联系 如果在以上的企业对象中,出现了某种个体户性质的 缶时企业,它不需 要填写复杂的扩展信息表,它只需要填写基本信息表,就可以进行正常的税 款申报征收工作,但是它也可以填写扩展基本信息表并申报相应的税种。在 此纳税人的基本信息对象和扩展信息对象间就是一对一的非强制关系。 2 3 3一对多的强制联系 一对多的强制联系是指两个对象间是一对多的关系,并且两个对象是互 相联系互不可缺,缺少了其中任何一个对象都是不合法的。 例如:有一税票对象,它由一张主表和若干张明细表( 副表) 组成,主 表记录了这张税票的纳税人信息,明细表( 副表) 记录了这张税票若干税种 的信息,反映如下: c l a s ss p z b s p hc h a r ( 8 ) ,税票号码 n s r x xn s r , 纳税人对象 s w j g x xs w j g ,税务机关对象 y s j cc h a r ( 8 1 预算级次 c l a s ss p m x s p hc h a r ( 8 ) ,税票号码 s z b mc h a r ( 4 ) ,税种 j em o n e y 金额 一张税票不可能没有其主表,否则就丢失了税票上的纳税人、税务机关 等相关信息,但税票也不可以没有明细表,否则这张税票就没有税种、税款 信息。因此,税票主表对象和税票明细表对象之间是强制对强制的一对多联 系。 2 ,3 4一对多的非强制联系 每一个企业纳税人都需要向税务机关提供其开户银行,数量不限。从企业 纳税人的角度上说,由于缴纳的税款数额巨大,所以不应以现金的方式缴纳, 必须通过银行转帐,因此纳税人往往提供多个银行帐号,以防止某个开户银 行上没有足够的资金用于缴纳税款,但某些个体户纳税人缴纳的税款很少, 所以个体户往往通过现金的方式缴纳税款,他们往往不填写开户银行表。因 此,纳税人对象和开户银行对象之间是一对多的非强制联系。 a 对象对b 对象的一对多联系可以理解为a 对象对b 对象集的一对一联 系。 2 3 5多对多联系 税票类有二个派生类:完税证类、汇总缴款书类。对于大多数的个体户 而言,税务局只需要令其交纳现金税款,并开具一张完税证,作为纳税人缴 纳税款的证明,上面写明交纳了哪些税种、现金,税务局在接受现金后,还 要将这些税款按照纳税人的类型,纳税人所属的管理税务分局,交纳的税种 进行分类合计,并填写汇总缴款书,并以银行转帐的方式将现金通过汇总缴 款书上缴国库,同属于一个税务管理分局的纳税人的完税证的相同税种被汇 总到一张缴款书上去。由于一张汇总缴款书只有一个税种,而一张完税证有 很多税种,所以一张完税证对应多张汇总缴款书。由于多张完税证的同一税 种被合计到一张汇总缴款书的税种上去,所以一张完税证也对应多张汇总缴 款书。所以完税证和汇总缴款书之间是多对多的联系。 联系可以通过指针来实现,例如a 上有多个指向b 的指针则表明a 与b 是一对多的联系,联系可以分为单向的联系和对称的联系。a 到b 的单向联 系是指在a 对象上有指向b 对象的指针,而b 对象上没有指向a 对象的指 针。a 和b 的对称联系是指a 对象上有指向b 对象的指针,丽b 对象上也 有指向a 对象的指针。 2 4 面向对象数据库中的复合类及复合对象 2 4 1简单类与复杂类 类由类的属性和类上的方法构成,简单类只由简单的数据结构组成,它 的属性是不可再分的,如i n t e g e r 、c h a r a c t e r 、b y t es t r i n g 、b o o l e a n 、 f l o a t ( 有的数据库系统还可以加入其它原子类型) 。此外,某些类可以由一 些简单类组合而成为复杂类,如有以下s w j g 类( 税务机关类) c l a s ss w j g f s w j g b mc h a r ( 6 ) ,税务机关代码 s w j g m cc h a r ( 2 0 0 ) ,税务机关名称 s w j g d zc h a r ( 2 0 0 ) 税务机关地址 ) 税务机关类由一些简单数据类型组成:税务机关代码、税务机关名称、 税务机关地址。由简单类派生组合而成的类简称为复杂( 复合) 类,复杂类 的实例被称为复杂对象。 在应用程序中,会设计出大量的复合类,复合类由简单类派生、组装而 成。它们有相对较为复杂的数据结构,能实现较为复杂的功能。复合类也可 以通过组装,派生生成更为复杂的复合类。由复合类组成的对象称之为复合 2 对象。某些文献则将复合对象称之为复杂对象。 例如以下的纳税人类n s r : c l a s sn s r n s r b mc h a r ( 8 ) , 纳税人编码 n s r m cc h a r ( 2 0 0 ) ,纳税人名称 n s r d zc h a r ( 2 0 0 ) ,纳税人地址 s s s w j gs w i g , 所属税务机关 s s k h y hk h y h , 所属开户银行 ) 在以上对象中,税务机关本身就是一个类,但在这旱,税务机关类作为 复合类n s r 的一部分,成为纳税人对象的一个属性。 在面向对象数据库中,组装成为复合类的各简单类或复合类之间是存在 关系的,数据库中的复合类上往往蕴含了数据库上的联系。 例如:在税收业务中,一张税票由税票主表和税票明细表组成,在这张 税票中,主表与明细表是强制对强制的一对多联系。 企业类由基本信息类和扩展信息类组成一对一联系,可以用如下方法描 述这个类。 c l a s sq y j b x xj b x x b ,基本信息表对象 k z x xk z x x b 扩展信息表对象 包含一对多关系的复合类如税票类可以用咀下方式描述。 c l a s ss p f z bs p z b ,税票主表 f b 】s p f b 税票副表对象集) 在以上复合类s p 的描述中,笔者用f b 指出f b 是一个对象集,这就意 味着每一个z b ( 主表) 对应若干个f b ( 副表) 。 2 4 2引用与快照 在面向对象的分析与设计过程中,某一个对象可以成为另一复合对象的 属性,这个属性成员以两种方式在复合对象中存在,一为引用,一为快照。 引用是指此复杂对象的属性是指向另一个对象集中某个对象的指针,对应于 i sp a r to f 语义,而快照则表示此复杂对象的属性是某一个类的实例,对 应于i sa 语义。引用实质上是对类的实例( 对象) 的引用,而快照 实质上是对类的结构的引用。 ( 1 ) 引用 引用如同其字面上的含义,类似于指针,引用对象并不真正保存这个对 象的实例,而是用指针指向一个对象集中的对象。 例如:在纳税人对象中,纳税人所属的税务机关就是一个引用,如图2 - 1 所示,纳税人对象中的税务机关是指向税务机关对象集中某个对象的指针。 纳税人编码 税务机关一 纳税人名称 税务机关二 税务机关 ( 引用) 税务机关三 图2 - 1 对象间的引用 税务机关对象集是以一个单独的对象集存在的,它记录了本系统中有哪 些税务分局、税务行政机关。每一个纳税人都将对应一个税务机关。 引用的特点在于:数据库并不需要保存被引用对象的值,而是保存一个 指针,因为这个对象在其它对象集上已经存在,保存它的数值将是冗余的, 引用减少了存放对象数据的空间。 但引用也有自己的缺点。例如:在若干年后,税务机关机构改革,某两 个机构合并后,有一个税务机关被删除,这样就导致纳税人对象中指向这个 税务机关的指针无效,因此被引用的对象应该是非时变的,不会随时剃变化, 并保持固定的值。 笔者以r e f 关键字描述引用对象,如下所示。 c l a s sr l s r n s r b mc h a r ( 1 0 ) ,纳税人编码 n s r m cc h a r ( 1 0 0 ) ,纳税人名称 s w j gr e f ( s w j g b ) 弓i 用税务机关表的某个对象 ) ( 2 ) 快照 快照的原理和快速照相过程相似,它快速记录下某对象当时的状态信 息,大多数的数据库上的数据都属于快照。 例如:税票主表描述如下: c l a s ss p z b s p hc h a r ( 8 ) ,税票号码 n s r x xr l s r ;纳税人对象 y s j cc h a r ( 8 ) 预算级次 4 税票主表中的纳税人对象就是纳税人对象的一个快照,而不是引用,在 每一个税票主表对象中都会存放纳税人对象的具体数据信息。 在税票主表对象中对纳税人对象使用引用方式,其引用就是一个指向纳 税人对象集的指针。此纳税人在若干年后变更了它的名称和经济性质,于是 在查询这张税票的纳税人名称、经济性质时,查询到的是这个纳税人变更后 的名称、经济性质,丽不是税务机关开具这张税票时的纳税人名称、经济性 质,这样会造成一些错误,例如根据经济性质统计当年的税款金额就会出错。 使用快照方式,税票对象就会实时存放开具税票时的纳税人对象,这也就避 免了以上错误的发生。 在明确了对象问的关系,并币确的使用了引用与快照后,就可以将面向 对象分析与设计过程中的需要持久化的各种类进行分解,直至分解成为一系 列最简单的类,并在面向对象数据库上实现,并组装成为复合类,最终实现 应用程序中对象的持久化。 在关系数据库中,有时需要大量的连接操作,连接操作是关系数据库一 项很费时的操作,在面向对象数据库中,通过引用、快照,使得数据库上的 连接操作大为减少。 例如用户访问税票对象,需要得到以下信息: n s r b m ( 纳税人编码) 、n s r m c ( 纳税人) 、j j l x m c ( 经济类型) 、s p h m ( 税票 号码) 、s p j e ( 税票金额) 。 以上属性中,n s r b m ( 1 f l 税人编码1 、n s r m c ( 纳税人) 位于纳税人对象中, j j l x m e ( 经济类型) 位于经济类型编码表对象集中,s p h m ( 税票号码) 位于 税票主表对象集中,s p j e ( 税票金额) 位于税票副表对象集中。 在面向对象数据库中,经济类型对象以引用的方式出现在税票主表对象 中,纳税人名称、纳税人编码作为纳税人对象中的属性以快照的形式保存在 税票主表对象中,税票主表和税票副表组装成税票对象。因此以上查询可以 用以下o q l 表示。 s e l e c ts p z b n s r n s r b m ,s p z b n s r n s r m c ,s p z b j j l x j j l x m c s p f b s p j ef r o ms p 在以上的查询中,由于纳税人对象是以快照的形式存放在税票对象中, 经济类型是以引用的方式存在于税票对象中,这样的查询没有任何连接操 作,所以可以获得很快的速度。 如果将以上查询改为关系数据库的连接操作,那么需要关联4 个表,即 税票主表、税票副表、纳税人表和经济
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 母婴店做活动策划方案(3篇)
- 散水坡道修复施工方案(3篇)
- 游园朗诵活动策划方案模板(3篇)
- 民间户外游戏活动方案策划(3篇)
- 落砂井施工方案(3篇)
- 写一份通知题目及答案
- 小鸭子学游泳题目及答案
- 时间的脚印课件
- 快递收发服务平台搭建合同
- 大型超市与电商平台采购合同
- 堆草场消防管理制度
- 医学影像技术操作规范阅读题集
- 高中生的抑郁现状调查及危机干预对策
- 公司叉车维修管理制度
- 口腔工艺管理课件
- 固定矫治器粘接的护理流程
- 新肇地区葡萄花油层构造脊发育特征及其对油气分布的控制作用
- 2025年《数据采集与处理》课程标准
- EXCEL实操应用培训
- DB32/T 4322-2022家政职业经理人培训规范
- 脊髓电刺激护理
评论
0/150
提交评论