《数据厍设计与开发》讲义 1.4对象关系数据库 ·传统关系型仅支持简单数据类型;不支持数组、 嵌套和递归的数据结构,给新型数据模型-面向 对象的数据模型提供了应用背景 ·面向对象的程序设计思想和技术促进了面向对象 的数据模型的实现和应用-00DBS(面向对象数据 库) ·习惯于‘填表’方式的客户不太愿意接受对象模 型,而且面向对象数据库系统与编程语言集成度 高,没有统一可行标准;00DBS只占很小的市场分 额 以关系数据库和S哑L为基础扩展关系模型一对象关 系数据库( ORDBMS)的发展满足了许多应用需求 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.4 对象关系数据库 • 传统关系型仅支持简单数据类型;不支持数组、 嵌套和递归的数据结构,给新型数据模型-面向 对象的数据模型提供了应用背景。 • 面向对象的程序设计思想和技术促进了面向对象 的数据模型的实现和应用-OODBS(面向对象数据 库)。 • 习惯于‘填表’方式的客户不太愿意接受对象模 型,而且面向对象数据库系统与编程语言集成度 高,没有统一可行标准; OODBS只占很小的市场分 额。 • 以关系数据库和SQL为基础扩展关系模型-对象关 系数据库(ORDBMS)的发展满足了许多应用需求
《数据厍设计与开发》讲义 1.4对象关系数据库 ORACLE、DB2UDB、 INFORMIX都推出 ORBMS, ANSI/IS0发布的SQL-99标准是一个对象关系 标准 1.4.1面向对象数据模型1.4.3对象关系数据库 1.4.1.1对象与标识 1.4.3.1对象联系 1.4.1.2类和类层次 4.3.2ORDB数据定义 1.4.1.3继承和嵌套 1.4.3.30RDB数据查询 1.4.1.4面向对象数据库 1.4.3.4三种产品的对象 1.4.20 RACLE对象关系库 关系特征 1.4.2.1 ORACLE中对象类型 1.4.2.20 RACLE中汇集类型 1.4.2.3PL/S哑L过程、用户 定义函数和方法 北京邮电次学软优学 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.4 对象关系数据库 • ORACLE、DB2 UDB、INFORMIX都推出ORBMS, ANSI/ISO 发布的SQL-99标准是一个对象关系 标准。 1.4.1 面向对象数据模型 1.4.1.1对象与标识 1.4.1.2类和类层次 1.4.1.3继承和嵌套 1.4.1.4面向对象数据库 1.4.2 ORACLE对象关系库 1.4.2.1ORACLE中对象类型 1.4.2.2ORACLE中汇集类型 1.4.2.3PL/SQL过程、用户 定义函数和方法 1.4.3 对象关系数据库 1.4.3.1对象联系 1.4.3.2ORDB数据定义 1.4.3.3ORDB数据查询 1.4.3.4三种产品的对象 关系特征
《数据厍设计与开发》讲义 1.4.1面向对象数据模型 面向对象数据库系统( Object Oriented Database System, OODBS)是数据库技术与面向对象程序设计方法相 结合的产物;面向对象程序设计方法的主要活动 在建立对象和对象之间的联系;面向对象数据库 系统一般依赖于一个面向对象的程序设计语言. 个面向对象数据库系统是一个持久的、可共享 的对象库的存储和管理者;而一个对象库是由 个00模型所定乂的对象的集合体。 面向对象程序设计语言中建立的对象自动保存在磁盘上即 OODBS ·面向对象数据模型是用面向对象观点来描述现实 世界实体的逻辑组织、对象间限制、联系 面向对象数据库的用户主要是应用软件系统软件开发专业程序员 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.4.1 面向对象数据模型 • 面向对象数据库系统(Object Oriented Database System, OODBS)是数据库技术与面向对象程序设计方法相 结合的产物;面向对象程序设计方法的主要活动 在建立对象和对象之间的联系;面向对象数据库 系统一般依赖于一个面向对象的程序设计语言. 一个面向对象数据库系统是一个持久的、可共享 的对象库的存储和管理者;而一个对象库是由一 个OO模型所定义的对象的集合体。 • 面向对象数据模型是用面向对象观点来描述现实 世界实体的逻辑组织、对象间限制、联系. 面向对象程序设计语言中建立的对象自动保存在磁盘上即OODBS 面向对象数据库的用户主要是应用软件系统软件开发专业程序员
《数据厍设计与开发》讲义 1.4.1面向对象数据模型 ·面向对象数据模型的主要观点 对象:对象是基本的数据结构,现实世界的任 实体都被统一模型化为一个对象,每个对象有 个永久标识;对象可以被指定为一个给定类型, 还可以定义为其它对象的子类型; 封装:每一个对象是其状态与行为的封装 封装的状态为属性,行为为方法。对象与外部通 信一般只能通过显式的消息传递。 继承:子类型继承父类型的所有特性和行为 面向对象的核心观点构成00模型的基础,没有像关系模型那样 的规范说明 如果与面向对象数据库相比 RDBMS可以称为面向表的数据库。 家邮电大学物学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.4.1 面向对象数据模型 • 面向对象数据模型的主要观点: 对象:对象是基本的数据结构,现实世界的任 一实体都被统一模型化为一个对象,每个对象有 一个永久标识;对象可以被指定为一个给定类型, 还可以定义为其它对象的子类型; 封装:每一个对象是其状态与行为的封装。 封装的状态为属性,行为为方法。对象与外部通 信一般只能通过显式的消息传递。 继承:子类型继承父类型的所有特性和行为. 面向对象的核心观点构成OO模型的基础,没有像关系模型那样 的规范说明。 如果与面向对象数据库相比,RDBMS可以称为面向表的数据库
《数据厍设计与开发》讲义 1.4.1.1对象与标识 对象是由一组数据结构和在这组数据结构上的操 作的程序代码封装起来的基本单位,包括:属性 方法和消息。 ·面向对象的数据库系统在逻辑上和物理上从面向 记录上升为面向对象、面向可具有复杂结构的 个逻辑整体。 面向对象数据库中的每一个对象都有一个唯一的 不变的标识(OID)。创建对象时系统就给它赋予 个OID,直到它被删除。 外部与对象的通信只能通过消息,隔离了对象的 实现与对象的应用,提高数据独立性。 ·査询属性值通过调用方法,不象关系系统那样使 用SQL,不够方便灵活 」 ORDBMS中不支持 家邮电大学物你学院 部明80080 封装可即席查询
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.4.1.1对象与标识 • 对象是由一组数据结构和在这组数据结构上的操 作的程序代码封装起来的基本单位,包括:属性、 方法和消息。 • 面向对象的数据库系统在逻辑上和物理上从面向 记录上升为面向对象、面向可具有复杂结构的一 个逻辑整体。 • 面向对象数据库中的每一个对象都有一个唯一的 不变的标识(OID)。创建对象时系统就给它赋予 一个OID,直到它被删除。 • 外部与对象的通信只能通过消息,隔离了对象的 实现与对象的应用,提高数据独立性。 • 查询属性值通过调用方法,不象关系系统那样使 用SQL,不够方便灵活。 ORDBMS中不支持 封装,可即席查询
《数据厍设计与开发》讲义 1.4.1.2类和类层次 相似对象的集合称为类,每个对象称为它所在类 的一个实例,一个类中的所有对象共享一个定义 它们的区别仅在与属性的取值不同.类本身也可 以看作一个对象(类对象). 对相似对象的重复定义十分浪费,将相似对象分组形 成 类 面向对象数据模型提供类层次结构,一个面向对 象数据库模式可能有多个类层次(超类和子类), 在一个类层次中,一个类继承其所有(直接和间接 的)超类的全部属性、方法和消息.超类是子类的 抽象,子类是超类的特殊化. 不同类的对象可以共享他们公共部分的结构和特性 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.4.1.2 类和类层次 • 相似对象的集合称为类,每个对象称为它所在类 的一个实例,一个类中的所有对象共享一个定义, 它们的区别仅在与属性的取值不同.类本身也可 以看作一个对象(类对象). • 面向对象数据模型提供类层次结构,一个面向对 象数据库模式可能有多个类层次(超类和子类), 在一个类层次中,一个类继承其所有(直接和间接 的)超类的全部属性、方法和消息.超类是子类的 抽象,子类是超类的特殊化. 对相似对象的重复定义十分浪费,将相似对象分组形 成一个“类” 不同类的对象可以共享他们公共部分的结构和特性
《数据厍设计与开发》讲义 1.4.1.2类和类层次 类层次可以动态扩展,一个新的子类能从一个或 多个已有类导出 ·面向对象数据库中,类是“型”,对象是某一类的 个“值”.类属性的定义域可以是任何类(基本 类或包含属性和方法的一般类) 面向对象数据库模式是类的集合,类可能有多个 类层次。 例如:一个学校应用的面向对象数据库,其中有教职员工 和学生两个类,这两类都有身份证号、姓名、性别、住址 等属性,也有相同的方法和消息。统一定义教职员工和学 生的公共属性、方法和消息部分,称为一个类“人”;分 别定义各自的特殊属性、方法和消息部分,分别称为教职 员工类和学生类,教职员工类和学生类定义为人的子类。 北京邮电次学软优学 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.4.1.2 类和类层次 • 类层次可以动态扩展,一个新的子类能从一个或 多个已有类导出。 • 面向对象数据库中,类是“型” ,对象是某一类的 一个“值”.类属性的定义域可以是任何类(基本 类或包含属性和方法的一般类)。 • 面向对象数据库模式是类的集合,类可能有多个 类层次。 例如:一个学校应用的面向对象数据库,其中有教职员工 和学生两个类,这两类都有身份证号、姓名、性别、住址 等属性,也有相同的方法和消息。统一定义教职员工和学 生的公共属性、方法和消息部分,称为一个类“人”;分 别定义各自的特殊属性、方法和消息部分,分别称为教职 员工类和学生类,教职员工类和学生类定义为人的子类
《数据厍设计与开发》讲义 1.4.1.3继承和嵌套 子类继承超类的特性,避免许多重复定义这种继 承性有两优点:是建模的有力工具;提供信息重用 机制.封装和继承导出多态性 ·子类可以定乂自己特殊的属性、方法和消息,在 定义这些特殊的属性、方法和消息时可能与超类 或多个超类之间发生冲突.这种冲突由系统解决, 不同系统使用不同的冲突解决方法 一个对象属性可以是另一个对象称为对象的嵌套 这样一来,不仅类之间具有层次结构,而且某一个 类内部也具有嵌套层次结构,形成对象横向和纵 向的复杂结构. 不像 RDBMS中的平面结构 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.4.1.3 继承和嵌套 • 子类继承超类的特性,避免许多重复定义.这种继 承性有两优点:是建模的有力工具;提供信息重用 机制.封装和继承导出多态性. • 子类可以定义自己特殊的属性、方法和消息,在 定义这些特殊的属性、方法和消息时可能与超类 或多个超类之间发生冲突.这种冲突由系统解决, 不同系统使用不同的冲突解决方法. • 一个对象属性可以是另一个对象称为对象的嵌套. 这样一来,不仅类之间具有层次结构,而且某一个 类内部也具有嵌套层次结构,形成对象横向和纵 向的复杂结构. 不像RDBMS中的平面结构
《数据厍设计与开发》讲义 1.4.1.4面向对象数据库 ·在0ODB中,与对象模型密切相关的是面向对象数 据库语言。0ODB语言主要包括对象定义语言 (ODL)和对象操纵语言(OML),对象操纵语言 个重要子集是对象查询语言(OQL)。 RDBMS中有数据定义DDL、数据操纵DML、数据控制DCL ·0ODB语言一般应具备类的定义与操纵、操作/方 法的定义、对象的操纵功能。 面向对象数据库语言的研制是0ODB系统开发中的 重要部分,人们试图扩充面向对象程序设计语 00PL的查询语言或者扩充S@L的功能,目前还没 有像SQL那样的关于面向对象数据库语言的标准 不同的 OODBMS其具体的数据库语言各不相同 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.4.1.4 面向对象数据库 • 在OODB中,与对象模型密切相关的是面向对象数 据库语言。OODB语言主要包括对象定义语言 (ODL)和对象操纵语言(OML),对象操纵语言 一个重要子集是对象查询语言(OQL)。 • OODB语言一般应具备类的定义与操纵、操作/方 法的定义、对象的操纵功能。 • 面向对象数据库语言的研制是OODB系统开发中的 重要部分,人们试图扩充面向对象程序设计语言 OOPL的查询语言或者扩充SQL的功能,目前还没 有像SQL那样的关于面向对象数据库语言的标准。 不同的OODBMS其具体的数据库语言各不相同。 RDBMS中有数据定义DDL、数据操纵DML、数据控制DCL
《数据厍设计与开发》讲义 1.4.20 RACLE对象关系库(对象关系模型) ·对象关系模型支持用户类型定义( ORACLE称对象 类型;Ⅰ NFORMIX称行类型;DB2UDB称用户定义类 型).一个表是包含用户定义类型的多个行 ·对象关系模型允许一个行包括一个行值汇集(如 数组或单个列自身是一个表) 显然,对象关系模型违反第一泛式规则 面向对象数据库中,只能通过对象的方法操纵对 象,在对象关系模型中,所有对象被看作是公共的 而并非私有的,通过SQL即可操纵对象,当然也可 使用用户定义的函数 显然,对象关系模型没有面向对象数据模型和关系 模型那样严格 家邮电大学物你学院 部明80080
北京邮电大学软件学院 郭文明 2003.06 《数据库设计与开发》讲义 1.4.2 ORACLE对象关系库(对象关系模型) • 对象关系模型支持用户类型定义(ORACLE称对象 类型;INFORMIX称行类型;DB2 UDB称用户定义类 型).一个表是包含用户定义类型的多个行. • 对象关系模型允许一个行包括一个行值汇集(如 数组或单个列自身是一个表). • 面向对象数据库中,只能通过对象的方法操纵对 象,在对象关系模型中,所有对象被看作是公共的 而并非私有的,通过SQL即可操纵对象,当然也可 使用用户定义的函数. 显然,对象关系模型违反第一泛式规则 显然,对象关系模型没有面向对象数据模型和关系 模型那样严格