基于对象的数据库
传统的数据库应用程序具有数据处理任务,例如银行和工资管理,具有与关系数据模型兼容的相对简单的数据类型。随着数据库系统被应用于广泛的应用,例如计算机辅助设计和地理信息系统,关系模型施加的限制成为一种约束。
整改是引入了基于对象的数据库,它同意处理复杂的数据类型。在基于对象的数据库中,每个实体都被视为一个对象并在表中表示。相似的对象被分为类和子类,两个对象之间的关系是使用反向引用的概念来维护的。
基于对象的数据库中的障碍
- 使用关系数据模型的程序员面临的第一个障碍是关系模型支持的系统类型有限。复杂的应用领域需要相应复杂的数据类型,如嵌套记录结构、多值属性和传统编程语言支持的继承。 ER 和扩展的 ER 表示法确实支持此类功能,但必须将它们转换为更简单的 SQL 数据类型。对象-关系数据模型通过提供更丰富的类型系统扩展了关系数据模型,其中包括复杂的数据类型和面向对象。关系查询语言,尤其是 SQL,需要相应地扩展以处理更丰富的类型系统。此类扩展试图保留关系基础,同时扩展建模的能力——特别是对数据的声明式访问。对象关系数据库系统,即基于对象关系模型的数据库系统,为关系数据库用户想要使用面向对象的特性提供了便捷的迁移途径。
- 第二个障碍是难以从用 C++ 或Java等编程语言编写的程序访问数据库数据。仅仅扩展数据库支持的类型系统并不足以彻底解决这个问题。数据库的类型系统和编程语言的类型系统之间的差异使得数据存储和检索更加复杂,并且需要最小化。使用编程语言 (SQL) 以外的语言表达数据库访问再次使程序员的工作变得困难。对于许多应用程序来说,希望具有允许直接访问数据库中数据的编程语言结构或扩展,而无需通过 SQL 等中间语言。
解决支持面向对象编程语言的本机类型系统中包含的数据的持久性问题。在实践中使用了两种方法:
- 构建面向对象的数据库系统,这是一个原生支持面向对象类型系统的数据库系统,并允许使用该语言的本机类型系统从面向对象编程语言直接访问数据。
- 自动将数据从编程语言的本机类型系统转换为关系表示,反之亦然。使用对象关系映射指定数据转换。
基于对象的数据模型
数据库结构的基础是数据模型,或者我们可以将其定义为用于描述数据、数据关系、数据语义和数据约束的概念工具的集合。
- 面向对象编程已成为占主导地位的软件开发方法。这导致了面向对象数据模型的开发,该模型可以被视为 ER 模型的扩展,具有封装、方法(函数)和对象标识的概念。
- 继承、对象识别和封装(信息隐藏)以及为对象提供接口的方法是面向对象编程的关键概念,已在数据建模中得到应用。
- 面向对象的数据模型还支持更丰富的类型系统,包括结构化和集合类型。
- 目前主要的数据库供应商都支持对象关系数据模型,一种结合了面向对象数据模型和关系数据模型特征的数据模型。
- 它通过结构化和集合类型以及面向对象等多种特性扩展了传统的关系模型。
基于对象的数据库的优势
- 复杂数据和比 MySQL 数据类型更广泛的数据类型。
- 快速保存和恢复数据很容易。
- 与面向对象的编程语言无缝集成。
- 对高级现实问题建模很容易。
- 可使用自定义数据类型进行扩展。
基于对象的数据库的缺点
- 不像关系数据库那样被广泛采用。
- 没有通用数据模型。缺乏理论基础和标准。
- 不支持观点。
- 高复杂性会导致性能问题。
- 不存在足够的安全机制和对对象的访问权限。