对象关系数据库.ppt

4.对象引用 对象引用常需用到对象表。 对象表是用对象类型定义的数据库表;对象表的每行都有系统分配的唯一的对象标识符(OID);OID是全局唯一的,具有OID的对象可以被引用(REF),对象引用实现不同对象之间的联系。 一个属性可以是对一个指定类型的对象的引用。 一般格式如下: 属性 REF (类型名) SCOPE IS 表 其中REF是指向行对象的引用指针,实现表和表之间的联系,故对象之间连接不再需要关系表的连接操作。 引用只能用于具有OID的对象(将对象表的别名作为REF的参数,可以取得对应OID的引用值)。 SCOPE子句用于限定引用的对象在一个指定的表中,这样可以提高查询性能。在对象引用中,由于使用了对象标识,故不必使用主键。 【例8】对象表与引用 ①创建对象类型: CREATE TYPE officetype AS OBJECT (id VARCHAR2(4), typename VARCHAR2( 10 ) ); ②创建该对象类型的对象表,并插入若干对象: CREATE TABLE office OF officetype; INSERT INTO office VALUES(‘0001’ , ‘总务科’); INSERT INTO office VALUES(‘0002’ , ‘教务处’); ③创建关联对象表(使用REF ,指示OID进行对象表关联)。 CREATE TABLE worker (wid VARCHAR2 (6) PRIMARY KEY , wname VARCHAR2 (8), woffice REF officetype SCOPE IS office, phone VARCHAR2(15 ) ); 【例8】对象表与引用 插入数据: INSERT INTO worker SELECT ‘w001’,‘李斌’, REF(o), ‘027 FROM office o WHERE id=‘0001’; ④ 使用VALUE(别名)查询对象内容: SELECT VALUE(o1) FROM worker o1; ⑤ DEREF函数返回指针指向的对象。 形式为:DEREF (REF指针)。 使用DEREF 取得关联对象表相关内容: SELECT wid,wname,DEREF(w.woffice),phone FROM worker w WHERE wid = ‘w001’ ; 结果形式为: w001 李斌 OFFICETYPE(‘0001’, ‘总务科’) 027 5.对象视图 对象视图允许用存储在关系表或对象表中的数据合成新对象。对象视图分为基于关系表的对象视图和基于对象表的对象视图两类。 CREATE [OR REPLACE] VIEW 对象视图名 OF 对象类型 WITH OBJECT OID (列名) --列名须提供对象视图中用来标识对象的键 AS SELEC 目标列表 FROM 关系表名|对象表名; 对象视图--基于关系表 【例10】为建立视图准备,定义相关表和对象类型: CREATE TABLE worker_r (no number(5), name VARCHAR2(8), city VARCHAR2(10), zip number(6) ) ; … --插入若干数据略。 CREATE TYPE addr_type AS OBJECT ( city VARCHAR2(10), zip NUMBER(6) ) ; ①创建的视图的结构: CREATE TYPE worker_type AS OBJEC (no NUMBER(5),name VARCHAR2(8), address addr_type ) ; ②建对象视图: CREATE VIEW worker_v OF worker_type WITH OBJECT OID (no) AS SELECT no , name, addr_type(city, zip) from worker_r -- 数据来源于关系表 WHERE city=‘武汉市’; 6.大对象类型(LOB) LOB主要用于复杂数据,可存储达十亿字节的串。 分为: 字符型大对象 (CLOB)、二进制大对象 (BLOB) 表中列可定义为大对象类型,可进行更新、查询操作,以及赋值、比较、连接、取子串等运算。 大对象数据示例: CREATE TABLE mail ( origin VARCHAR(20), address VARCHAR(20), arrival DATE,

文档评论(0)

1亿VIP精品文档

相关文档