文章插图
面向对象程序语言操纵的是对象,所以面向对象数据库(简称OODB)的一个优势是面向对象语言程序员在做程序时,可直接以对象的形式存储数据 。对象数据模型有以下特点:
(1)使用对象数据模型将客观世界按语义组织成由各个相互关联的对象单元组成的复杂系统
。对象可以定义为对象的属性和对象的行为描述,对象间的关系分为直接和间接关系 。(2)语义上相似的对象被组织成类,类是对象的集合,对象只是类的一个实例[6],通过创建类的实例实现对象的访问和操作 。(3)
对象数据模型具有“封装”、“继承”、“多态”等基本概念[7] 。(4)
【面向对象数据库系统主要有哪些特点】方法实现类似于关系数据库中的存储过程,但存储过程并不和特定对象相关联,方法实现是类的一部分 。(5)
实际应用中,面向对象数据库可以实现一些带有复杂数据描述的应用系统,如时态和空间事务、多媒体数据管理等 。面向对象数据库系统主要有哪些特点
以关系数据库为例,SQL语言是一种非过程化的面向集合的语言,它虽然用起来非常简单,但由于是解释实现,效率不如人意 。因此许多应用仍然是由高级程序设计语言(如C)来实现的,但是高级程序设计语言是过程化的,而且是面向单个数据的,这使得SQL与它之间存在着不匹配,我们把它叫做“阻抗失配” 。不论你是用嵌入式SQL,还是CLI,都需要化很多工夫去完成两种语言之间的相互转化 。但是关系数据库在数据库系统方面发展地非常完善,有强大的管理功能和可操纵性 。另外,关系模型具有坚实的数学基础 。\x0d\x0a\x0d\x0a面向对象数据库的产生主要是为了解决“阻抗失配”,它强调高级程序设计语言与数据库的无缝连接 。什么叫无缝连接,假设你 不用数据库,用C语言编了一个程序,你可以不需要(或基本不需要)任何改动就将它作用于数据库,即你可以用C语言透明访问数据库,就好象数据库根本不存在一样,所以也有人把面向对象数据库理解为语言的持久化 。怎么样,听起来挺玄的吧,可是我们自己开发的数据库系统——OSCAR早就做到了这一点 。由于实现了无缝连接,使得面向对象数据库能够支持非常复杂的数据模型,从而特别适用于工程设计领域 。打个比方,想象CAD中的一个复杂部件,它可能由成千上万个不同的零件组成,要是用关系模型中的表来表达,得用多少张表啊?而描述这种复杂的部件,正好是高级程序设计语言的强项 。\x0d\x0a\x0d\x0a此外,面向对象数据库还吸收了面向对象程序设计语言的思想,如支持类、方法、继承等概念 。面向对象数据库很好地解决了阻抗失配的问题,但它也有缺点 。它的缺点正好是关系数据库的强项,由于模型较为复杂(而且缺乏数学基础),使得很多系统管理功能难以实现(如权限管理),也不具备SQL处理集合数据的强大能力 。\x0d\x0a\x0d\x0a另一方面,随着多媒体数据的大量出现和应用的日益复杂,关系数据库也在不断吸收面向对象数据库的优点,出现了现在所谓的对象关系型数据库(象ORACLE8i、DB2-5以上都是这种系统) 。其主要改进包括支持自定义类型(UDT),方法,继承(目前仅DB2-6支持),和引用(使得对象间可以直接引用,想想原来的关系数据库需要靠连接来实现引用,性能真是惨不忍睹) 。总之,数据库系统发展的趋势是,面向对象数据库和关系数据库将不断融合 。而对象关系数据库由于继承了上述两者的优点,已经成为目前数据库发展的主流 。
面向对象是一种认识方法学,也是一种新的程序设计方法学 。
目前,商品化的数据库管理系统以关系型数据库为主导产品,技术比较成熟 。
面向对象的数据库管理系统虽然技术先进,数据库易于开发、维护,但尚未有成熟的产品 。国际国内的主导关系型数据库管理系统有ORACLE、SYBASE、INFORMIX和INGRES 。这些产品都支持多平台,如UNIX、VMS、WINDOWS,但支持的程度不一样 。在下面的分析中会比较他们的平台支持能力 。IBM 的DB2也是成熟的关系型数据库 。
但是,DB2是内嵌于IBM的 AS/400系列机中,只支持OS/400操作系统 。
推荐阅读
- 中教数据库,中教数据库官网
- 对象+项目+预约方式 2023南京中华路社区卫生服务中心免费两癌筛查
- 3月5日万州出租车免费乘坐服务对象+时间
- 南宁小学摸底对象有哪些要求 南宁小学生摸底
- 2023重庆茶山竹海黛子山游乐园妇女节半价门票优惠对象+时间
- 2023温州鹿城区第二轮购房消费券发放对象及使用规则
- 2023上半年绍兴柯桥区普通话测试报名对象
- 时间+对象+流程 昆明同仁医院可以检测新冠病毒抗体指南
- 2023青岛春节一线快递员上岗补贴对象 青岛快递员工资
- 没有对象犯法吗?单身有罪吗?抓紧去脱单吧