综合资料网logo
首页 >> 类别 >> Oracle >> 正文

基于Oracle9i中面向对象关系数据库程序设计

字体:大 字体:中 字体:小 ygh0305的资料库 更新于:2011-11-26 阅读次数:12  
相关标签:
  • ORDBMS对象类型方法继承(1)

  •   摘要:探讨了oracle9i中的面向对象程序设计方法。面向对象的程序设计是基于对象类型实现的,其逐步取代面向过程的程序设计。该模型指定了数据的结构、对数据的操作“方法”、“继承”及如何在关系模型中使用这些数据类型,实现了用对象类型来处理复杂的数据类型,并在关系数据库基础上发展了面向对象的概念。
      关键词:ORDBMS对象类型方法继承
      基于Oracle9i中面向对象关系数据库程序设计
      数据库管理系统的发展经历了层次模型、网状模型和关系模型,关系模型是最广泛应用的数据库模型。Oracle9i将关系模型扩展为对象—关系模型(ORDBMS),从而可以在关系数据库中存储复杂的业务模型。对象—关系模型允许定义“对象类型”。对象类型可分为行对象、列对象、对象表及对象视图等,并具有方法、继承等特点。
      
      一、面向对象关系数据库
      
      传统的数据库应用只包含一些数据处理任务,数据类型是简单的数据类型,基本数据项是小的记录,没有结构划分。对一些数据库中处理复杂的数据类型的方法的需求逐步扩大。如考虑地址信息。一个“完整的地址”可以看成一个字符串类型的原子的数据项,这种方法隐藏了细节信息,如地址分为街道、城市、州、邮编等,这些在查询时都是有意义的选项。另一方面,若一个地址被分解成几个部分来表示,录入与查询更为复杂。
      (1)特点。ORDBMS具有理解表、行及列;理解两个表之间的关系,分析各种元素之间的关系。面向对象编程是在程序中组织数据和代码的一种方法,它允许在整个应用程序中维持标准。当需要使用相同的功能时,允许在应用程序中重用对象、定义访问路径等。ORDBMS中的开发应用程序比传统系统中的开发应用程序处理速度快。
      (2)对象类型。Oracle9i支持各种类型的对象,主要包括:抽象数据类型、可变数组、嵌套表、对象表、对象视图。这些对象类型可分为两种:一种是嵌入式的,是列对象,另一种是引用式的,是行对象。抽象数据类型、可变数组或嵌套表可以作为列嵌入在表中。抽象数据类型是包含一个或多个子类型的数据类型。它可以更准确地描述数据。通过抽象数据类型可以使用嵌套表或可变数组在单个行中维护如一个员工的多个地址。例如:为员工的地址创建抽象数据类型。代码如下:创建表vend_mast,使用抽象数据类型address_ty作为表中的列,用来存储员工的地址信息。创建一个抽象数据数据类型address_ty.createorreplacetypeaddress_tyas object(street_nonumber(4),street_namevarchar2(20)cityvarchar2(20),state varchar2(20));/创建包含抽象数据类型address_ty的表vend_mast.Create table vend_mast(
      vencodevarchar2(5)vennamevarchar2(15),venadd addressty,tel_no number(10));--向带有抽象数据类型的表中插入数据,抽象数据类型要利用其默认的“构造函数”向记录中添加数据Insertintovend_mastvalues('v110','john',address_ty(110,'Clinton Rd','Rosewood','Columbia'),234465987);利用点分法查看记录中抽象数据类型字段的数据Select a.venadd.street_no,a.venadd.street_name,a.venadd.city,a.venadd.state from vend_mast a;
      (3)方法。包含方法的对象类型一般有member方法、static方法、 map方法、order方法、自定义构造方法等。其中member方法、map方法、order方法、自定义构造方法用于访问对象实例的数据,而static方法用于对象的调用。见下面的对象类型的继承中的代码部分member function get_info return varchar2。
      (4)继承。对象类型的继承是Oracle9i新增加的特征之一,对象类型的继承是指一个对象类型继承另一个对象类型,并且对象类型继承由父类型和子类型组成。当使用对象类型继承时,需在父类型中指定not final选项;①对象父类型的建立create or replace type person_ty9 as object(name varchar2(10),gender varchar2(2),birthdatedate,address varchar2(50),memberfunction get_info return varchar2)not final;/②对象类型体实现方法。create or replacetypebodyperson_
      typ9asmemberfunction get_info return varchar2is beginreturn ’姓名:’||name||’,家庭住址:’||birthdate;end;end; /③子对象类型employ_typ9create or replace typeemployee_typ9underperson_typ9(enonumber(6)salnumber(6,2),job varchar2(10),member function get_other return varchar2);/create or replace type body employee_typ9 as member function get_other return varchar2is beginreturn ‘员工名称:’||name||’,工资:’||sal;end;
      end;/④对子对象类型的调用create table employee_tab9 of employ_typ9;
      insertinto employee_tab9(‘马丽’,’女’,’01-11月-76’,大庆让胡路区’,1,1500,’图书管理’);declare v_employeeemployee_typ9;beginselect value(a) into v_employee from employee_tab9awherea.eno=&no;dbms_output.put_line(v_employee.get_info);dbms_output.put_line(v_employee.get_other);end;/输入no的值:1姓名:马丽,家庭住址:大庆让胡路区员工名称:马丽,工资:1500
      (5)ORDBMS与RDBMS对比。在Oracle9i中,面向对象的程序设计是基于对象类型来实现的。对象类型是一种自定义的复合数据类型,它封装了数据结构和用于操纵这些数据结构的过程和函数。对复杂的应用程序,应用对象类型可以降低应用开发的难度,进而提高应用开发的效率与速度。对于关系型系统,它具有简单数据类型,功能强大的查询语言。而对于面向对象关系型系统,具有复杂数据类型,功能强大的查询语言和高保护性。RDBMS与ORDBMS可通过“对象视图”进行联系。
      
      二、结束语
      
      Oracle完全支持所有三种不同的实现模型,即关系、对象关系和面向对象模型。面向对象特性是对关系数据库的扩展,用户在改进现有的关系型应用程序时,可以选择该特性。开始使用时,面向对象的特性似乎将数据库设计及其实现复杂化。而面向对象的应用者则声称,对象降低了复杂性,它简化了与数据和对象的交互,为应用面向对象的关系数据库开发者提供方便的迁移方法和处理数据的能力。◆
      
      参考文献:
      [1]杨冬青,唐世渭等译.数据库系统概念[M].北京:机械工业出版社,2003.
      
      


    我来说两句
    用户名: 密码: 匿名发表
    验证码: