面向对象的关系数据库:特性、应用与比较
在数据库领域,为了满足日益复杂的应用需求,出现了多种数据库系统和相关技术。其中,持久化编程语言和面向对象的关系数据库模型是两个重要的发展方向。持久化编程语言将数据库的持久性和其他特性添加到现有的面向对象类型系统的编程语言中;而面向对象的关系数据库模型则扩展了关系数据模型,提供了更丰富的类型系统,包括复杂数据类型和面向对象编程。
1. 嵌套关系模型
在传统的关系数据库中,第一范式(1FN)要求所有属性具有原子域,即域中的元素被视为不可分割的单位。然而,并非所有应用都能通过1FN关系得到最佳建模。例如,在某些应用中,用户需要将数据库视为一组对象(或实体),而不是一组记录,这就需要对象在用户直观概念和数据库系统的数据元素概念之间建立一一对应关系。
嵌套关系模型是关系模型的一种扩展,其中域可以是原子的或关系的。因此,属性元组的值可以是一个关系,并且关系可以存储在其他关系中。复杂对象可以通过嵌套关系中的单个元组来表示,从而实现数据元素与用户数据库视图中的对象之间的一一对应。
以图书馆为例,对于每本书,通常会存储以下信息:
- 书名
- 作者列表
- 出版社
- 关键词列表
以下是一个不满足1FN的图书文档关系示例:
| 书名 | 作者列表 | 出版社(名称,分支机构) | 关键词列表 |
| — | — | — | — |
| 编译器 | {Gómez, Santos} | (McGraw - Hill, 纽约) | {翻译, 分析} |
| 网络 | {Santos, Escudero} | (Oxford, 伦敦) | {互联网