Oracle8-对象关系数据库课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《Oracle8-对象关系数据库课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Oracle8 对象 关系 数据库 课件
- 资源描述:
-
1、1.n高端数据库-提高DBMS管理上限nOracle8对象关系数据库=扩充的类型系统=对象关系数据库Oracle8 数据库系统 .一、高端数据库-提高DBMS管理上限 oracle7oracle8数据库大小数据库大小32TB512KTB数据文件个数数据文件个数 1-4K64-256M每表包含列每表包含列数数2541000每表的每表的LOB列数列数1 long1000CHAR长度长度254 2000VARCHAR长度长度20004000索引列数索引列数1632.n支持上万个并发用户=多线程服务器(用少量的服务器端进程管理大量的客户端用户。=Net8(SQL*net)连接管理器连接池(TNS资源)
2、、多路传输、应用请求集中化 更有效地使用网络资源 避免操作系统对服务器网络连接数的限制客户端(服务器)服务器一、高端数据库-提高DBMS管理上限网络层透明网络底层 协议适配器.二、扩充的类型系统 -对象关系数据库 :关系模型与对象模型:新的数据类型-对象(记录)类型:对象表面向对象数据库设计:收集类型(数组与嵌套表):对象与视图 .数据库新的应用领域n 计算机辅助设计 CAD数据库必须存储和处理与工程设计相关的数据(产品部件及相互关系、设计版本)n 计算机辅助软件工程 数据库中存储软件开发人员用到的各种数据,包括源代码、模块之间依赖关系、变量定义、文档n多媒体数据库 声音、视频、图象n办公信息
3、系统n超文本数据库.应用需要新的数据类型 论文检索系统n论文标题n作者列表(第一作者,第二作者,找出某人参与撰写的所有论文)n检索关键字n发表日期(年月日分开).传统关系数据库的数据类型传统关系数据库的数据类型n复杂属性只能拆分成并列的单一属性姓名,地址(省、市、区、街道、门牌号)本来是一个结合紧密的整体,在关系数据库中却只能拆成单一属性,与其他属性并列(如姓名、年龄等),没有反映出它们的紧密关系。n无法表示变长的属性家庭记录有几个孩子 =长字段=设几个字段(不好估计)家庭编号户主子女1子女2子女3.传统关系数据库的数据类型传统关系数据库的数据类型n无法直接表示嵌套表n例:一张发货单,发三种货
4、物:=放3条记录,但公共信息存3遍(查询方便)=拆成两张表(发货单,发送货物),需要连接,费时,且要清楚表与表的关系货单号 发货人货物日期发往地货物名称价格数量.关系数据库的数据模型n数据模型是模型化数据和信息的工具。数据模型是模型化数据和信息的工具。现实世界现实世界认识认识抽象抽象信息世界概念数据模型机器世界DBMS支持的数据模型关系模型转换.数据模型演变n文件系统(OS)n层次模型网状模型关系模型(DB)n特点:=面向记录,信息由定长记录组成。=记录简单(短小)。=原子字段,字段不再含有结构。.关系模型的特点n强调数据的独立性(以数据为中心),数据与程序分离。n采用关系模型、概念单一,实体
5、和联系都是用关系来表示。n关系必须是规范化的关系,要求每一分量不可再分。n支持关系语言,具有高度非过程化,支持集合运算n 通过外来码实现表的连接(多表查询).Oracle8 扩充的类型系统n是对关系数据模型进行的扩充。n提供更为丰富的面向对象的类型系统。n扩充的类型系统允许元组的属性值为复杂类型,在关系查询语言中增加处理新数据类型的成分。=既保留关系模型基础=又提高建模能力n对象关系模型为希望使用面向对象特征的关系数据库用户提供可能。.面向对象的基本概念n面向对象方法是以要解决的问题中所涉及到的各种对象为主要考虑因素。n对象是一种看问题的观点,是对现实世界各种元素的一种抽象。对象既含数据又含功
6、能,因此具有自身处理数据的能力。对象被认为是迄今为止最接近真实事物的数据抽象。n现实世界中对象有两个共同的特点:=一方面,它们都有自己的状态。如一台电视机有自己的摆放位置,有关机和开机状态,此刻正在播放某一频道的电视节目等=另一方面,它们又都有自己的行为,如电视机的开机、关机、调台等。.面向对象的基本概念 内部实现(封装)接口属性、方法能动的主体n使电脑贴近人脑的思维模式(减少人认识问题时的认识空间和计算机处理问题时的方法空间的不一致性)。n实现软件的复用(软件芯片)。.对象的属性与方法n面向对象程序设计中的对象是现实世界对象的模型化,它同样具有状态和行为。=对象的状态用属性来维护,=对象的行
7、为用方法来实现。n因此可以简单地讲,对象是面向对象的程序设计模式,它由描述对象状态的属性(变量)和用来实现对象行为的方法(代码)组成。.对象与类n相关对象的集合称为 类(Class)n类是对象的抽象及描述,它是具有统一属性和方法的多个对象的统一描述体,是用来定义一组对象共有属性和方法的模板。n类是用来创建对象实例的样板,它包含所创建对象的状态描述和方法的定义。类是一个型,而对象则是这个型的一个实例。n类是静态概念,而对象则是一个动态概念,因为只有在运行时才给对象分配空间,对象才真正存在。.面向对象的数据模型n在一些应用中,用户将数据库中的数据看作是一组对象而非一组记录。n面向对象的数据模型是面
8、向对象程序设计思想在数据库系统中的应用。n基本思想将数据和操作这些数据的程序代码封装在一个对象里。n将一个对象存储在数据库中:=对象的数据部分必须针对各个对象分别存储。=而实现类方法的程序代码应该和类的定义一起作为数据库模式的一部分存储。.面向对象数据库n数据库中不是只存储单纯的数据,而是存储包含属性和方法的对象。n对于一个数据库对象,可定义在其上运行的过程和函数。使数据库中的数据和访问该数据的方法联系起来,可标准化数据访问的方法并提高对象的可复用性。n应用逻辑从应用程序中移动到数据库中(对象方法)n创建通用的数据库对象,并能成为数据库对象的标准,可实现数据库对象的重用。.数据模型现实世界现实
9、世界认识认识抽象抽象信息世界概念数据模型机器世界DBMS支持的数据模型对象模型转换.对象模型与关系模型n对象模型n对象类型的属性描述n对象类型的方法封装了操作该对象的代码。提供了处理数据库中数据的界面。n关系模型n二维表中列的定义n没有方法=另编程=可使用操作某数据库表的存储过程。n面向对象数据模型中的类概念实体集概念。n面向对象数据模型中的对象概念实体概念.对象模型与关系模型n关系模型可用二维表来表示 关系表:=属性 二维表的列=元组 二维表的行n对象模型可用二维表来表示 对象表:=用一个 类(对象类型)定义一个对象表=类的属性 二维表的列=对象(类的实例)二维表的行(行对象)=通过对象调用
10、对象方法。.Oracle的扩充类型nOracle是一个开放的类型系统,增加了复杂的数据类型以及用户自定义类型n用户定义的数据类型使得可以在数据库中为现实世界的对象建模=对象类型(记录类型)=数组类型=嵌套表类型n创建对象表,实现面向对象的数据库设计(而非关系型数据库设计。=应用逻辑从应用程序中移动到数据库中(对象方法).扩充类型的不同应用对象类型 数组类型 嵌套表类型 关系表 对象表对象类型.利用对象类型定义复合数据类型25.用户自定义数据类型n使用对象类型定义一个记录数据类型 CREATE TYPE name_type AS OBJECT(first_nameVARCHAR2(4),last
11、_nameVARCHAR2(4);CREATE TYPE address_type AS OBJECT(city VARCHAR2(10),street VARCHAR2(10),zip NUMBER(6);CREATE TABLE worker (wid NUMBER(5)PRIMARY KEY,wname name_type,address address_type );.对象类型数据的操作n 使用对象类型声明了关系表中的列,DML语句必须用一些特殊的语法n插入新记录时,对于对象类型的列,要使用构造函数构造出对应类型的数据。n构造函数是对象类型的特殊方法,利用此方法为该类型创建对象。构造方
12、法的名称与对象类型(类)同名。n对记录型数据的分量进行操作时,要使用“别名”.对象类型数据的操作n插入语句例:insert into workervalues(1,name_type(王,至远),address_type(北京,白颐路5号,100084);insert into workervalues(2,name_type(张,大年),address_type(天津,康宁里20号,300072);insert into workervalues(3,name_type(赵,力平),address_type(上海,南京路23号,200092);.对象类型数据的查询n查询语句1select*f
13、rom worker;WID NAME(FIRST_NAME,LAST_NAME)ADDRESS(CITY,STREET,ZIP)-1 NAME_TYPE(王,至远)ADDRESS_TYPE(北京,白颐路5号,100084)2 NAME_TYPE(张,大年)ADDRESS_TYPE(天津,康宁里20号,300072)3 NAME_TYPE(赵,力平)ADDRESS_TYPE(上海,南京路23号,200092)n查询语句2select wid,wname from worker;WID NAME(FIRST_NAME,LAST_NAME)-1 NAME_TYPE(王,至远)2 NAME_TYPE
14、(张,大年)3 NAME_TYPE(赵,力平).对象类型数据的查询n查询语句3 (用别名)select wid 顾客编号,w.address.city 城市,w.address.street 街道,w.address.zip 邮编from worker w;顾客编号 城市 街道 邮编 -1 北京 白颐路5号 100084 2 天津 康宁里20号 300072 3 上海 南京路23号 200092n查询语句4(别名的使用)select*from worker w order by w.address.zip .对象类型数据的操作n修改update worker wset w.address.zi
15、p=100083where wid=1;n删除delete from workerwhere wid=1;delete from worker wwhere w.name.first_name=王 ;n修改表结构alter table cust add(address1 address_type);n不能对表修改自定义的数据类型格式.用户自定义数据类型n对象类型更加贴近现实世界的数据特征。n使用对象类型可以更加统一、自然地声明和操作表中的数据(在整个数据库中地址一致性)n创建可为大家引用的新数据类型:=创建一个模式(如 pub)=建立公共对象类型(新数据类型)=设置必要的权限n使用 CREAT
16、E PROCEDURE new_worker(wid NUMBER,name pub.name_type,address pub.address_type).自定义数据类型上的索引create index aaa on worker(wname);ORA-02327:无法在具有数据类型 ADT 的列上创建索引。(即使在name_type类中定义了排序方法也不可以)n如经常进行如下查询:select wid 顾客编号,w.address.city 城市,w.address.street 街道,w.address.zip 邮编from worker wwhere w.address.zip=100
17、084;n可建索引如下:create index I_zip on worker(address.zip);.使用对象表 面向对象数据库设计34.建立对象表的类n 建类型(对象类型声明)create type 类型名 as object(属性名1 类型说明,属性名2 类型说明,.member function 函数名(参数说明)return 返回类型,member procedure 过程名(参数说明),);方法说明属性说明.对象属性类型n对象类型必须包含一个或多个属性,属性的类型可以是:=Oracle的原始数据类型、=LOB=对象=对象的引用(REF)=收集(COLLECTION)等.对象方
18、法n方法是一个过程或函数,是对象类型定义的一部分,是程序员编写的用于操纵对象属性的子程序,被封装在对象类型中。n方法的种类:=成员方法(member)=构造方法(constructor)=MAP 或 ORDER 方法(排序方法)n一个类可以有多个方法(也可以不定义方法)n对象类型不存储数据;必须创建相应的表来存储数据.编写方法代码n建类型体(实现类成员方法)create type body 类型名 ASmember function 函数方法名(参数说明)return 返回类型is 说明部分begin 执行部分end;member procedure 过程方法名(参数说明)is 说明部分beg
19、in 执行部分end;END;方法实现方法实现.建立对象表n建对象表 Create table 表名 of 对象类型();n例:CREATE TYPE employee_type AS OBJECT(.);CREATE TABLE employees OF employee_type (empno constraint e1 primary key);CREATE TYPE BODY employee_type();表定义的其他说明,如完整性约束等,表的列不能再定义.建立对象类型例CREATE TYPE employee_type AS OBJECT(empno NUMBER(3),ename
20、 VARCHAR2(10),sal NUMBER(6.2),hiredate DATE,MEMBER FUNCTION days_at_company RETURN NUMBER,MEMBER PROCEDURE raise_salary(increment_sal NUMBER);/.创建对象表CREATE TABLE employees OF employee_type(PRIMARY KEY(empno),UNIQUE(ename),CHECK(sal300);.建立对象类型体CREATE OR REPLACE TYPE BODY employee_type AS MEMBER FUNC
21、TION days_at_company RETURN NUMBER IS BEGIN RETURN floor(sysdate-hiredate);END;MEMBER PROCEDURE raise_salary(increment_sal NUMBER)IS BEGIN UPDATE employees SET sal=sal+increment_sal WHERE empno=SELF.empno;END;END;.对方法的限制n编译软件包中的函数或过程时,可以使用PRAGMA编译指令通知PL/SQL编译器禁止某方法对数据库表和包中的变量读写,当方法体中出现违反情况时,编译出错。n格式
22、:PRAGMA RESTRICT_REFERENCES(function_name,WNDS,WNPS,RNDS,RNPS);=WNDS 不允许写数据库=RNDS 不允许读数据库=WNPS 不允许改程序包变量=RNPS 不允许引用程序包变量 .对方法的限制CREATE OR REPLACE TYPE employee_type AS OBJECT(empno NUMBER,ename VARCHAR2(10),sal NUMBER,hiredate DATE,MEMBER FUNCTION days_at_company RETURN NUMBER,MEMBER PROCEDURE raise
23、_salary(increment_sal NUMBER),PRAGMA RESTRICT_REFERENCES(days_at_company,WNDS,WNPS);.对方法的限制CREATE OR REPLACE TYPE BODY employee_type AS MEMBER FUNCTION days_at_company RETURN NUMBER IS BEGIN RETURN floor(sysdate-hiredate);UPDATE employees SET hiredate=hiredate+30;-END;.END;-0/0 PL/SQL:Compilation un
24、it analysis terminated2/10 PLS-00452:子程序 DAYS_AT_COMPANY 违反了它的相关编译指令.对象类型-构造子方法nOracle 自动地为每个对象类型创建一个构造方法。n构造子方法的名称采用对象类型名。n构造子方法的参数即对象类型的所有属性。n构造子方法初始化一个对象类型的实例,并将它的属性赋值。n例:insert into employees values(employee_type(1,Jone,500,5-10月-1989);.对象表操作n建表 create table employees of employee_type;n插入数据inser
25、t into employees values(employee_type(1,Jone,500,5-10月-1989);insert into employees -省略构造方法values(1,Jone,1500,5-10月-1989);insert into employees values(2,smith,700,10-5月-1997);insert into employees values(3,king,900,25-12月-2000);.获取行对象value函数nvalue(对象表别名)返回一个行对象(对象类型)nvalue用于从对象表中取得对象实例。n 不使用value,SEL
展开阅读全文