第5章 使用对象扩展Oracle.docVIP

  • 1
  • 0
  • 约1.8万字
  • 约 14页
  • 2020-02-26 发布于陕西
  • 举报
第五章 使用对象扩展Oracle 在第一章中曾经讲到,对象关系型数据库是Oracle8的重要新特性。下面,我们就详细地来介绍Oracle的对象相关特性。 5.1 面向对象 相信大家已经比较熟悉面向对象的概念,并喜欢面向对象编程。因为,一个对象是一个可以再利用的应用组件,开发者只需知道如何使用它,而不需要了解它是如何工作的。开发者不必为了只写一些查询访问数据库信息,而必须成为关系型数据库建模专家或SQL大师,这肯定是我们心目中面向对象数据库。 5.1.1 0racle8和面向对象数据库 为支持面向对象数据库的应用开发,Oracle8允许在数据库设计中创建并使用对象类型。对象类型严格遵循ANSI/ISO SQL3标准而实现,允许创建复合对象关系型数据库并使得应用开发变得简单。例如,你或许发现在一个典型的订单输人数据库里一些事务与下面的对象类型非常相似: CREATE OR REPLACE TYPE sales.part_type AS OBJECT( id INTEGER, description VARCHAR2 (50), on_hand INTEGER, Reorder_point INTEGER, --给定零件的描述,显示零件的ID号码 MEMBER FUNCTION part_id(descr IN VARCHAR2) RETURN INTEGER, --给定零件的ID号时,显示这种零件当前的存货清单数量 MEMBER FUNCTION parts_on_hand(part_id IN INTEGER) RETURN INTEGER, --有某种零件的订单时,减少这种零件的库存数量 MEMBER PROCEDURE order_part(part_id IN INTEGER,quantity IN INTEGER), --客户退回某种零件的订单时,增加这种零件的库存数量 MEMBER PROCEDURE return_part(part_id IN INTEGER,qantity IN INTEGER) 这个基本对象类型例子很快表明使用对象类型的两个主要原因: 第一,允许定义复杂的数据类型,更为接近真实世界的事物。例如,PART_TYPE代表有代表性的订单输入系统中某种零件的通常表示方法。 第二,紧密地组合数据与相关的操作。尤为特别的是,一个对象类型能够包含一个应用界面,描述一个应用可以使用这种类型的对象做何种应用。例如PART_TYPE的方法。 总之,因为PART_TYPE有良好定义的应用程序界面,开发者建立使用零件的应用时,不需要过多了解这些零件。此外,对象类型让你在一个Oracle数据库中集中应用标准,然后重新使用它们,从而使应用开发更加高效和一致。 5.1.2 面向对象数据库术语及概念 在开始学习如何操作对象前,需要学习许多常用的和Oracle特定的术语。以下解释与面向对象数据库相关的一些概念。 1.对象类型、类和对象 简而言之,一个对象就是一个相关数据的集合;一个Oracle数据库里的对象通常也表示一个现实世界时事物。更为确切地说,对象是一个类或对象类型的特定实例的简称。(在关系型术语中,可以认为对象就是表中的行。)? 2.属性和方法 对象类型的属性:描述相关对象里的数据元素。例如,每种零件有一个ID标识码、一个名称描述、一个当前库存量(手头零件数量)和再订货限值(在关系型术语中,可以认为对象类型属性就是表中的列定义)。 对象类型的方法(或预定义行为):封装或描述应用用于操作该类型对象的界面。结果是应用开发者操作这些对象时不需要了解对象的细节,他们只简单地使用该类型对象可用的方法来编写应用访问对象的数据。(在关系型术语中,可以认为对象类型的方法就象过程和函数包,提供一种处理数据库表数据的界面。)? 3.子类、继承 子类是对象类型的专用类,在传统的面向对象系统里,子类继承它父类的属性和方法,并且还能够具有附加的子类专有的属性和方法。例如,如果定义了一个名叫PERSON_TYPE的类,然后定义一个名为CUSTOMER_TYPE的子类,CUSTOMER_TYPE的方法也许与其父类作用不同,以说明不同的属性及其他变化。但是,Oracle8不支持属性或方法的继承。 5.2 怎样使用和设计对象 可以不同程度地使用Oracle8面向对象数据库扩展性——可以简单地使用对象类型以提高关系型数据库设计,或实现由对象类型定义表的飞跃。在Oracle数据库设计时,有三种使用对象类型的方法: ■实现用户定义数据类型,增强关系型数据库模型的创建: 通常,创建一个对象类型来建立一个复杂的、用户定义的数据类型,该数据类型更加密切地接近现实世界的事物;然后,你和其他的开发者可以使用该对象类型更加容易地声明和操作表与其他数据库对象。 ■在关系型

文档评论(0)

1亿VIP精品文档

相关文档