面向对象数据库管理系统的两种类型 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) 具有以下能力: 类的定义和操纵 例如类的创建、访问、修改、删除 操作(方法)的定义 操作接口的定义和操作的编程实现 支持封装,允许用不同的编程语言实现操作 对象的操纵 例如对象的创建、访问、修改、删除 计算完全的对象语言 除了提供与数据库有关的功能之外,还能完成所 有的常规程序设计