第五部分 面向对象的数据库系统
第五部分 面向对象的数据库系统
参考书: 6.蔡希尧,陈平.面向对象技术.西安:西安电子科技 大学出版社,1993年11月(第6章) 2.冯玉林,黄涛,倪彬.对象技术导论.北京:科学出版 社,1998年3月(第五章)
参考书: 6. 蔡希尧, 陈平. 面向对象技术. 西安: 西安电子科技 大学出版社, 1993年11月(第6章) 2.冯玉林,黄涛,倪彬. 对象技术导论. 北京: 科学出版 社, 1998年3月(第五章)
引言 术语:数据库、数据库管理系统、数据库系统 数据库技术的发展 从文件系统 具备了:最小冗余、支持 发展到数据库 共享、独立于应用、高效 的检索与更新操作等特点 网状数据库数据库而向对象 层次 关系型 数据库 的数据库 基于网状 基于层次 基于关系 基于面向对象 数据模型 数据模型 数据模型 数据模型
术语:数据库、数据库管理系统、数据库系统 一、 引言 数据库技术的发展 网状 数据库 关系型 数据库 面向对象 的数据库 层次 数据库 从文件系统 发展到数据库 具备了:最小冗余、支持 共享、独立于应用、高效 的检索与更新操作等特点 基于网状 数据模型 基于层次 数据模型 基于关系 数据模型 基于面向对象 数据模型
为什么出现面向对象的数据库(OODB)? 数据库应用范围的扩大,数据类型更为复杂,如: CAD应用二维、三维图形与图象 多媒体应用文本、图形、图象、声音、视频 复杂、嵌套的数据,超长、变长文本 等等 面向对象程序设计范型的推动 越来越多的应用系统采用面向对象的程序设计范型 传统的数据库不能有效地支持对象存储
为什么出现面向对象的数据库(OODB)? 数据库应用范围的扩大,数据类型更为复杂,如: CAD应用——二维、三维图形与图象 多媒体应用——文本、图形、图象、声音、视频 复杂、嵌套的数据,超长、变长文本 等等 面向对象程序设计范型的推动 越来越多的应用系统采用面向对象的程序设计范型 传统的数据库不能有效地支持对象存储
面向对象的数据库系统 必须具备的两项特征 蔡希尧 (1)支持核心的面向对象数据模型(对象模型); (2)借助对传统数据库之语义的扩充或修改,使之与核 心的面向对象数据模型的语义一致,以支持传统数据库中 所有的数据库特征
面向对象的数据库系统 必须具备的两项特征 ——蔡希尧 (1)支持核心的面向对象数据模型(对象模型); (2)借助对传统数据库之语义的扩充或修改,使之与核 心的面向对象数据模型的语义一致,以支持传统数据库中 所有的数据库特征
面向对象数据库管理系统的两种类型 1、在已有的面向对象编程语言基础上增加数据库功能 主要是增加对象的永久存储与检索、并发控制、等功能 和可恢复性、一致性〔完整性)、可靠性措施 例如: GenStone、 ORION、 Objectstore 2、在关系型数据库中增加对OO范型的支持 主要是将数据模型扩充为对象数据模型,支持类的定义 ,提供应用接口等 例如:O2、Iris、 POSTGRES 前者侧重于语言,带有较多的语言色彩 后者侧重于数据库,较多地体现数据库的特征
面向对象数据库管理系统的两种类型 1、在已有的面向对象编程语言基础上增加数据库功能 主要是增加对象的永久存储与检索、并发控制、等功能 和可恢复性、一致性(完整性)、可靠性措施 例如:GenStone、ORION、ObjectStore 2、在关系型数据库中增加对OO范型的支持 主要是将数据模型扩充为对象数据模型,支持类的定义 ,提供应用接口等 例如:O2、Iris、POSTGRES 前者侧重于语言,带有较多的语言色彩 后者侧重于数据库,较多地体现数据库的特征
二、对象模型 对象模型 在OODB领域作为“面向对象的数据模型”的简称,有以 下特征:(蔡希尧) 对象(包括操作、请求、消息、方法和状态) 联编(绑定)和多态 密封(封装)性 对象标识 类型和类 继承性和代理 值得注意的对象: 联系和属性、字面对象、组合对象复杂对象、聚集 可扩充性 完整性 对象语言
二、 对象模型 对象模型 在OODB领域作为“面向对象的数据模型”的简称,有以 下特征:(蔡希尧) 对象(包括操作、请求、消息、方法和状态) 联编(绑定)和多态 密封(封装)性 对象标识 类型和类 继承性和代理 值得注意的对象: 联系和属性、字面对象、组合对象/复杂对象、聚集 可扩充性 完整性 对象语言
值得注意的对象 联系(关联)在数据库中的实现 单向实现和双向实现 带有属性和操作的关联 属性的实现 在关系型数据库中,属性都是简单类型的 在OODB中,属性的类型可以是构造类型,可以是类 字面对象 不需要显式生成的数据对象,如数、字符串等 组合对象(复杂对象 以其它对象作为自已属性的对象 (相当于本课以往讲的整体部分结构中的整体对象) 聚集( aggregation) 以某种方式(例如集合、包、列表、元组、数组等)组织 在一起的一组对象的总称(不同于本课以往讲的聚合)
值得注意的对象 联系(关联)在数据库中的实现 单向实现和双向实现 带有属性和操作的关联 属性的实现 在关系型数据库中,属性都是简单类型的 在OODB中,属性的类型可以是构造类型,可以是类 字面对象 不需要显式生成的数据对象,如数、字符串等 组合对象(复杂对象) 以其它对象作为自己属性的对象 (相当于本课以往讲的整体-部分结构中的整体对象) 聚集(aggregation) 以某种方式(例如集合、包、列表、元组、数组等)组织 在一起的一组对象的总称(不同于本课以往讲的聚合)
可扩充性 可扩充的数据库 允许数据库模式进行扩充和修改 对象模型的可扩充性 (1)在系统建立之后允许继续定义新类 在已有类的基础上,通过继承扩充新类 (2)允许对已有的类进行修改 如添加新的操作、属性、约束、操作的实现等 (3)允许已有的对象实例获得新的类型 完整性约束 由用户在对象中定义一些检验数据一致性的规则(约束 条件),由系统保证。例如: 只允许向对象施加预先说明过的操作 对操作数和操作结果的类型加以约束 对属性值加以约束 对引用加以约束(例如被引用的对象必须存在)
可扩充性 可扩充的数据库 允许数据库模式进行扩充和修改 对象模型的可扩充性 (1)在系统建立之后允许继续定义新类 在已有类的基础上,通过继承扩充新类 (2)允许对已有的类进行修改 如添加新的操作、属性、约束、操作的实现等 (3)允许已有的对象实例获得新的类型 完整性约束 由用户在对象中定义一些检验数据一致性的规则(约束 条件),由系统保证。例如: 只允许向对象施加预先说明过的操作 对操作数和操作结果的类型加以约束 对属性值加以约束 对引用加以约束(例如被引用的对象必须存在)
对象语言(OL) 用于定义和操纵系统中的类和对象 相当于传统数据库中的数据定义语言(DDL)和 数据操纵语言(DML) 具有以下能力: 类的定义和操纵 例如类的创刨建、访问、修改、删除 操作(方法)的定义 操作接口的定义和操作的编程实现 支持封装,允许用不同的编程语言实现操作 对象的操纵 例如对象的创建、访问、修改、删除 计算完全的对象语言 除了提供与数据库有关的功能之外,还能完成所 有的常规程序设计
对象语言(OL) 用于定义和操纵系统中的类和对象 相当于传统数据库中的数据定义语言(DDL)和 数据操纵语言(DML) 具有以下能力: 类的定义和操纵 例如类的创建、访问、修改、删除 操作(方法)的定义 操作接口的定义和操作的编程实现 支持封装,允许用不同的编程语言实现操作 对象的操纵 例如对象的创建、访问、修改、删除 计算完全的对象语言 除了提供与数据库有关的功能之外,还能完成所 有的常规程序设计