面向对象的数据库技术(共11篇)
面向对象的数据库技术 篇1
数据库发展经历了三个阶段。第一阶段是层次和网状数据库,过程化程度较高,一般用户使用困难;第二阶段是关系数据库(RDB),它以关系演算和关系代数为其数学基础,以二维表为其数据结构,利用非过程化数据操纵语言进行数据库管理,采用内/外/概念模式的三层模式结构,具有较高数据独立性,成为20世纪70年代到80年代中期的主流数据库。层次网状数据库和关系数据库尽管设计和控制方式不同,但都用于一般事务处理,统称为传统数据库。
随着应用的日趋复杂和智能化,传统数据库的缺点一点点暴露出来,人们迫切希望产生一种新的数据库解决方案来适应这些复杂需求。一种新的解决方案呼之欲出。而这个解决方案极有可能就是面向对象数据库技术。面向对象数据库的技术机理并不高深,但它的设计思想却极有价值。在传统的面向对象应用开发中,由于传统的关系数据库开发风格完全不同于面向对象风格,使得许多程序员难以从复杂的SQL编程中解脱出来(尽管已经有一些成熟的ORM技术框架,如Hibernate,但程序员仍需要做大量的数据库代码工作),从而也无法从实质上提高工作效率。
1 面向对象数据库概述
面向对象数据库系统(OODBS)首先是一个数据库系统,即系统应具备数据库系统的处理能力,其次它也是一个面向对象系统,包含面向对象的概念和方法。因此,可以用下面公式来定义面向对象的数据库系统:
面向对象的数据库系统=数据库能力+面向对象系统。
面向对象数据库系统是为了满足新的数据库应用需要而产生的新一代数据库系统。在数据库中提供面向对象的技术是为了满足特定应用的需要。随着许多基本设计应用(如MACD和ECAD)中的数据库向面向对象数据库的过渡,面向对象思想也逐渐延伸到其它涉及复杂数据的应用中,其中包括辅助软件工程(CASE)、计算机辅助印刷(CAP)和材料需求计划(MRP)。这些应用如同设计应用一样在程序设计方面和数据类型方面都是数据密集型的,它们需要识别于类型关系的存储技术,并能对相近数据备份进行调整。
还有许多应用要求多媒体数据库,它们要求以集成方式和文本或图形信息一起处理关系数据,这些应用包括高级办公室系统的其它文档管理系统。
面向对象数据库从面向程序设计语言的扩充着手使之成为基于面向对象程序设计语言的面向对象数据库。例如:ONTOS、O-RION等,它们均是C++的扩充,熟悉C++的人均能很方便地掌握并使用这类系统。
面向对象数据库研究的另一个进展是在现有关系数据库中加入许多纯面向对象数据库的功能。在商业应用中对关系模型的面向对象扩展着重于性能优化,处理各种环境的对象的物理表示的优化和增加SQL模型以赋予面向对象特征。如UNISQL、O2等,它们均具有关系数据库的基本功能,采用类似于SQL的语言,用户很容易掌握。
2 面向对象数据库的特点
面向对象数据库将面向对象的能力赋予了数据库设计人员和数据库应用开发人员,从而扩展了数据库系统的应用领域,并能提高开发人员的工作效率和应用系统的质量。面向对象数据库具备如下特点:
首先,它是一个数据库管理系统,具有数据库管理系统的基本功能。一是永久性,数据库中的数据永久保存的;二是存储管理,包括索引管理、数据聚集、数据缓冲、存取路径选择、查询优化等;三是能并发控制,提供高于当前已有数据库管理系统同样级别的、对多个用户并发操作的支持;四是故障恢复能力,提供不低于当前已有的数据库管理系统同样级别的、将数据库从故障后的错误状态中核复到某个正确状态的功能;五是交互式查询功能,且是非过程化的、高效的、独立于应用的。
其次,它是一个面向对象的系统。只有支持面向对象数据库模型,支持复杂对象,具有运用各种构造机制从简单对象组成复杂对象的能力。复杂对象构造能力加强了对客观现实世界的模拟能力,且方法自然、易理解、具有对象标识,对象标识独立于其值而存在的特性可以极大地加快查询速度;具有封装性,对象既封装了数据,又封装操作,实现了信息隐藏,使用户不必知道操作的实现细节,只而利用设计者提供的消息即可访问对象。
它还具备应用领域所需要的一些特性,如版本管理、长事务和嵌套事务、模式演化等等。
3 面向对象技术在数据库中的实现
由于计算机网络、多媒体技术、CAD/CASE等新型数据库应用的需要,数据库领域开始借助面向对象技术来满足这些需要。面向对象技术借助对象、封装和继承机制可以实现对复杂对象和复杂数据模型的支持,将面向对象技术应用于数据库是解决当今许多新型数据库应用中遇到的问题的好办法,虽然面向对象技术和数据库的结合沿着三个方向发展,当前多数数据库生产商都在研发如何将面向对象技术应用到关系数据库中。将面向对象技术应用到关系数据库中可以有两种方式。
3.1 把面向对象技术中的对象作为关系数据库系统中的一种新的数据模型
关系表中的属性值包含对象指针,对象数据的操作在关系数据库之外进行。把面向对象数据模型(ODM)和关系数据模型(RDM)结合起来,对关系数据库管理系统进行扩充,但对象查询功能受到一定的限制。
3.2 把面向对象接口添加在关系数据库中
在关系数据库系统中增加一个对象到关系转换器,将上层的面向对象模式转化为关系存储模式,存放到关系数据库中。这样,在面向对象的数据库中关系存储模型位于底层,数据库用户可以利用标准的面向对象数据库语言进行查询处理,用户输入的面向对象数据库语言被转换成关系数据库语言,从而对底层的关系存储模式进行查询等处理,同时将操作结果按照对象方式返回给用户。这种实现方式使得数据库管理系统在实现关系模型和面向对象模型之间的模型转换时需要一定的开销,执行效率比直接面向对象数据库要低一些,但这种扩充方式实现比较简单。
面向对象技术通过映射接口和关系数据库相结合,面向对象数据库强调的是对象的属性、方法和对象间的关系,设计这种类型的数据库需要理解对象到关系数据库表的映射方法。这种映射方法通过将对象类生成为SQL语言中的数据定义语言(DDL)来将对象转换成一个好的概念层的数据模型(DDL)。
4 面向对象数据库技术的发展趋势及前景展望
4.1 面向对象数据库技术的发展趋势
面向对象数据库技术的发展并不是取代关系数据库系统,而是可望成为继关系数据库技术之后的新一代数据库管理技术。面向对象技术和数据库技术的结合有三种发展途径。
1)对象关系数据库管理系统
对象关系数据库管理系统既支持SQL语句,也支持面向对象技术,实现了传统数据库技术和面向对象技术的完美结合。全球的数据库生产商争相研发这种数据库产品,数据库生产商竞争的一个焦点是如何在现有的数据库中加入面向对象技术。
2)面向对象数据库管理系统
面向对象数据库管理系统以一种面向对象语言为基础,增加数据库的功能,主要支持持久对象和实现数据共享。利用类来描述复杂对象,利用封装方法来模拟对象行为,利用继承性来实现对象的结构和方法的重用。但是这种纯粹的面向对象数据库管理系统不能支持SQL语言,不能和现有的数据库结合起来,在扩展性和通用性方面受到限制。
3)对象关系映射数据库系统
对象关系映射数据库系统是在对象层和关系层之间建立一个映射层,使得数据源中的关系数据能够进入对象领域,并且作为对象供上层使用。
4.2 面向对象数据库技术的前景展望
面向对象技术是近20年来计算机技术界和工业界研究的一大热点。面向对象方法与先进的数据库技术相结合已成为当今数据库领域研究和发展的主要方向之一。
将面向对象技术应用到数据库系统中,使数据库管理系统能够支持面向对象数据模型的数据库模式。对提高数据库系统模拟和操纵客观世界的能力,扩大数据库应用领域具有重要的意义;将面向对象技术应用到数据库的集成开发环境中,使数据库应用开发工具能够支持面向对象的开发方法并提高相应的开发手段,对提高应用软件的开发质量和软件的生产能力是十分重要的。
从根本上讲,面向对象数据库技术对复杂对象既要有极强的表达和建模能力,又要有很强的存储和管理能力,这正是传统数据库技术面向复杂工程数据所难以胜任的关键技术。
摘要:面向对象数据库作为第三代数据库具有前两代数据库无法比拟的优点,把面向对象的方法和数据库技术结合起来可以使数据库系统的分析、设计最大程度地与人们对客观世界的认识相一致。面向对象数据库的技术方法并不高深,但它的设计思想却有着重要价值。
关键词:数据库技术,面向对象,关系数据库
参考文献
[1]邓娟,周冰.面向对象与数据库技术结合发展现状研究[J].科技资讯,2009,(3):5.
[2]Bruce Eckel.Java编程思想[M].4版.陈昊鹏,译.北京:机械工业出版社,2006.
[3]王功明,关永.面向对象数据库发展和研究[J].计算机应用研究,2006,(3):1-4.
[4]Alex Kriegel,Boris M.Trukhnov.SQL宝典[M].高伟等译.北京:电子工业出版社,2003.
[5]张珊靓,支丽平.面向对象的数据库技术初探[J].计算机与信息技术,2007,(15):316.
[6]朱亚楠,毛国平.面向对象数据库技术及其前景分析[J].软件导刊,2009,8(2),162.
面向对象的数据库技术 篇2
引言
复旦大学信息化校园建设从开始.在信息化的整体实施过程中,信息化部门意识到信息化数据是支撑职能部门业务发展的核心资源,因此大力开展共享数据库建设,重点解决不同业务系统的数据标准和格式统一,致力于推动各个应用系统之间的数据交换、信息共享.然而,校园信息化前期的建设过程将中心放在对业务部门的支持和服务,使得最终用户游离于数据产生和交换的信息化过程之外,用户与信息库之间存在着信息获取、信息处理和信息提供方面的巨大矛盾,这反映了信息化初期信息化部门普遍存在的对服务对象方面的关注度不够的问题.要使用和维护个人数据,师生需登录各个业务系统的相应模块,而业务系统越多,与“人”相关的数据(属性)就越多,对师生或者院系管理者而言,要全面的获取和使用这些数据的难度相当大.近两年,学校在发展规划中明确提出推进院校二级管理体制,将权、责、利下放到院系.
就实际落实情况来看,院系权力扩大,但院系视角的数据基础缺失,业务的信息化改革没有抓手,院校二级管理模式也标志着传统的分条块的数据组织方式已无法支撑院系的管理,现行的信息化架构制约着院系使用数据进行公共决策的能力.所以开放给职能部门的数据要在院系落地,需要良好的数据组织将数据利用简单化,这对学校信息化提出了新的要求,需要转换视角,面向教师、本专科生、研究生、博士后重新规划和组织数据.因此,在一站式服务规划下,复旦大学信息化提出建立面向对象的以“人”为核心的数据中心,并在此基础上形成了一表通、统一申报等服务,为院系二级管理的体制改革落地以及提升个人的信息化数据使用体验进行了创新性的尝试.本文对面向对象的数据中心的设计和规划进行阐述,并阐明具体实施效果.
1项目需求
从数据管理的角度出发,高校的教育信息化应用建设过程可以分为三个阶段:第一阶段,按照职能域构建业务系统,实现流程信息化,进行原始的数据积累.这个阶段的数据管理以建立、维护集中的基础数据平台为主,通过交换和集成将不同业务系统的数据进行统一;第二阶段,管理与服务前后端分离,实现服务信息化,按照用户在校的生命周期进行服务梳理和整合,改造服务模型;这个阶段的数据管理则在全局的业务数据基础上建立主题库和历史库,形成支撑上层业务的数据“中间件”;第三阶段,在流程信息化与服务信息化基础上,为个人、院系、学校提供数据综合利用与服务,实现支持在线与离线双重模式的数据填报、数据管理和数据分析.这个阶段的数据管理将数据组织模式进行改革,改变传统的以业务条线为主体的模式为以“人”为主体的面向对象的组织方式,为个人数据中心的建立奠定基础.目前大多数高校的数据管理思路仍以第一阶段和第二阶段为主,传统的数据组织和利用方式的劣势随着信息化服务的推进渐渐显露出来,主要体现在以下几个方面.(1)个人数据重复填报信息化建设虽然已经深入到了学校各项工作当中,数据共享程度越来越高,但个人数据重复填报的现象仍然非常普遍.
原因有两个方面:一是以个人为权威源的数据,如联系方式等,每个业务系统中都要涉及,甚至每张申请表单用户都要重复填写;二是一些业务部门下发的表格并没有信息化系统支撑,如工号、姓名、职称等核心数据几乎是各个表单必不可少的数据项.(2)数据梳理工作繁复信息化建设过程中已经积累的数据,是以管理视角进行存储的,在面向服务进行业务设计时,需要进行大量的转换和翻译工作,要求开发者全面了解其他业务系统的数据存储和转换方式,存在数据的重复清洗和梳理.以教学排课数据为例,教务管理系统中往往以课程代码为主键,关联课程信息、教师信息等;核算教师个人工作量时,则需要转换为以工号为主键,关联课时信息、选课名单等.在教师教学、年度考评等多项服务中都需要建立这样的转换关系,不利于服务的快速开发.(3)综合性服务难以获取综合数据服务的深化离不开坚实的数据基础,各个业务系统中分散存储的数据加大了综合性服务的建设难度.在前端服务与后台管理分离的建设模式下,从业务系统中剥离出来的个人服务,面临的仍旧是来自于各个业务系统中的零散数据,伴随着服务覆盖面的扩大,数据同步规则越来越复杂,同步压力日益增大,成为限制服务发展的瓶颈.(4)院系数据基础薄弱在传统的信息化管理模式下,数据主要掌握在管理部门手中,院系要了解教师的基本信息,如科研情况、生活情况等,需要到学校职能部门申请,准确性和实时性低.总而言之,学校的体制和流程的改革对信息化提出了新的设想,信息化业务的推进对数据基础服务模式提出了新的要求.复旦大学在信息化“一站式”服务平台的规划中,提出信息化数据管理的发展方向,拟将各级用户纳入数据生产、维护和流通的过程,为用户建立数据操作和管理的平台,简化用户管理数据的流程.个人数据中心就是在这种背景下规划设计的个人数据管理平台,它以面向对象的思路,将不同业务过程中涉及到的各种数据类别作为“人”这个对象的特殊属性,一方面对数据管理的维度进行了重新规划,方便利用,另一方面以数据托管的概念为用户提供了一个在线的、安全的、可维护管理的个人档案,可极大减少用户维护业务数据的复杂度,又提高了业务数据在信息化系统中的可用性.通过个人数据中心的收集和归纳,院系可轻松获取到管理范围内的非常全面的与个体相关的数据,按照教学、科研、人事等类别进行综合查询及统计,通过为院系量身定做一些具有共性需求的报表,减轻了院系的工作压力,促进了院系管理水平的提升.
2系统架构
2.1数据中心架构复旦大学的数据服务中心建设架构如图1所示,包括数据层、业务层和服务层.业务库从支撑全部业务转变为支撑以管理为主体的业务流程;主题数据库、历史数据库等形成学校决策支持库;共享数据库定位则更加明晰,负责数据交换与共享,分发数据字典,主导数据的一致性和规范性.个人数据中心库按照服务的特性将各个业务系统中的数据抽取出来进行重构,改变了原来的数据组织形式,按照人的属性进行数据存储规划,方便进行数据利用和服务.
个人数据中心库以及基于其上建立的个人数据查询与展示平台、综合服务平台和一表通离线填报平台的建立为高校信息化建设思路注入了新的活力,面向对象的数据模型可以有效地支撑教师、学生的个性化服务,实现管理与服务的松散耦合,推动院系二级管理的发展.以个人为权威数据源的数据放在个人数据中心库中进行维护,作为数据源同步到各个业务系统中,用户只要保证数据源头数据的准确,则各业务系统中的服务所引用的数据就是最新的.其次,对线下填报的表单提供基于个人数据中心库的离线下载服务,采用快速配置的方式配置业务部门的表单,将已有数据预填进去,用户离线或在线维护补充其他数据,完成表格,以 Word/Excel/PDF格式下载后自行完成申报.经过重新整合的数据存储方式更有利于个人服务数据的读取,对于教师岗位考核、学生毕业审核等需要广泛数据支撑的综合性服务,个人数据中心库的优势体现地更加全面.个人数据中心库建成之后,分散在各个业务系统中的与个人相关的`数据进行了集中.从业务系统中剥离出来的个人服务,将综合利用个人数据中心库的中的数据,而不再通过 ODI数据同步的方式获取多个外部数据源,以支撑个人服务的运行,大大减轻了数据同步与共享的压力,使数据接口唯一,数据利用更加便捷.
2.2数据组织模型个人数据中心抽取了与“人”相关的各类信息,进行重新整理和汇总,存储在个人数据中心库中,与各业务系统库、共享数据库、主题数据库物理上分离.个人数据中心库与业务库在同步机制上是一致的,只有自身产生的数据才作为权威数据源通过数据交换平台分发到各个业务库中,实现数据流通和共享.教师个人数据中心数据规划包括基本信息、能力/资质信息、入职/聘用信息、兼职信息、培养信息、考核信息、教学和人才培养工作信息、科研信息、财务信息、资产信息、校园生活信息、离职/退休信息等12大类55小类数据,如图2所示.本专科生/研究生个人数据中心规划包括基本信息、学习信息、生活信息、毕业信息4大类35小类数据,如图3所示.
2.3数据采集方法由于信息化建设的复杂性,在数据存储层面和数据抽取层面均存在诸多问题.如数据结构的差异、数据库的异构等,甚至包括单机版数据库的数据,Excel、TXT等文本形式的数据.个人数据中心要充分采集上述数据,必须根据其来源和特征的不同,采取多种采集方式.
一、共享数据交换平台抽取.由信息化部门自主管理的数据是最容易获取的,可以通过标准的数据同步和共享机制获得;
二、数据同步机制读取.由业务部门独立建设的业务系统,其数据对信息化部门是不公开的,由业务系统建立视图将数据推送出来,通过数据共享平台读取后存入个人数据中心; 三、数据交换平台采集.部分管理部门仍然存在由工作人员手工维护的外部数据,以DBF、Access等单机版数据库形式,或者Excel、TXT等文本格式存储.这些数据的采集难度比较大,通过自主开发的数据交换平台,实现用户手工数据与学校核心数据库的数据对接,用户不定期上传数据即可.四、数据清理后批量导入.业务部门在核心期刊网购买的论文、著作等权威数据,通过姓名、院系、电子邮箱等多个属性的匹配、清洗后批量导入个人数据中心.个人数据中心通过多手段、多渠道的技术实现方式充分采集到了学校范围内所有与“人”相关的属性信息,进行转换和处理形成权威的个人数据中心.
3实施成效
复旦大学个人数据中心建设始于,在应用层,对个人数据中心库的数据利用分为三方面:个人数据服务平台、综合服务平台、一表通离线填报平台.教师个人数据中心已经正式运行,研究生数据中心和本专科生数据中心正在测试阶段,页面风格如图4所示.师生只需登录到个人数据中心就可以查询到与自己相关的所有数据,改善了以往查询不到数据或者需要登录到各个业务系统中分散查询的状况.教师个人数据中心,集成了30类数据共982属性信息;研究生数据中心集成17类数据共600个属性信息;本专科生数据中心集成15类数据共518个属性信息,并且还在不断完成和拓展当中,已集成数据如表1所示.综合服务平台主要是已有信息化支撑的服务流程,实现个人在线填报和院系、学校在线审批等.包含个人数据维护、年度考评、教职工与学生出国出境申请、博士后出站管理、科研成果申报等多项个人服务.一表通离线填报是针对未实现信息化的业务表格而开发的平台.线下处理的方式是师生在网站上下载电子版的表格或业务部门下发纸质表格,由师生填写后上报,其中存在着大量的重复填报问题,一表通平台则将电子版的表格或者纸质表格做成报表形式,自动关联系统已有数据,提供给师生在线填写后下载或者离线下载后填写两种方式,有效地的解决了业务信息化和数据重复填写之间的矛盾,目前人事、科研、教学相关的多张电子表格已配置完成,极大地方便了用户填报。
4结语
面向对象的数据库技术 篇3
关键词:面向对象;关系型数据库;映射;类;属性
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)20-0012-02
1 引言
面向对象(Object Oriented,OO)是把面向对象的思想应用于计算机软件开发中,以对象为内核,以类、继承、封装、多态等概念构造系统,进行客观事物的软件开发设计的一种方法。面向对象,对象其实就是一个封装体,包含数据和控制命令。随着计算机技术和开发软件的不断升级,面向对象的方法和应用已经不仅仅局限于软件开发和程序设计,已经逐渐扩展到数据库系统、分布式系统、网络管理、人机交互等计算机领域,甚至对人工智能、计算机辅助工具、信息系统等產生深远影响。计算机和网络都离不开数据库,面向对象的广泛应用,也给数据库技术增添了新鲜血液。面向对象方法与数据库技术,尤其是关系型数据库如何有效结合,更好的支持数据库的应用,是一个非常值得研究的课题。
2 面向对象的关系型数据库
2.1 关系型数据库
电子商务、云存储、云计算等计算机信息系统,已经是当今信息技术的重要手段,而数据库技术是计算机系统的重要组成部分和核心内容。数据库类型有网状、层次和关系几类,其中关系型数据库以其集合的操作方式得到了最为广泛的应用。关系型数据库是一种建立在关系数据库模型基础上的数据库,用集合代数方法对数据库单元中数据进行处理,是一组相互之间有关联关系的表,表的关系通过相关字段进行关联,表中的数据可以根据需求情况进行存取且不用重新组织数据库表格。新建一个关系型数据库时,每一行包含一个数据实体,是被列定义的种类。目前应用较多的数据库有oracle、sqlserver、mysql等。
2.2面向对象分析法
面向对象分析法(Object-Oriented Analysis,OOA),是指一个软件开发项目在开发过程中,首先要对业务情况进行调研,然后用面向对象的思想对该项目业务进行归纳、分类、分析。OOA强调的是业务对象之间的关系以及对象的属性和行为。面向对象分析法使用户和设计者之间的沟通更容易,设计者能够更好地理解用户的需求,设计者了解了用户的需求,才能更好地设计出用户与数据库之间的映射方式,从而设计出用户满意的数据库。
OOA方法的程序设计,从结构框架来说,一个是针对开发者的外部层,外部层是应用程序的整体设计;内部层针对物理存储,称为物化视图,是基于远程表格的,也可以称之为快照;概念层介于外部层和内部层之间,是内外部的映射,用DDL表示,概念层是关系型数据库的真正表现形式。对象与关系型数据库通过映射发生关系,映射方法就是将关系型数据库进行概念层的设计。从对象到关系型数据库的映射内容包括:属性与列的映射,关系型数据库中的继承,类与表的映射,映射的关联,聚合和组合以及实现关系等。
将对象建模和映射的过程就是将对象转换成概念层的数据库模型,对象模型转换为关系型数据库的映射有如下关系:
1)每个对象是唯一的,有唯一的标识符,具有唯一性。对象的标识一般用主键或者是系统自动生成的伪标识符来标识,而不是通过描述对象的属性来标识。
2)类与关系型数据库中的表的转换,可以通过直接调用表的名称,或者可以通过在类的名称前加前缀的方式修改成表的名称来实现。
3 基于面向对象技术的关系数据库的设计方法
3.1 整体思路
基于面向对象技术的关系型数据库的设计方法,首先要确定应用程序中的领域类,领域类中将数据信息和对数据的操作、调用方法进行了封装。领域类实例化,就得到对象,因此,需要提前把对象的存储、地址、检索方法、调用方法等问题设计好,做好准备工作。
在面向对象的关系型数据库中,数据通过对象形式存储到数据库中,并且对象之间的关联关系是自动存储的。关系型数据库本身不存在集合和分解的问题,可以由与对象相关的状态图像构成。面向对象的关系型数据库是通过对对象进行查询、检索、调用的,不存在对某个表的一行或一列进行某些操作。因此需要提前定义对对象的各种操作方法。比如:writeObject()是一个写入并存储一个对象及所有对象相关;read Object()是读取一个对象及所有对象相关。每个对象有唯一的标识ID,在写入和读取时通过唯一的标识ID进行。
以消费者对电子账户的写入、读取操作为例子,来说明面向对象数据库数据存储模式,如图1所示。将消费者对电子账户的操作对象的属性描绘成字段,指向其他对象需要映射到相应的外部关键字上,此处的操作动作不能封装。数据库中的每一个表对应一个类,对数据库中的表的操作设定为函数。
3.2 对象映射成关系数据库
RDBMS的表都是二维表,一个二维表是一个管理单元,二维表及表与表之间的关联关系用来描述对象模型的属性,即对象模型与关系型数据库的映射关系。将每个对象的类存储到数据库的表中,一个类对应一个对象实例,并进行存储。不仅对象实例映射到关系型数据库中,对象之间的关联关系也要映射到关系型数据库中,这样才能进行后续的操作。
对象之间的关系有四种:关联、继承、聚合、组成。关联是关系型数据库中对象之间的关联关系,聚合不仅需要对关系型数据库的整体进行操作,还需要对部分进行操作,即读取时需要整体读取的同时也需要在部分数据中进行读取。关联是不需要的,在关联中存储和读取的执行操作不明显。关联和聚合的区别在于对象之间的联系程度不同。
对关系型数据库中的数据不但有存储、调用等动作,还有删除的动作,那么将数据库对对象的存储和删除也是一样,对象映射成关系型数据由一些规则,如下:
1)一个类与一个库表对应映射,也可以多个类与一个库表对应映射。
2)类中存在父子关系的类,映射关系时可以分别与父和子类分别映射,或者不对父类进行定义,让子类具有父类的属性;不对子类进行定义,让父类具有子类的属性。
3)映射关系定义为一个表,包含一对一、一对多、多对多等关联关系,也可在类表之间定义外键。
4)聚合的方式有两种:一种是用一张表将所有对象类的属性合并;一种是分别用两张表分别将对象类的整体和部分分别合并,利用外键关联整体与部分的关系。
5)有些类是没有属性的,没有属性则没有映射表。
6)映射后的关系型数据库表需要进行冗余操作,使其关系范式合理。
4 结论
面向对象的关系型数据库系统以其模型简单、数据独立的优势,成为数据库技术发展的主流方向,本文针对面向对象的技术和关系型数据库的特点,将两者相结合,研究了将面向对象技术方式应用于关系型数据库,进行系统设计方法的研究,重点描述了对象映射成关系数据库的方法。
参考文献:
[1] 杨玉芬,李明明.高晓旸对象管理在面向对象数据库中的应用研究[J].吉林大学学报(信息科学版),2013,9(5):548-553.
[2] 肖刚.面向对象数据库在教学信息管理系统中的应用[J].硅谷,2012(6):79.
[3] 陆登,李善平,郑春昭. 基于对象数据库的扩展Java集合框架[J].计算机应用与软件,2011(1):133-136.
[3] 陈文宇.面向对象的关系数据库设计[J].电子科技大学学报,2002(1):53-56.
面向对象的数据库技术 篇4
关键词:面向对象数据库技术,对象/关系映射技术,网络技术
通讯手段及通讯工具在实际应用过程中, 人们在互动交流过程中会受到范围及方式等方面的限制。但是伴随着互联网技术的发展及完善, 人们在互动交流过程中所具有的局限也被突破, 人们互动交流能够逐渐无线及普适, 网络技术的完善, 在其中起到关键作用, 能够有效推动互动交流的发展。
1 网络技术发展初期及其对互动交流的影响
1.1 网络技术的表现形式
网络技术在刚开始发展过程中, 最具有代表性的技术主要有两个, 分别是报文分组交换技术与WEB技术。报文分组交换技术主要表示的是将数据分解为到数据包内, 利用通讯阶段对于数据信息进行传输, 还能够有效保证数据信息的完整性, 其中主要特征就是在数据信息传输过程中, 容易出现数据包丢失的情况, 这就需要对于数据包进行重新传输, 能够有效降低节点在数据信息传输过程中的重要性, 网络系统内不同节点能够有效连接。WEB技术在实际应用中能够满足用具对于信息交流及搜索, 利用互联网技术提供真毒性服务, WEB技术产生最为显著标志就是图形浏览器的出现。
1.2 对互动交流的影响的表现
网络技术初期发展过程中, 网络互动交流形式主要特点就是延时通信的出现。网络技术在刚开始推出的之后, 主要目的就是满足军事在发展中的实际需求, 伴随着计算机技术不断完善, 已经逐渐成为人们实际生活中主要互动交流的方式。在这个时间段内, 网络互动交流最为主要的核心就是文字互动交流, 双方在实际共同交流过程中, 主要通过文本内容的方式进行沟通交流, 在这个过程中所出现的图形也是十分简单, 交流过程中并不需要受到时间及空间上面的限制, 能够根据自身实际情况传输电子邮件, 但是这个时间段内互动交流程度较低, 造成信息在沟通传输过程中容易出现延时性。
2 从面向数据库技术和对象/关系映射技术角度进行比较
2.1 面相数据库技术
面向对象数据库技术是数据库技术与面向对象技术发展到一定水平之下的成果, 在对于复杂对象进行描述的时候, 主要应用的方式是使用类的封装方式, 进而对于复杂对象的行为进行模拟。面向数据库技术在实际应有中最为显著特点就是代码及数据并不是独立存在的, 主要是通过函数关系对于数据进行计算。
2.2 对象/关系映射技术
面向对象软件在实际开发过程中, 根据有关软件开发方法, 进而形成了对象/关系映射技术。对象/关系映射技术是以关系模型数据库结构作为基础, 映射对象模型对于有关对象进行描述, 人们在实际操作过程中, 能够具体将所接触到的语句进行描述, 所应用的对象及操作方式十分简单便捷, 如图1所示, 为对象/关系映射技术结构示意图。
2.3 面向数据库技术与对象/关系映射技术的比较
面向数据库技术在实际应用中, 所应用的数据库类型是新类型, 并不是传统关系型数据库, 这种数据库类型能够有效解决传统数据库所具有的阻抗失谐问题进行解决。对象/关系映射技术在实际应用中, 能够有效将关系性数据库与对象数据进行连接, 承担着一个相互转化数据的责任, 但是在技术仅仅能够将数据库内的对象划分为表格, 并没有有效解决传统数据库类型所存在的阻抗失谐问题。
3 面向数据库技术和对象/关系映射技术的优点及缺点
3.1 面向数据库技术
面向数据库技术在实际应用中, 能够从本质上面解决传统数据库所存在的阻抗失谐问题, 维护性能显著提高。要是从维护角度进行分析, 面向数据库技术最为显著性能就是耦合性能十分突出, 能够在不同网络平台上面应用, 所应用的查询方式较为简单。虽然面向数据库技术在实际应用中拥有十分显著优势, 但是还存在一定缺点, 首先就是面向数据库技术无法兼容SQL标准, 无法对于现在关系数据库进行转换, 主要现在关系数据库所应用的接口都是SQL标准。
3.2 对象/关系映射技术
对象/关系映射技术在实际应用应用中拥有良好的数据库转换性能, 在对于数据操作过程中, 能够根据面向对象的形式, 提高数据库性能。在数据操作方面, 能够直接对于业务对象进行处理, 并不需要对于储存方式及语句进行分析, 同时在宽展及维护方面也具有重要作用。但是对象/关系映射技术在实际应用中却存在一定缺点, 最为主要的就是对象/关系映射技术并没有解决传统关系数据库所存在的阻抗失谐问题, 其次就是在数据缓存方面存在一定缺陷。
4 结论
简而言之, 在对于对象/关系映射技术与面向对象数据库技术比较分析之后, 能够发现对象/关系映射技术与面向对象数据库技术在实际应用中所存在的优势及缺点, 应用效果也存在一定差异, 能够有效推动对象/关系映射技术及面向对象数据库技术的共同发展, 对象/关系映射技术与面向对象数据库技术在数据库内共同应用, 对于数据库系统发展具有重要意义。
参考文献
[1]赖朝新, 瞿晓静.面向对象数据库技术的两种发展途径[J].现代情报, 2014 (11) .
[2]汪琛, 胡浩民.面向对象数据库技术的发展与前景[J].福建电脑, 2015 (05) .
[3]王意洁.面向对象的数据库技术[M].电子工业出版社, 2013 (03) .
[4]何治成.面向对象的电力系统异构应用信息共享研究[D].重庆:重庆大学, 2015 (06) .
面向对象的类测试技术研究 篇5
关键词:面向对象; 软件测试;类测试
中图分类号:TP393文献标识码:A文章编号:16723198(2007)11027202
1面向对象软件的类测试
面向对象软件从宏观上来看是各个类之间的相互作用。在面向对象系统中,系统的基本构造模块是封装了的数据和方法的类和对象,而不再是一个个能完成特定功能的功能模块。每个对象有自己的生存周期,有自己的状态。消息是对象之间相互请求或协作的途径,是外界使用对象方法及获取对象状态的唯一方式。对象的功能是在消息的触发下,由对象所属类中定义的方法与相关对象的合作共同完成,且在不同状态下对消息的响应可能完全不同。对象中的数据和方法是一个有机的整体,测试过程中不能仅仅检查输入数据产生的输出结果是否与预期的吻合,还要考虑对象的状态。模块测试的概念已不适用于对象的测试“类测试将是整个测试过程的一个重要步骤,它与传统测试方法的区别可用图1来表示。
面向对象软件的类测试与传统软件的单元测试相对应,但类包含一组不同的操作,并且某特殊操作可能作为一组不同类的一部分存在。同时,一个对象有它自己的状态和依赖于状态的行为,对象操作既与对象的状态有关,但也可能改变对象的状态。因此,类测试时不能孤立地测试单个操作,要将操作作为类的一部分;同时要把对象与其状态结合起来,进行对象状态行为的测试“类的测试内容分为:(1)基于服务的测试(测试类中的每一个服务);(2)基于状态的测试(考察类的实例在其生命周期各个状态下的情况);(3)基于响应状态的测试(从类和对象的责任出发,以外界向对象发送特定的消息序列的方法来测试对象的各个响应状态)。如图2所示。
2类测试技术
2.1基于服务的类测试技术
基于服务的类测试主要考察封装在类中的一个方法对数据进行的操作,它可以采用传统的白盒测试方法。为克服软件测试的盲目性和局限性,保证测试的质量,提高软件的可靠性,下面我们介绍一种类的服务的测试模型及相应的测试策略。
BBD通常有两种获取途径。一是采用逆向工程的方法根据源程序画出流程图,然后构造出BBD。但这毕竟是在缺少软件开发前期的分析、设计文档或文档不齐全的情况下退而求其次的办法。当源程序不正确时构造出来的BBD就是错误的。另一种途径就是追根溯源,在软件的分析、设计阶段就根据测试的需要构造出相应的BBD。这样就能从根本上解决问题,正确地指导类的服务的测试。
2.2基于层次增量的类测试
层次增量测试的基本思想是:首先分别测试父类的各个成员函数,再测试成员函数间的相互作用,把测试用例和执行信息保存在/测试历史中,在测试子类时,根据父类的测试历史修改部分的定义以及实现语言的继承映射来决定子类中的哪些特征应当重测试以及父类的哪些测试用例可以复用。
这种根据类间继承关系的层次特性对类进行增量测试的技术是由M. Harrold等人提出的,其特点是复用父类的测试信息来指导子类的测试。每一个子类看作由两部分组成:从父类继承的部分和修改部分,如图3所示,其中符号“|”为并置运算符。
类中的特征被分为6种类型:新特征:子类中新定义的特征;递归特征:在父类中定义、未被子类重定义的继承特征;重定义特征:在父类中定义、又在子类中重定义的特征,重定义特征在子类中屏蔽了同名(同参数表)的父类特征;虚新特征虚特征是指其实现尚不完整、留待子类重定义的特征,虚新特征是指子类中新定义的虚特征;虚递归特征:在父类中定义的虚特征,被子类继承后未重定义的特征;虚重定义特征:在父类中定义的虚特征,在子类中被重定义的特征,重定义特征在子类中屏蔽了同名(同参数表)的父类特征。
父类中各个成员函数的测试采用传统的单元测试技术,可以把传统的基于规约和基于程序的测试技术相结合选择测试集。类中每一个成员函数的测试历史是一个三元组{mi(TSi,test),(TPi,test)},其中mi为成员函数;TSi为基于规约的测试集;TPi为基于程序的测试集;test标识该测试集是否要(重)运行。
同一类中成员函数的相互作用的测试实际上是一种集成测试,如何进行这一测试是根据类图来确定的。在类图中,节点表示类中的一个成员函数或数据成员,有向边表示发送消息。测试数据集的选择也可应用基于规约和基于程序的测试方法。测试历史的形式也是一个三元组{mi(TISi,test),TIPitest},其中mi是类图中某一子图的根节点;TISi是基于规约的集成测试集;TIPi是基于程序的集成测试集; 取表示该测试集要全部(重)运行,取表示部分(重)运行,取表示无需(重)运行。一个类的测试历史是各成员函数测试历史的集合和集成测试历史集合的并集。
2.3基于流图的类测试技术
把传统的基于流图的测试技术应用于类测试提出了一种构造类流图的框架。在类流图中,节点表示操作,操作A和操作B之间的有向边表示允许某引用类(client)在调用操作A之后调用操作B,确定节点间是否可以联边的依据是该类的规约。
传统程序流图的测试充分性准则可以在类流图中找到对应,如类流图的节点覆盖要求测试时的操作序列应使每个操作至少执行一次,分支覆盖要求测试时的操作序列应覆盖类流图中的每条边至少一次。还可以在类流图上给出类似于数据流的定义性出现!引用性出现、定义-引用对等概念。在类流图中,所有对象的定义性出现和引用性出现根据操作(节点)中是否定义或引用该对象来确定,然后在谓词性引用和控制操作。计算性引用和非控制操作之间建立对应关系,从而可以类似地给出数据流准则中的定义覆盖准则、引用覆盖准则和定义-引用路径覆盖准则等。图4给出堆栈类(类名为Stack,T为栈元类型)的类流图,表1给出每个操作的定义性和引用性使用情况。
基于流图的类测试技术把传统的基于规约的测试应用于类测试,完全依赖于类的实现,系统地而不是随机地产生测试用例,且可全部自动化。
参考文献
[1]龚红仿,孙乐,仝青山,柳湘华.面向对象的类测试方法研究[J].长沙电力学院学报,2006,(8).
面向对象的数据库技术 篇6
1 概述
面向对象数据库系统必须满足两条准则:首先它是一个数据库管理系统(DBMS),其次它是一个面向对象的系统。可以从下面三个方面来说明这两条准则的含义:
(1)数据模型
数据模型必须支持以下基本概念:类型/类、对象、封装、复合对象、数据抽象、继承、操作重载、滞后联编、对象标识、多态性、计算完整性和可扩展性等。其中复合对象概念包括支持生成复合对象的构造器:元组、集合、包、列表、数组等[1]。构造器应具备正交性,即任一构造器可以作用到任一对象上。
(2)数据库管理系统
除具有传统DBMS所必备的功能,如并发控制、故障恢复之外,还必须支持持久性、二级存储、即席查询、长事务处理及模式演进,具有版本管理、约束和事件机制,适合在分布式环境下协同工作(Cooperative Work)[2]。
(3)用户数据库访问界面
支持消息传递,提供计算能力完备的数据库程序设计语言。解决数据库语言与宿主语言(程序设计语言)的不匹配问题,提供类似SQL的非过程化查询功能。
由此可见,OODB具有许多传统数据库所不具备的功能,能较好地满足非常规应用对数据库的要求。而且作为一种新型数据库系统,面向对象数据库系统首先必须是一个数据库管理系统,必须具有数据库管理系统的基本功能,主要有:持久性、并发性、外存管理、故障恢复和即席查询等。其次,它还必须是一个面向对象的系统,要支持面向对象的数据模型,具有面向对象的特性,包括:支持复杂对象和对象标识,具有封装性(encapsulation)、继承性(inheritance)、多态性(polymorphism)、允许重载(overloading)、可扩充等。除此之外,为了能更好地满足新应用领域的需求,它还应具有模式演变、版本管理、事务管理等一些增强功能。
2 电子商务中的应用分析
2.1 系统的运行环境
操作系统:Windows NT 4.0;数据库:Microsoft SQL Server7.0;LDAP:Microsoft Site Server;Web Server:Microsoft IIS4.0;硬件环境:DELL Power edge 4400服务器,XEON PIII 800MHZ处理器,1GB内存,54GB硬盘。
2.2 基本设计思想
本文研究的电子商务系统整体设计基于面向对象思想,根据用户需求,定制各个功能模块类,严格地对类进行了封装,并制定了规范的内部和外部接口。涉及查询、更新效率的关键数据,尽量避免非标准接口访问,全部采用LDAP封装,配以数据库表结构,使得最终系统数据实现大容量、高效率。
系统以人员为对象建立数据模型。可以实现:人员信息易增加和修改,易于实现个性化定制;当对象角色发生变化,或存在多重角色可以从容实现;易实现对象属性的转移,如业务人员离开公司时可以将其业务关系移植给其他业务人员。面向对象的交易数据库采用工作流的设计思想,以传统办公流为基础建立数据模型,方便实现业务流程的定制。
2.3 软件体系结构
整个系统既要和原有企业管理进行结构上的整合,又要使整个系统结构具有延续性和可扩充性,所以我们将电子商务系统应用体系结构分为三个部分:用户表现层、业务逻辑层、数据服务层。其软件体系结构图如图1所示:
该三层体系结构架构的电子商务系统有利于资源的优化。由于一个电子商务系统功能被分为三个部分,因此可以根据各层负载的情况,可升级以相应的硬件平台来满足不断增加的负载需求,使得系统具有良好的可扩展性。当由用户表现层向业务逻辑层发出请求时,业务逻辑层决定使用哪个数据源来满足其请求,通过使用相同的调用接口,电子商务逻辑层就可以对任何可用的数据源进行访问。同时,访问特权又可以指定或内置于三个层次的每一个层次中,以便提供三个级别的安全性。
2.4 对象交流及子表的操作
对象之间的“交流”是对面向对象数据库访问的基础。如果把面向对象数据库看成是一个系统,那么存储于面向对象数据库中按照一定数据模型和结构关系组织起来的数据对象,就是这个系统中的一个个子系统。敏感对象所能够接收的消息,实际上是根据对象中可能的操作来决定的。每一类操作设计一类消息,称之为消息模式,它规定了消息的基本格式。在给定的消息模式中设定一定参数,就可以形成具体的消息,对应对象中的各种具体操作。一个对象可以接受多种消息模式,对应对象内部的多种消息具体操作。
施加子表的约束主要是为了防止碎片的产生。一个明显的区别是,在一些情况下,一个子女(子表中的记录)只有在当其兄弟存在时才能被删除或修改,如在O-M,M-M约束中,即最后一个存在的子女是不能被删除或修改的[3]。此时,可以对父记录进行即时的更新,或者禁止该操作。而子表约束的实现可以通过在数据库中加入触发器;更合理、可行的方法是将子表一方的限制,在业务层中实现。子表操作的约束如表1所示。
2.5 对象布置的实现
Servlets和EJBs都需要被部署,然后J2EE服务器才能管理他们。部署的主要步骤如下:创建EAR-JAR文件;将EJB和Web模块组合,在部署描述符文件中加入结构和装配信息;加入安全角色和环境属性;运行效验工具,找出模块中的错误;如果没有错误,则执行装配程序,运行无误后,则进一步创建J2EE应用。实现的关键代码如下所示:
当一个Servlet调用EJB对象时,需要先通JNDI服务搜索,一旦获得对象的引用,便可以找到其Home Interface:
获得会话Bean的Home Interface后,通过它的create方法来创建EJB的远程接口对象。最后利用Remote Interface,调用EJB商业方法实现客户要求的功能,如将商品添加到购物篮,购买商品:
3 结语
面向对象数据库系统是为了适应数据库应用领域的不断扩大和需求的日益复杂而研究开发的,经过广大研究工作者的努力,己有一些研究成果,出现了一些面向对象数据库系统的产品和原型,并且在电子商务中有了一定的应用。但是,要真正使其象关系数据库一样被广泛应用,还需要进一步的工作。一方面,面向对象数据库系统本身还不够完善,还需要深入的研究和探讨;另一方面,要让用户接受一种新的数据库系统还需要一段时间。
摘要:面向对象(Object-Oriented,OO)数据库系统是数据库与OO技术相结合的产物,作为一种新型的数据库系统,它不仅拥有基本功能,而且支持面向对象的数据模型。本文结合了电子商务系统,阐述了面向对象的数据库,重点研究了面向对象数据库系统在电子商务中的应用,并对其设计思想、软件架构、对象操作及布置等做了较为深入的介绍和技术探讨。
关键词:面向对象数据库,电子商务,对象及子表操作
参考文献
[1]王功明,关永,赵春江,王蕊.面向对象数据库发展和研究[J].计算机应用研究,2006,(03):34-37.
[2]吕向风,陶莉.简述面向对象数据库中对象的存取[J].福建电脑,2007,(04):46-49.
面向对象的数据库技术 篇7
本文针对在开发设计数据库时schema经常变动而导致原有存放在数据库中的数据失效, 频繁将数据导入导出的问题, 提出一种基于schema可变技术的面向对象数据库, 使得数据库能够在schema变动的情况下尽量保证能够继续使用以前的存储的数据而不必重新导入数据, 提高数据库的可用性。
1 数据库的概要设计
依据分层设计的思想是将每个模块划分为不同的层次。整个数据库共分为三个层次, 从上到下分别是接口层、数据操纵层、数据存储层, 结构如如图1所示。
1.1 用户接口层
该层是数据库提供给用户的接口, 主要是用于规范客户端程序如何访问数据库的应用接口, 其提供了诸如查询和更新数据库中数据的方法。该层主要包含两个部分:
(1) 程序接口:增加 (Create) 、查询 (Retrieve) 、更新 (Update) 和删除 (Delete) 操作是数据库的最基本的操作, 它们主要被用于描述软件系统中持久层的基本操作, 同时也是数据库中最为常用的操作。
(2) 管理接口:提供数据库的基基本本方方法法, , 如删除schema结构, 查看数据库表中中数数据据内内容等。
1.2 数据操纵层
该层主要负责对数据库内的对象象进进行行操操纵, 包括反射Java的类结构、类的sscchheemmaa的的存储、索引的维护以及创建等, 主要要分分为为以以下下几个模块:
(1) Refl ector:反射 (refl ectoorr) ) 是是JJaavvaa语言提供的一种动态的获取加载到JJVVMM中中的的类的方法、属性以及方法和属性上的的标标注注的的技技术。在schema可变技术的面向对象数数据据库库中中, , 在很多的地方需要借助到Java语言的的反反射射技技术, 如类结构的解析、schema的检测测、、实实例例中数据的获取等。
(2) Classic Metadata:主要是用用来来存存储储解析出来的类的结构, 避免对已经解解析析过过的的类的结构再次进行解析, 管理类的版版本本以以及及schema的演化。
(3) Index Query:主要是对索引引进进行行管管理。它的功能体现在以下几个方面:: (1) (1) 当当需需要要创建索引时, 根据创建索引的条件, 创创建建索索引引;; (2) 当查询条件使用到索引时, 根据索索引引的的特特点点以及查询的方式, 选择一种最为适合合此此种种查查询询的索引操作; (3) 当用户插入的数据造造成成索索引引的的更新时, 更新和调整索引等; (4) 对索索引引的的状状态态进行管理和监控。
1.3 数据存储层
该层主要用于维护已经存储在数数据据库库中中的数据, 包括类的存储的组织方式, , 类类的的索索引引的结构等。主要分为以下几个模块::
(1) Class Index:由于在面向对对象象数数据据库中每个类的实例都是用UUID标识识的的。。根根据UUID的重复率低、长度固定、数数据据结结构构为为string类型的特点, 构建索引全部类的实例的数据结构。
(2) Class Field index:由于在每个类中, 可以依据每个类的属性, 为某个属性建立索引, Classic Field index提供了索引, 方便用户快速查询到需要的数据。
(3) ACID transection slot:ACID是指事务的原子性、一致性、独立性及持久性, 是数据库必须具备的性质。ACID transection slot就是为了保证ACID在数据库中的实现而设置的。同时它也提供了部分基本的数据结构, 为数据的存储提供了可能。
2 schema可变技术的实现
2.1 面向对象数据库中的Schema可变技术
数据库的Schema是对数据模型的实现。Schema表示了数据库的结构或者是数据库中的一个名字空间, 包含了一组表结构、视图、和存储过程等对象。在面向对象数据库中, 数据库的schema是通过类的结构来表示的, schema的变化可能会导致数据库中存放的原有数据失效或丢失。
Schema可变技术即意味着当数据库的类结构发生变化时, 如果该类的部分数据以及数据的限定与上一个版本的类结构中存储的数据以及数据限制兼容时, 则上一个版本的类结构存储的数据依然可以在当前的类结构当中使用, 不必进行数据库中数据的调整或者更新操作。再该面向对象数据库中, 通过建立的类结构与数据库中存储的数据做映射的方式实现schema可变技术, 我们使用的映射方法为:将类的名称与版本号相结合的方式——“原类名+版本号”为类命名。
数据库支持schema可变技术可以带来很多的优势:
(1) 尽可能的保留已经存储在数据库中的原始数据, 使其在schema发生变动时, 不丢失数据。
(2) 在schema变动时, 不必对数据库进行调整或者更新的操作, 简化了数据库管理员的工作。
2.2 面向对象数据库中Schema变化的原因
Schema变化是由类结构的变化造成的, 类结构变化的原因可分为以下几种:
2.2.1 由于类自身的变化而造成的
(1) 增加属性。
(2) 减少属性。
(3) 改变属性的类型。
(4) 改变属性的约束条件。
2.2.2 由于父类的变化而造成的
在面向对象语言中存在继承关系, 即子类继承父类中的属性, 当该类父类的结构发生改变的时, 子类的结构会同时发生改变。
2.3 Schema可变技术的主要流程
在Schema可变的面向对象数据库中, 实现schema可变技术的重要操作位主要有三个, 分别是是Schema的解析, Schema发生变化后的处理以及如何将Schema中的数据添加到不同版本的类结构中。
2.3.1 Schema的解析流程
Schema的解析是指获取指定类内部的属性以及属性的标识等信息的过程, 解析完之后会将解析后的schema信息添加到数据库中。其具体流程如下所示:
(1) 将类名加入队列中, 并从队列中取出一个类名进行解析, 如果该类为object则放弃解析, 如果不是object则转到2。
(2) 将该类的父类父类添加到队列中。
(3) 逐个解析该类的属性。
a.如果是基本类型, 则解析其名称以及约束。
b.如果不是基本的类型, 则解析器名称以及约束, 并将该类的名称加入到队列中。
(4) 转到1。
2.3.2 Schema变化后的对Schema处理
Schema变化后, 数据库能够识别出该schema的变化, 然后根据解析出来的类结构, 生成新的版本信息, 如果该类与数据库中存储的该类以前的版本信息兼容, 则生成新的类结构和版本号, 具体流程如下所示:
(1) 检测该类的结构是否存在, 如果存在则不再进行类结构的演化并删除该结构;如果不存在, 则转到 (2) 。
(2) 根据兼容性列表 (如表1所示) , 检测该schema中保存的类的结构是否与其它的版本相冲突, 如果不冲突, 则存储该类的结构, 转到 (4) ;如果冲突, 则给出冲突的原因、版本号等信息。
(3) 根据已经存在的类的结构, 生成新的版本号。
2.3.3 Schema变化后对类的处理
当程序进行查询操作时, 根据传递过来的客户端的schema信息, 查询在服务器端是否已经存储与该Scheme相应的版本, 如果不存在, 则返回空;如果存在, 则依据查询条件进行查询, 具体流程如下所示:
(1) 从数据库中获取该类的所有数据, 如果数据库中所有的类都应解析完毕, 则退出解析过程并返回结果;如果还有未解析的类, 则取出一个, 进行解析。
(2) 根据数据库中存储的类中的属性和类的版本信息, 逐一解析数据库中存储的类的每个属性, 并将值填入查询结果中。
a.在数据库中的类不包含该类属性时, 如果该属性允许此值为空, 则将该属性设置为null;如果该属性不允许为空, 则放弃对数据库中类的解析, 转到1。
b.类中同名属性的类型发生改变, 则放弃对数据库中存储的类的解析并转到 (1) 。
c.类中属性的标示发生改变, 如果兼容则继续解析, 如果不兼容, 则放弃对数据库中存储的类的解析并转到1。
d.如果数据库中的类包含该类的属性时, 如果兼容则继续解析, 如果不兼容, 则放弃对数据库中存储的类的解析并转到1。
(3) 转到1。
3 系统测试
3.1 面向对象数据的存取
3.1.1 构造POJO类结构
3.1.2 将name设置为test, age设置为20, 并将该类数据存入数据库中。
3.1.3 从数据库中取出数据, name=test, age=20
由此可以说明, 数据库能够完成对类结构的解析, 并可以取出相应的数据。
3.2 在兼容的情况下schema变更测试
3.2.1 更改后的Person类
在这里增加一个属性description, 它为String类型的, 默认的情况下, 允许该字段为null, 所以属于能够与前边所存储的类的实例相兼容。
3.2.2 在服务器端输入命令对版本进行查看, 版本信息显示如下内容
3.2.3 读取数据, 读取结果为:Name=test, Age=20, Description=。
在这组测试中, 可以得出该数据库所提供的schema可变技术是正确的。
3.3 在不兼容情况下schema变更测试
3.3.1 更改后的Person类
在这里将原有的名称为age的属性由int修改为Age类。
3.3.2 使用该类添加数据, 则返回错误信息
在这组测试中, 可以得出该数据库可能够识别不兼容的schema, 并提示有冲突的版本。
4 总结
基于schema可变技术的面向对象数据库实现了schema可变技术, 使得数据库在schema变化的过程中, 尽可能的保留数据库中存储的原有数据, 减少数据库中数据因schema变化而引起的数据丢失问题, 提高面向对象数据库的可用性。但是其也有部分不足的地方, 如不能够很好的支持泛型、对静态变量不能够做到有效的支持、不支持事务等。在以后的工作中, 将根据面向对象数据库的发展逐渐的完善该数据库, 使其融入新的技术融入更多的技术并且在已有的技术上进行创新。
参考文献
[1]Object database[N/OL].2010.http://en.wikipedia.org/wiki/Object_database.
[2]埃史尔.Java编程思想 (第四版) [M].北京:机械工业出版社, 2007.
[3]王珊、萨师煊等.数据库系统概论[M].北京:教育出版社, 2006.
基于面向对象的数据库应用分析 篇8
1 面向对象数据库概述
面向对象是一种对现实世界理解和抽象的方法, 应用于数据库则表示程序设计方法, 借鉴人类思维方式, 把客观世界中的实体模型化作为认识对象, 包含对象、方法、类、消息等基本概念。面向对象方法可以把实体对象抽象成对象类, 变为抽象的数据类型, 允许用户自定义, 因而具有抽象性;操作方法与数据可以一起存放于某一特定对象中, 只能通过该对象实现数据的操作, 具有封装性;面向对象方法中, 不同对象接受同一信息, 可能具有不同含义, 因而具有多态性。面向对象技术与现实世界实体对象具有一一对应关系, 相对传统数据库具有内容海量性及结构复杂型的特点, 是新型数据库得以建立的基础。
面向对象数据库 (OODBS) 是面向对象系统与数据库功能的整合, 既具备数据库系统具有的事物管理、并发控制、恢复、查询、版本管理、完整性、安全性与持久性的能力, 又支持完整的面向对象概念和控制机制。
2 面向对象数据库的优势
2.1 易于使用
关系数据库虽然采用表、行、列的形式构建了简单且容易掌握的用户界面, 但是很少人使用SQL语句编程。关系数据库提供商提供了大量的工具将SQL与开发者屏蔽开, 在后台自动产生相应的SQL语句。目前关系数据库在易用性与可得性方面较面向对象数据库有一定的优势。表单形式的简单数据的容易使用必须建立在能够良好的映射到程序的数据结构中, 如果数据结构复杂, 则简单的表单形式数据无法与程序相适应。因而需要一部分熟悉数据库DBMS运作并且精通SQL语言的数据库专业设计人员, 将数据库表单结构与应用程序数据结构进行相互转化, 在一定程度上增加了数据库的应用难度。面向对象的程序设计人员使用OODB后, 能更加简单、直接使用面向对象数据库, 省去了中间的转换环节, 因而面向对象数据库具有更大的易用性。
2.2 易于开发
对一个包含复杂的数据类型及复杂关系的面向对象应用, 工作人员需要编写额外的代码, 将对象结构映射到关系数据库的存储模型, 才能实现关系数据库正常工作, 导致产品开发的难度增加, 程序运行时的性能得不到保障。面向对象数据库则不需要这些额外的编码工作, 对象数据库与面向对象的编程语言结合良好, 能够实现应用程序与存储程序之间的直接对应, 对象只需在程序中定义一次, 不同的OODB产品用特定的方式告知OODBMS, 程序与数据库以相同的方式处理, 保证了开发过程的高效性。
3 面向对象数据库的应用
3.1 对CIS类软件的影响
在地理信息系统类的软件中, 矢量图形数据的存储与维护工作重要且繁杂, 传统以文件或关系型数据库为底层存储工具的形式保存数据, 无论哪种存储形式, 都必须将需要存储的数据格式转化为与内存中要使用的对象数据相适应的格式。内存与存储介质之间数据交换管理工作本身繁重庞杂, 对于大型应用来说管理更加艰巨, 面向对象数据库可以有效解决这方面的难题。格式转换、内存与存储介质之间数据交换可以由ODBMS处理, 大幅度缩减了程序的开发量。
3.2 软件开发中的版本管理
对于大型的软件系统, 必定由很多个独立但相互关联的组件群组成, 软件开发需要对这些组件进行管理, 而传统的SDE (Software Develop Environment) 建立在文件系统上面, 现有的文件管理工具难以完成这样的工作。面向对象数据库的应用能有效应对这一问题, 借助面向对象程序设计语言, 软件的版本管理工作转化为软件中应用的对象类的版本和各种COM的基于面向对象语言的组件的管理。由于组件面向对象的特性, 使得面向对象数据库是软件开发中版本管理的最佳工具。
3.3 在网络管理系统中的应用
网元设备的信息适宜应用OODB进行管理, 利用OODB的事件触发功能设计不同网元设备的行为, 实现网络管理系统的自主管理。在实际应用中, 可以实现网络负载的预警功能。根据不同的设备选择不同的参数、参数个数及不同算法, 设备运行过程中能够通过参数的变化, 根据预设的算法诊断出设备工作情况。如果完全依赖程序来进行管理, 不仅开发工作量大, 升级与维护也存在一定的困难。应用面向对象数据库, 可以在设计数据库存储的类的阶段, 为各个网元设定不同的预警算法实现代码, 并存储于数据库, 为不同网元设定预警触发条件, 当设备运行参数变化时, 预警系统自动调用, 实现对设备运行状态的诊断。程序只负责改变数据库中的参数, 由系统自动管理是否进行预警, 利于日常的维护。
4 面向对象数据库的发展趋势与应用前景
面向对象数据库的应用广泛, 发展速度较快, 有可能成为关系数据库系统之后的新一代数据管理技术, 但并未完全取代关系数据库系统, 面向对象数据库发展趋势主要包括:OODBS的标准化与形式化;进一步加强OODBS的性能;发展较强的建模能力;视图、演绎能力及语义建模;设计与编程提供可扩充性, 以接纳新型数据库的异构数据库管理系统;应用开发工具的研制推广;加强面对对象数据库与关系数据库的高效结合。
面向对象数据库有效弥补了传统数据库系统的诸多不足, 满足网络技术、人工智能、软件工程技术、多媒体技术、空间信息科学、信息管理及数据挖掘技术等领域的发展需求;在经贸与工业设计领域, OODBS具有超强的处理事务能力及并发控制能力, 发挥着不可取代的作用。OODBS由于具有处理海量信息和复杂数据的优势, 在众多领域有广泛应用, 但由于发展时间较关系数据库系统晚, 有一定的局限性, 但在不断发展完善中, 将会成为DBS的主要技术。
5 结语
本文通过阐释面向对象数据库的相关概念, 指出OODBS具有的优势, 具体分析了OODBS在CIS类软件中的应用、软件开发中的版本管理以及在网络管理系统中的应用, 并对OODBS的发展趋势与应用前景作简单介绍。
摘要:首先对面向对象数据库加以概述, 进而分析面向对象数据库的优点, 着重论述基于面向对象的数据库应用, 最后简述面向对象数据库的发展趋势与应用前景。
关键词:面向对象,关系数据库,CIS类软件,软件开发,网络管理
参考文献
[1]来羽, 张华杰.面向对象数据库系统的特点分析[J].河南科技, 2010 (17) .
[2]徐颖.论面向对象的数据库技术分析[J].科技视界, 2015 (9) .
面向对象数据库研究 篇9
1.1 传统数据库技术的缺陷
随着应用领域的不断拓展, 传统的关系数据库 (RDB, Relational Database) 系统所能处理事务的范围显得愈发狭窄, 仅能够处理正文、数字型的数据, 同时还表现出其他诸多不足:应用不灵活, 数据类型有限, 可扩充性差, 难以保证复杂应用建模和数据的一致性, 缺乏对层次数据结构的支持, 缺乏导航式查询和关联查询访问等。
1.2 面向对象数据库的优势
与传统的数据库相比, 面向对象数据库系统 (OODB, Object-Oriented Database) 有如下优势: (1) 支持复杂的数据结构; (2) 实体都表示为对象; (3) 将对象的数据和操作封装在对象的类型中; (4) 特殊的继承功能, 是具有面向对象特色的建模手段, 它允许一种类型从另一种类型中获取数据和方法; (5) 多态、重载、滞后联编 (滞后联编是指在系统运行时, 而不是在编译时把操作的名字转换成函数地址) ; (6) 对持久性和易失性存储提供了统一的类型, 保证了计算完整性; (7) 系统为每一个对象生成内部唯一的标识符; (8) 支持复杂的数据类型; (9) 具有许多新的事务处理模型, 如开放嵌套事务模型、工程设计数据库模型、多重提交点模型等。
2 面向对象数据库简介
2.1 面向对象的概念及特性
面向对象的方法就是以接近人类思维方式的思想, 将客观世界的一切实体模型化为对象。在面向对象的方法中, 对象、类、方法和消息是基本的概念。
面向对象方法具有抽象性、封装性、多态性等特性。面向对象方法可以将对象抽象成对象类, 实现抽象的数据类型, 允许用户定义数据类型。封装是指将方法与数据放于某一对象中, 以使对数据的操作只可通过该对象本身的方法来进行。对象是一个封装好的独立模块。多态是指同一消息被不同对象接收时, 可解释为不同的含义。把实现的细节都留给接收消息的对象, 相同的操作可作用于多种类型的对象, 并能获得不同的结果。
2.2 面向对象数据库系统的特征
面向对象数据库系统应该具备的主要性质和特征分为三组:必备的、可选的和开放的 (设计人员可以选择的特性) 。其中必备的特征有:对象标识、封装性、类型和类、类/类型的层次结构、重载/过载/滞后联编、计算完备性、可扩充性、持久性、辅存管理、并发性、恢复。
可选的特性有:多重继承性、类型检查和类型推理、分布、设计事务处理和版本等五个方面。
2.3 面向对象数据模型的四种核心技术
分类:把一组具有相同属性结构和操作方法的对象归纳或映射为一个公共类的过程。对象和类的关系是“实例” (instance-of) 的关系。
概括:把几个类中某些具有部分公共特征的属性和操作方法抽象出来, 形成一个更高层次、更具一般性的超类的过程。子类和超类用来表示概括的特征, 表明它们之间的关系是“即是” (is-a) 关系, 子类是超类的一个特例。
聚集:聚集是将几个不同的类对象组合成一个更高级的复合对象的过程。术语“复合对象”用来描述更高层次的对象, “部分”或“成分”是复合对象的组成部分, “成分”与“复合对象”的关系是“部分” (parts-of) 的关系, 反之“复合对象”与“成分”的关系是“组成”的关系。
联合:将同一类对象中的几个具有部分相同属性值的对象组合起来, 形成一个更高水平集合对象的过程。术语“集合对象”描述由联合而构成的更高水平的对象, 有联合关系的对象称为成员, “成员”与“集合对象”的关系是“成员” (member-of) 的关系。
3 面向对象数据库使用及实例
下面利用实例来说明面向对象数据库的使用。本文采用利用FastObjects提供的API函数展示了在永久性数据库对象上的基本操作及事务操作。Versant公司提供的FastObjects是一个可视化的数据库管理系统。
3.1 采用Publication类演示数据库操作
本部分实例展示了对多态性数据类型的操作。此类型层次包括一个基类:Publication, 它有两个继承类:Book和CD。用Rational Rose建模工具得到的Publication类模型图如图1所示。
(1) 创建数据库步骤如下:
PtBase::POET () ->GetBase (server, existing Base, p Base) ;
PtBase::POET () ->GetDictionary (server, dictionary, pClassDictionary) ;
pClassDictionary->Create Database (newBase) ;
PtBase::POET () ->Unget Dictionary (pClassDictionary) ;
(2) 打开数据库操作:调用InitPOET进行FastObjects数据库的初始化工作 (使用数据库操作之前必须进行初始化) 。使用PtRoot::GetBase, 指定数据库和服务器名字来打开数据库。在本例中, 服务器使用“LOCAL”代表本机。同时注册一个事务, 以便对对象读写操作时使用。
InitPOET (PtTransaction ByThread, "library") ;
int err=PtBase::POET () ->Get Base (server, base, p Base) ;
if (err>=0)
{pTransaction=new Pt Transaction () ;
if (pTransaction)
{
pTransaction->SetUseShadow Indexes (PtFALSE) ;
PtBase::POET () ->Set Current Transaction (pTransaction) ;
err=p Transaction->Register Resource (p Base) ;}
}
(3) 关闭数据库:当你完成对数据库地所有操作后, 关闭数据库。
pTransaction->Deregister Resource (pBase) ;
delete pTransaction;
Pt Base::POET () ->Unget Base (p Base) ;
Deinit POET () ;
调用Deregister Resource注销事务, 调用PtRoot::UngetBase关闭数据库。恢复初始化之前的FastObjects环境, DeinitPOET释放数据库操作申请的系统资源。
(4) 存储:存储一个新对象到数据库的过程。
pTransaction->Begin () ;
Book*pBook=newBook (author, title) ;
pBook->Assign (pBase) ;
pBook->Store () ;
pTransaction->Commit ()
pBook->Forget () ;
调用PtTransaction::Begin开始事务, 并指定数据库, 调用Commit提交事务, 把对象存到数据库, 当对象不再需要时, 通过Forget方法将其移除。
(5) 删除对象时, 首先调用Pt Transaction::Begin开始一个事务, 使用Delete方法从数据库中移除对象, Commit提交事务。
(6) 排序:对所有集合进行排序。此部分例子展示了如何使用索引技术对指定所有集合进行排序的方法。如果为一个类的特殊的属性定义了一个索引, 那么All Sets可以用此成员排序。
UngetAllPublications () ;
GetAllPublications (nItem) ;
Publication*pPublication=0;
Publication SortingOrderSort Order=GetSortOrder () ;
pPublications=newPublication AllSet (pBase) ;
idxName=“Publication TitleIndex”;
err=pPublications->SortByIndex (idx Name) ;
(7) 查询:使用query查找满足特定条件的对象。
query (pBase, queryString) ;//创建查询对象
query<
oql_execute (query, (PtOnDemand Set*&) pPublications) ;//执行查询, 创建并把给结果集赋值
3.2 Person类和Address实例分析
创建数据库, 以此来说明面向对象数据库的思想。该数据库的Person类对象的结构示意如图2所示。
建立Person类, 包括属性:name, age, address, comment。其中address是另一个类CAddress, 通过类之间的指针联系从Person类对象中可以操作address, 这样实现了真正的面相对象数据管理。通过继承Person类, 建立了Family Person类, 它继承了Person类的属性和方法, 然后添加了自己的属性和方法, 真正实现了类重用机制。建立Person类对象的主要代码所下:
persistent class CPerson//类定义
{
public://构造函数和析构函数
CPerson () ;
CPerson (const PtString&name, int age, const PtString&comment) ;
virtual void print () ;
public://服务函数
public://存取函数
const PtString&Name (void) const;
void Set Name (const PtString&name) ;
//age, address, comment同上述SetNameprivate://属性
PtString m_name;
int m_age;
CAddress*m_pAddress;
PtString m_comment;
};//函数实现
CPerson::CPerson () :m_age (0) , m_name ("") , m_pAddress ( (CAddress*) 0) , m_com-ment ("")
{}
CPerson::CPerson (const PtString&name, int age, const PtString&comment)
:m_age (age) , m_name (name) , m_p Address ( (CAddress*) 0) , m_comment (comment)
{}
CAddress*CPerson::Address (void) const
{
return m_pAddress;
}
void CPerson::SetAddress (const CAddress*address)
{
if (m_pAddress!= (CAddress*) 0) m_pAddress->Forget
() ;
m_pAddress= (CAddress*) address;
if (m_pAddress!= (CAddress*) 0) m_pAddress->Remember () ;
member () ;
}
const CAddress*CPerson::GetAddress () const
{
return m_pAddress;
}
4 面向对象数据库技术的发展趋势
面向对象数据库技术是包括面向对象特性的、与关系数据库系统兼容的、成熟的数据库管理系统。尽管目前已有大量的针对OODBS的研究开发工作, 但面向对象数据库技术的成熟仍有赖于许多关键问题的解决: (1) 标准化和形式化; (2) 改善和加强OODBS的性能; (3) 加强建模能力; (4) 加强面向对象数据库的应用开发工具的研制和推广; (5) 视图、演绎能力、语义建模和长事务功能。
参考文献
[1]丁宝康, 董健全.数据库实用教程[M].北京:清华大学出版社, 2001.
[2]叶小平, 汤庸, 汤娜, 等.数据库系统基础教程[M].北京:清华大学出版社, 2007.
[3]季维岩.面向对象数据库及其实现方法研究[J].科学技术与工程, 2004 (11) .
[4]邓正宏, 薛静, 郑玉山.面向对象技术[M].北京:国防工业出版社, 2004.
[5]FastObjects.Versant Corp[OL].http://www.fastobjects.com, 2007-12.
面向对象的数据库技术 篇10
关键词 面向对象技术UML 课程 教学改革 教学实践
中图分类号:G633.67 文献标识码:A
0 引言
面向对象技术UML是当前最为流行的软件设计技术,在实际工程有着广泛的应用。在大学教育中该课程一直受到教师和学生的关注,也是学生专业发展的基础,诸多学生对于该课程有着浓厚的学习兴趣。①在面向对象技术UML课程教学中,需要根据课程特点实施不同的教学方法,教师要掌握课程教学的主动权,积极发挥课程引导者的作用。②然而,实际中却由于部分教师缺乏教学经验或者不能采用有效地教学方法,学生不能领悟到教师的教学意图,也不能掌握课程内容,导致了诸多学生对教学的不满,产生强烈的排斥课程现象,影响正常的教学秩序。③因此,面向对象技术UML课程教学改革势在必行。本文探索了当前面向对象技术UML课程教学中存在主要问题,并提出了诸多改进措施,改善当今面向对象技术UML课程教学面貌。
1 面向对象技术UML课程教学存在问题分析
面向对象技术UML课程教学在过去有了重要的改变,尤其是采用多媒体教学以来,在教学效果上有了很大的提高,但该课程开始历史较短,仍然存在诸多问题,具体如下:(1)教材内容。由于面向对象技术UML课程涉及较多的专业知识,这些知识又随着计算机技术变化出现新的变化,这就导致教材内容不能满足课程教学需求,教材内容也在部门知识设置上也缺乏足夠深度。(2)课程授课缺乏规范。面向对象技术UML课程的教学案例设计没有形成一个有机的整体,不能很好地把每个知识点前后贯穿,如用于需求分析建模的案例不能延续到系统分析及设计,学生在学习中难度较大,造成学生学习疲倦,对面向对象技术UML课程产生消极情感,从而不能很好地学好该课程。(3)课程教学水平较为落后。面向对象技术UML课程需要很强的实践,不仅需要课堂系统的讲解,部分教师缺乏实践意识,过多的灌输理论知识,不能提高学生的应用能力,在教学的有效性上缺乏足够的考虑。教师在授课中往往较为单一,这与该课程的开设时间和难度有着重要的联系,并且在实际中也缺乏足够的参考资料,教师教学能力也受到挑战。
2 面向对象技术UML课程改进分析
面向对象技术UML课程改革需要根据学生的需求,按照课程发展特点,及实际经验进行研究具体的实施过程,提高面向对象技术UML课程的有效性,帮助学生发展计算机软件设计能力,具体的改进分析如下:
2.1 教学目标改革
面向对象技术UML课程需要完善教学目标,建立有效地改革体制,制定良好的教学方针,在实施改革主要从以下方面分析:(1)基于教师能力的目标改革。面向对象技术UML课程确实存在较大的教学难度,这就需要重点分析教师教学中存在的困难点,由成立专门的研究小组进行讨论,通过采纳广泛有经验教师的观点形成解决方案,突破现有教学资源限制。同时,进行制定教师教学任务,细化到每节课程内容,给教师制定相应的目标,提高教师教学的主动性。(2)基于学生学习能力的目标改革。学生的学习情况是面向对象技术UML课程的最终核心,需要统计学生的学习情况,根据具体情况调整教学方针,按照学生在课堂的需求制定相应的教学措施,提高学生在课堂中的积极性。同时,针对学生的学习情况要落实检查,督促学生的学习。
2.2 教学过程改革
面向对象技术UML课程需要从教学细节中探索切实可行的改革措施,这是该课程获得发展的基础,也进行改革的关键,主要内容如下:(1)实施先进教学模式。面向对象技术UML课程的改革需要从整体上制定教学模式,先进的模式能够保证该课程教学整体策略,按照先进的思想完善教学体系。基于项目驱动教学法就是典型的教学模式,在其他课程中获得良好的推广,面向对象技术UML课程也可以采取该方式,根据该理论制定详细的教学过程,在教学中研究能够提升教学空间的内容,达到教学方法的先进性。(2)推广实践教学,增加实践内容。面向对象技术UML课程是一门应用技术,在课程设置上教师要注重引入实践内容,即使课堂时间有限,也可以根据课程给学生布置课外作业,引导学生的学习兴趣,通过实践来检验课程的学习效果,并让学生获得学习的成就感。
3 总结
面向对象技术UML课程需要根据教学实际情况展开改革,改革的主题方针也要围绕学生的学习需求。在实际课堂中落实各种改革方针,达到提高教学效果的目的。此外,未来教学中应提高学生的主体参与时间,给学生更多自我学习的时间,促进其自学能力的发展。
注释
① 王艳萍,李海燕,许波. UML实例化教学改革初探[J]. 实验室研究与探索,2011(09).
② 吉逸,陈国庆,曹玖新.研究生创新型学习的教学研究与实践[J].计算机工程与科学,2011(S1).
面向对象数据库系统构想 篇11
关键词:数据库,面向对象,数据库系统
随着应用的扩展, 特别是诸如人工智能等复杂应用的需要, 关系型数据库已经显得力不从心, 人们迫切希望建立一种新的数据库解决方案来适应这些复杂需求。面向对象方法是一种崭新的思维方法, 它是把程序看作是相互协作而又彼此独立的对象的集合。由于对象的独立封装, 模块的可构造性、可扩充性、可重用性也大大加强, 从而面向对象的软件工程能够胜任当今大规模复杂、易变软件系统开发应用的要求。
1 面向对象数据库模型
1.1 核心概念
1.1.1 对象与对象标识
对象, 是现实世界中实体的抽象, 是数据和操作的集合, 是持久化到数据库中的最小的存储单位。
这里的对象其实与一般的面向对象程序设计语言中的对象并没有很大不同。但是, 这里的对象是持久性的。数据库中的对象是数据记录的最小单位, 也就是说, 数据库中至少存在一个对象才有意义。当然, 对象中还可以有对象的属性, 方法等, 但一个对象必须是完整的。
对象标识, 指的是唯一标定一个对象的标志, 一个对象对应一个标识符。在现实世界中, 对象可能会随着时间的推移而发生改变, 但对象标识不应该改变, 因此, 对象标识自对象生成后就不应该再改变, 否则无法使用对象标识唯一确定一个对象。即使两个对象的属性和方法以及状态完全一致, 只要其对象标识不同, 则两者是不同的对象。
对象标识一般有以下3种实现方式:
1) 值标识, 使用对象的某一属性作为其对象标识。
2) 名标识, 使用一个名字来表示标识。
3) 内标识, 以上两种方式是由用户建立的, 而这种方式是由系统内部建立的, 不具有任何实际含义, 且只有系统才可以“观察”此类对象标识。
另外, 在对象数据库中, 标识是永久不变的, 即具有永久持久性, 这和面向对象程序中的对象标识不一样, 面向对象程序中的对象标识只具有对象内持久性。
1.1.2 封装
抽象是对象的外部界面与内部实现之间实行清晰隔离的一种抽象, 外部与对象的通信只能通过消息来实现。在对象数据库中, 表现为对象的私有和保护成员只能通过其方法来查询得到, 而公有成员可以直接查询。这种方式的优点是对象被封装成了自含的单元, 对象只接受已定义好的操作, 其他对象不能直接访问对象的非公有成员。缺点是丧失了传统关系数据库中进行即席的、按内容的查询, 这就不够方便灵活了, 因此, 需要做一些改进和妥协。
1.1.3 类
共享同一属性和方法集的所有对象构成的对象类, 一个对象是一个类的实例。在数据库中是一种抽象的数据类型, 相当于关系数据库中的一张表。
1.1.4 类层次
这里涉及到继承的概念, 即类可以继承类, 从而具有与父类的所有符合条件的属性和方法。这是关系数据库中所没有的。
1.1.5 消息
指的是对象的方法调用。通过对象的方法调用可以访问对象的属性数据和执行业务逻辑。这也是关系数据库中没有的。
1.2 对象与对象标识
1.2.1 对象结构
包括两部分, 一个是属性集合;另一个是方法集合。属性集合将用于存储数据, 方法集合将用于操作数据。属性集合即是对象的成员变量, 其中又可以分为公有类型的成员、私有类型的成员和保护类型的成员。公有类型的成员可以直接使用查询语句进行查询, 保护型成员可以在该类的子类的对象中直接访问, 私有类型的成员只能在本类的对象中访问, 外部对象只能通过实现定义好的方法进行访问。如果没有事先定义好的方法, 则外部将无法访问这些变量的值, 这就实现了对象的封装性。在OODB数据库中, 对象结构同样分成这两种集合。
1.2.2 对象标识
表示在一个数据库中一个对象仅有一个唯一不变的标识就是对象标识。这个标识用来精确定位一个对象。在OODB数据库中, 对象标识是唯一标定这一持久性存储单元的唯一依据。其他对象或方法访问本对象的属性和方法必须先找到该对象的对象标识, 否则无法访问。
1.2.3 封装
即将一个对象的属性和方法封装在对象内部, 外部只能通过对象提供的外部接口进行访问。这样就提高了数据的安全性和代码的重用性。
1.3 类与类层次
相似对象的集合称为类, 在数据库中表现为面向对象数据库模式的集合, 它规定了该类的对象的数据结构规则和操作规则。在面向对象数据库中, 一个类相当于关系数据库中的一张表。它同样有字段和属性, 甚至还有关系数据库表所没有的方法。这种思路可以在面向对象数据库中实现复杂的逻辑。
类层次表现在继承上, 即父类和子类的层级关系。这是为了多态和数据共享的目的。这种思路可以象Java中那样使用接口和基类来完成设计。
1.4 继承
就像类层次中所说的, 继承是为了多态和数据共享的目的, 也是面向对象代码重用的重要机制之一。
1.5 滞后联编
即实现了重载的效果, OODBMS不能在编译时把操作名联编到程序上, 必须在运行时根据需要进行抉择。
1.6 对象的嵌套
是一种设计模式组合。将多个类的对象加人到一个类的属性中, 使之实现复杂的功能。
2 面向对象数据库语言
OODB语言用于描述面向对象数据库模式, 说明并操作类定义和对象实例。OODB语言主要包括对象定义语言 (ODL) 和对象操作语言 (OML) , 其中对象操作语言又包括一个重要子集—对象查询语言 (OQL) 。OODB语言一般应该具备下列功能。
2.1 类的定义与操作
包括定义、生成、存取、修改和撤销类。其中类的定义包括定义类的属性, 操作特征、继承性与约束等。
2.2 操作/方法的定义
面向对象数据库语言可以用来定义操作/方法, 在操作实现中, 语言的命令可用于操作对象局部数据结构。
2.3 对象的查询
OODB语言可以用于操作 (包括生成、存取、修改与删除) 实例对象。对于对象的存取—查询部分, OODB语言可以直接查询对象公有成员而不必向每一个对象逐个发送消息。而对于非公有成员, 则只能通过发送消息来实现存取、修改与删除。通过发送消息的查询效率可能会很低, 因此, 对于一些经常要查询的数据应该尽量定义为公有类型。
3 面向对象数据库模式
3.1 模式的一致性
(1) 唯一性约束:
即同一模式中所有类的名字必须唯一、类中属性名和方法名必须唯一。
(2) 存在性约束:
每个被引用的类必须在模式中定义、某操作代码中调用的操作不需给出说明、每一个说明的操作必须存在一个现实程序。
(3) 子类型约束:
子类和父类不能有环、不能有多继承、单一父类必须加以说明。
3.2 模式演进操作
主要包括以下几个部分:
(1) 功类集的改变;
(2) 已有类的成分的改变;
(3) 子类/父类联系的改变。
面向对象数据库是数据库发展的方向。我国目前在操作系统和数据库系统方面是严重的依赖于他国的, 特别是在面向对象数据库领域几乎是一个空白。
参考文献
[1]布莱特, 皮瑞拉尼.面向对象的建模与设计在数据库中的应用[M].宋今, 赵丰年译.北京理工大学出版社, 2001.
[2]布奇.面向对象分析与设计[M].王海鹏, 潘加宇译.人民邮电出版社, 2009.
【面向对象的数据库技术】推荐阅读:
面向对象数据模型07-22
面向对象数据库系统05-11
面向对象数据库研究10-02
面向对象的类测试技术11-17
面向对象的思想05-30
面向对象的分析11-10
他们为什么说面向对象有问题,探讨面向对象的一些缺陷06-03
面向对象的单元测试06-10
面向对象与面向过程06-01
面向对象技术引论(复习题带术语题答案)08-30