`
yunzhongxia
  • 浏览: 647345 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

数据库对象

阅读更多

     从Oracle8开始就可以在数据库中使用对象了。数据库的对象类型和Java很类似,都可以包含自己的属性和方法。属性可以存储对象的状态,方法可用于建立对象的行为模型。对象类型有时候也称为用户自定义类型。

 

     本文讲解的例子设计到三个对象类型,第一个是产品,包含产品的id、名称、说明、价格,还包含一个保质期,过期的产品必须处理掉。第二个是人,包含姓名、生日、地址。地址本身也是一个对象,地址包含街道、城市、州、邮编之类的信息。以下是三者时间的UML图。

1.创建对象类型

 

CREATE [OR REPLACE] TYPE 语句用于创建对象类型。下面的语句将创建地址类型。

 

 

CREATE OR REPLACE TYPE address_typ AS OBJECT(
       street VARCHAR2(15),
       city VARCHAR2(15),
       state VARCHAR2(15),
       zip VARCHAR2(6)
);

 

创建Person类型,注意person_typ 的address类型为address_typ。

 

CREATE OR REPLACE TYPE person_typ AS OBJECT(
       id  NUMBER,
       first_name VARCHAR2(15),
       last_name VARCHAR2(15),
       dob DATE,
       phone VARCHAR2(11),
       address address_typ
);

 

创建产品类型,注意product_typ声明了一个函数get_sell_by_date(). 这个函数根据days_valid属性和当前日期,返回产品的最晚售出日期。

CREATE OR REPLACE TYPE product_typ AS OBJECT(
       id  NUMBER,
       name VARCHAR2(15),
       description VARCHAR2(15),
       price NUMBER(5,2),
       days_valid NUMBER,
       MEMBER FUNCTION get_sell_by_date RETURN DATE
);

 

  MEMBER FUNCTION 字句用于声明get_sell_by_date()函数;MEMBER  PROCEDURE用于声明一个过程。过程与函数唯一的区别就是过程通常没有返回值。

  由于product_typ 包含了方法的声明,所以必须为product_typ 创建对象体。可以通过CREATE TYPE BODY 语句创建对象体。下面的代码为product_typ 创建对象体。注意这个对象体中get_sell_by_date()函数的定义代码。

 

CREATE OR REPLACE TYPE BODY product_typ AS
  MEMBER FUNCTION get_sell_by_date RETURN DATE IS
    v_sell_by_date DATE;
  BEGIN
    SELECT days_valid + SYSDATE INTO v_sell_by_date FROM dual;
    RETURN v_sell_by_date;
  END;
END;

 

  2.使用DESCRIBE获取有关对象类型的信息

 

   DESCRIBE命令可以用来获得对象类型的信息。下面是address_typ和 person_typ的说明。

SQL> desc address_typ;
Element Type         
------- ------------ 
STREET  VARCHAR2(15) 
CITY    VARCHAR2(15) 
STATE   VARCHAR2(15) 
ZIP     VARCHAR2(6)  
 
SQL> desc person_typ;
Element    Type         
---------- ------------ 
ID         NUMBER       
FIRST_NAME VARCHAR2(15) 
LAST_NAME  VARCHAR2(15) 
DOB        DATE         
PHONE      VARCHAR2(11) 
ADDRESS    ADDRESS_TYP  

 

SET  DESCRIBE DEPTH 可以设置DESCRIBE显示信息的深度。下面这个例子将深度改为2,然后显示person_typ的信息。

 

 

注意:SET  DESCRIBE DEPTH 必须在sql*plus中用system登录才可以执行。

 

4.用对象类型定义列对象和对象表

 

 对象类型可以用来定义表中的列,这种列称为列对象(Column Object)。同时,当对象类型包含嵌入对象类型时,嵌入对象类型也是一个列对象。person_typ就是一个例子,其中包含一个嵌入的address_typ列对象,名为address。

下面这个例子创建表products,其中包含一个product_typ列对象。注意还包含一个quantity_in_stock,表示库存的数量。

CREATE TABLE products(
       product product_typ,
       quantity_in_stock NUMBER
);

 

也可以用对象类型定义表,这个表称为对象表(Object Table).下面两句代码分别创建object_products和object_customers,分别使用product_typ和person_typ定义。注意OF字句将每个表表示为对象表。

CREATE TABLE object_products OF product_typ;
CREATE TABLE object_customers OF person_typ;

 

包含列对象的表和对象表之间的唯一区别是,前者可以含有其他列。

 

 

  对象引用与对象标识符

 

  对象表的另一个不同之处可以使用对象引用(objec reference)为对象表之间的关系建立模型,而不是外键。对象引用使用REF类型进行定义,通常都用作指向对象表中的对象的指针。对象表中的每个对象都具有惟一的对象标识符   (object identifier,OID),它可以存储在REF列中。下面这个例子创建purchases,其中包含两个REF列:

CREATE TABLE purchases(
       id NUMBER PRIMARY KEY,
       customer REF person_typ SCOPE IS object_customers,
       product REF  product_typ SCOPE IS object_products
);

 

SCOPE IS 字句将对象引用限制在特定表中的对象上,例如,customer列被限制在指向object_customers表中的对象。

 

下一篇将主要讲解对对象类型的DML操作。

 

 

  • 大小: 42 KB
  • 大小: 23.2 KB
0
1
分享到:
评论

相关推荐

    实验2 MySQL数据库对象管理

    实验2 "MySQL数据库对象管理" 是数据运维课程的一部分,旨在帮助学生理解并掌握数据库中的核心元素,如数据字典、表、索引、视图等。实验内容分为多个步骤,涵盖了从查看元数据信息到实际创建、修改和删除数据库对象...

    实验2 MySQL数据库对象管理.pdf

    MySQL数据库对象管理实验知识点: 一、MySQL数据字典的作用与操作 数据字典是数据库系统中关于数据库的描述信息,它可以看作数据库中所有对象的元数据存储。在MySQL中,INFORMATION_SCHEMA数据库提供了访问数据库...

    国家开放大学 数据库运维 形考2 MySQL数据库对象管理

    MySQL 数据库对象管理 本节实验旨在帮助学生理解数据字典、表、索引、视图的作用,掌握数据字典的操纵方式,掌握库、表、索引、视图的操作方法。通过对 INFORMATION_SCHEMA 中各个表的查看、创建、修改和删除操作,...

    PostgreSQL数据库对象名大小写敏感的解决方法

    ### PostgreSQL数据库对象名大小写敏感的解决方法 在IT领域,特别是数据库管理中,了解不同数据库管理系统(DBMS)对大小写敏感性的处理方式至关重要。本文将深入探讨PostgreSQL数据库对象名大小写敏感的问题,以及...

    数据库数据库数据库对象

    数据库数据库数据库对象数据库数据库数据库对象连接

    数据库对象命名规范

    本文档描述了数据库设计规则、数据库对象命名规范,SQL语句规则,软件开发项目中的必备文档,免得每次都要自己重新写

    查询当前数据库对象大小

    查询数据库的数据文件及日志文件的相关信息(包括文件组、当前文件大小、文件最大值、文件增长设置、文件逻辑名、文件路径等)

    SILVER对象数据库对象持久化JAVA实现.pdf

    "SILVER对象数据库对象持久化JAVA实现" SILVER对象数据库对象持久化JAVA实现是面向对象数据库技术在关系型数据库基础上实现对象持久化的解决方案。该解决方案基于SILVER对象数据库amodel,旨在实现面向对象编程语言...

    规则引擎-数据库对象

    在规则引擎中,数据库对象是用于表示和操作数据库中特定表或视图的抽象。它们使得规则引擎能够与数据库进行交互,而无需直接编写SQL语句。通过这些对象,我们可以对数据库进行CRUD(Create, Read, Update, Delete)...

    Toad Coding 与 VSS实现数据库对象的版本控制

    ### Toad Coding 与 VSS 实现数据库对象的版本控制 #### 一、知识点概览 本文档将详细介绍如何利用Toad Team Coding结合Microsoft Visual SourceSafe(简称VSS)实现数据库对象的版本控制。主要涉及以下核心知识点...

    DB2数据服务器、数据库和数据库对象指南

    根据提供的文件信息,我们可以推断出这是一份关于DB2数据服务器、数据库及数据库对象的指南文档。尽管原文中包含了一些非文字字符和难以解析的内容,我们仍然可以从中提取一些关键信息并围绕这些信息展开讨论。 ###...

    Oracle中提取和存储数据库对象的DDL

    Oracle 中提取和存储数据库对象的 DDL Oracle 中提取和存储数据库对象的 DDL 是一种常见的数据库操作,涉及到从数据库对象(例如数据库表、索引、约束、触发器等)中提取元数据(metadata),并把这些数据存储在...

    DB2数据库对象基础知识.docx

    ### DB2数据库对象基础知识 #### 一、数据库对象概述 在DB2中,数据库对象是构建数据库的基础单元,它们能够帮助我们有效地组织、管理和访问数据。通过数据定义语言(DDL)可以实现对这些对象的创建、修改和删除...

    第5章 其他数据库对象.ppt

    【第5章 其他数据库对象】 在Oracle数据库中,除了基本的表和视图之外,还有多种其他数据库对象,这些对象提供了丰富的功能,增强了数据库的管理和使用效率。本章将详细探讨以下六个主题: 5.1 数据库模式对象 ...

    ADO数据库对象模块.rar

    在“ADO数据库对象模块.rar”这个压缩包中,包含的是易语言编写的ADO数据库对象模块源码,这对于学习易语言以及了解ADO在数据库操作中的应用非常有帮助。 易语言是一种中国本土开发的、面向对象的、以中文作为程序...

    oracle数据库对象管理笔记.doc

    Oracle数据库对象管理笔记 Oracle 数据库对象管理是 Oracle数据库中的一项重要功能,它允许用户在数据库中创建、管理和维护不同的对象,例如表、索引、存储过程、函数等。本笔记将为您详细讲解 Oracle 数据库对象...

    vb.net2008数据库对象实例.zip

    VB.NET 2008数据库对象的使用是一个关键的话题,尤其对于那些正在学习或从事.NET框架下编程的开发者来说。这个压缩包文件“vb.net2008数据库对象实例.zip”提供了一些关于如何在VB.NET 2008中与数据库进行交互的实际...

Global site tag (gtag.js) - Google Analytics