您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Oracle8 对象关系数据库
Oracle8对象关系数据库高端数据库-提高DBMS管理上限Oracle8对象关系数据库扩充的类型系统对象关系数据库Oracle8数据库系统一、高端数据库-提高DBMS管理上限oracle7oracle8数据库大小32TB512KTB数据文件个数1-4K64-256M每表包含列数2541000每表的LOB列数1long1000CHAR长度2542000VARCHAR长度20004000索引列数1632支持上万个并发用户多线程服务器(用少量的服务器端进程管理大量的客户端用户。Net8(SQL*net)•连接管理器—连接池(TNS资源)、多路传输、应用请求集中化•更有效地使用网络资源•避免操作系统对服务器网络连接数的限制客户端(服务器)服务器一、高端数据库-提高DBMS管理上限网络层透明网络底层协议适配器二、扩充的类型系统-对象关系数据库关系模型与对象模型新的数据类型-对象(记录)类型对象表—面向对象数据库设计收集类型(数组与嵌套表)对象与视图数据库新的应用领域计算机辅助设计CAD数据库必须存储和处理与工程设计相关的数据(产品部件及相互关系、设计版本…)计算机辅助软件工程数据库中存储软件开发人员用到的各种数据,包括源代码、模块之间依赖关系、变量定义、文档…多媒体数据库声音、视频、图象…办公信息系统超文本数据库应用需要新的数据类型——论文检索系统论文标题作者列表(第一作者,第二作者,找出某人参与撰写的所有论文…)检索关键字发表日期(年月日分开)传统关系数据库的数据类型复杂属性只能拆分成并列的单一属性姓名,地址(省、市、区、街道、门牌号)本来是一个结合紧密的整体,在关系数据库中却只能拆成单一属性,与其他属性并列(如姓名、年龄等),没有反映出它们的紧密关系。无法表示变长的属性家庭记录有几个孩子长字段设几个字段(不好估计)家庭编号户主子女1子女2子女3…传统关系数据库的数据类型无法直接表示嵌套表例:一张发货单,发三种货物:放3条记录,但公共信息存3遍(查询方便)拆成两张表(发货单,发送货物),需要连接,费时,且要清楚表与表的关系货单号发货人货物日期…发往地货物名称价格数量关系数据库的数据模型数据模型是模型化数据和信息的工具。现实世界认识抽象信息世界-概念数据模型机器世界-DBMS支持的数据模型关系模型转换数据模型演变文件系统(OS)层次模型——网状模型——关系模型(DB)特点:面向记录,信息由定长记录组成。记录简单(短小)。原子字段,字段不再含有结构。关系模型的特点强调数据的独立性(以数据为中心),数据与程序分离。采用关系模型、概念单一,实体和联系都是用关系来表示。关系必须是规范化的关系,要求每一分量不可再分。支持关系语言,具有高度非过程化,支持集合运算通过外来码实现表的连接(多表查询)Oracle8—扩充的类型系统是对关系数据模型进行的扩充。提供更为丰富的面向对象的类型系统。扩充的类型系统允许元组的属性值为复杂类型,在关系查询语言中增加处理新数据类型的成分。既保留关系模型基础又提高建模能力对象关系模型为希望使用面向对象特征的关系数据库用户提供可能。面向对象的基本概念面向对象方法是以要解决的问题中所涉及到的各种对象为主要考虑因素。对象是一种看问题的观点,是对现实世界各种元素的一种抽象。对象既含数据又含功能,因此具有自身处理数据的能力。对象被认为是迄今为止最接近真实事物的数据抽象。现实世界中对象有两个共同的特点:一方面,它们都有自己的状态。如一台电视机有自己的摆放位置,有关机和开机状态,此刻正在播放某一频道的电视节目等另一方面,它们又都有自己的行为,如电视机的开机、关机、调台等。面向对象的基本概念内部实现(封装)接口属性、方法能动的主体使电脑贴近人脑的思维模式(减少人认识问题时的认识空间和计算机处理问题时的方法空间的不一致性)。实现软件的复用(软件芯片)。对象的属性与方法面向对象程序设计中的对象是现实世界对象的模型化,它同样具有状态和行为。对象的状态用属性来维护,对象的行为用方法来实现。因此可以简单地讲,对象是面向对象的程序设计模式,它由描述对象状态的属性(变量)和用来实现对象行为的方法(代码)组成。对象与类相关对象的集合称为类(Class)类是对象的抽象及描述,它是具有统一属性和方法的多个对象的统一描述体,是用来定义一组对象共有属性和方法的模板。类是用来创建对象实例的样板,它包含所创建对象的状态描述和方法的定义。类是一个型,而对象则是这个型的一个实例。类是静态概念,而对象则是一个动态概念,因为只有在运行时才给对象分配空间,对象才真正存在。面向对象的数据模型在一些应用中,用户将数据库中的数据看作是一组对象而非一组记录。面向对象的数据模型是面向对象程序设计思想在数据库系统中的应用。基本思想—将数据和操作这些数据的程序代码封装在一个对象里。将一个对象存储在数据库中:对象的数据部分必须针对各个对象分别存储。而实现类方法的程序代码应该和类的定义一起作为数据库模式的一部分存储。面向对象数据库数据库中不是只存储单纯的数据,而是存储包含属性和方法的对象。对于一个数据库对象,可定义在其上运行的过程和函数。使数据库中的数据和访问该数据的方法联系起来,可标准化数据访问的方法并提高对象的可复用性。应用逻辑从应用程序中移动到数据库中(对象方法)创建通用的数据库对象,并能成为数据库对象的标准,可实现数据库对象的重用。数据模型现实世界认识抽象信息世界-概念数据模型机器世界-DBMS支持的数据模型对象模型转换对象模型与关系模型对象模型对象类型的属性描述对象类型的方法封装了操作该对象的代码。提供了处理数据库中数据的界面。关系模型二维表中列的定义没有方法另编程可使用操作某数据库表的存储过程。面向对象数据模型中的类概念—实体集概念。面向对象数据模型中的对象概念—实体概念对象模型与关系模型关系模型可用二维表来表示——关系表:属性—二维表的列元组—二维表的行对象模型可用二维表来表示——对象表:用一个类(对象类型)定义一个对象表类的属性—二维表的列对象(类的实例)—二维表的行(行对象)通过对象调用对象方法。Oracle的扩充类型Oracle是一个开放的类型系统,增加了复杂的数据类型以及用户自定义类型用户定义的数据类型使得可以在数据库中为现实世界的对象建模对象类型(记录类型)数组类型嵌套表类型创建对象表,实现面向对象的数据库设计(而非关系型数据库设计。应用逻辑从应用程序中移动到数据库中(对象方法)扩充类型的不同应用对象类型数组类型嵌套表类型关系表对象表对象类型利用对象类型定义复合数据类型用户自定义数据类型使用对象类型定义一个记录数据类型CREATETYPEname_typeASOBJECT(first_nameVARCHAR2(4),last_nameVARCHAR2(4));CREATETYPEaddress_typeASOBJECT(cityVARCHAR2(10),streetVARCHAR2(10),zipNUMBER(6));CREATETABLEworker(widNUMBER(5)PRIMARYKEY,wnamename_type,addressaddress_type);对象类型数据的操作使用对象类型声明了关系表中的列,DML语句必须用一些特殊的语法插入新记录时,对于对象类型的列,要使用构造函数构造出对应类型的数据。构造函数是对象类型的特殊方法,利用此方法为该类型创建对象。构造方法的名称与对象类型(类)同名。对记录型数据的分量进行操作时,要使用“别名”对象类型数据的操作插入语句例:insertintoworkervalues(1,name_type('王','至远'),address_type('北京','白颐路5号',100084));insertintoworkervalues(2,name_type(‘张’,‘大年'),address_type(‘天津’,‘康宁里20号’,300072));insertintoworkervalues(3,name_type('赵','力平'),address_type('上海','南京路23号',200092));对象类型数据的查询查询语句1select*fromworker;WIDNAME(FIRST_NAME,LAST_NAME)ADDRESS(CITY,STREET,ZIP)-----------------------------------------------------------------------------------------------------1NAME_TYPE(‘王’,‘至远’)ADDRESS_TYPE('北京','白颐路5号',100084)2NAME_TYPE(‘张’,‘大年’)ADDRESS_TYPE(‘天津’,‘康宁里20号’,300072)3NAME_TYPE(‘赵’,‘力平’)ADDRESS_TYPE(‘上海’,‘南京路23号’,200092)查询语句2selectwid,wnamefromworker;WIDNAME(FIRST_NAME,LAST_NAME)----------------------------------------------------------1NAME_TYPE(‘王’,‘至远’)2NAME_TYPE(‘张’,‘大年’)3NAME_TYPE(‘赵’,‘力平’)对象类型数据的查询查询语句3(用别名)selectwid顾客编号,w.address.city城市,w.address.street街道,w.address.zip邮编fromworkerw;顾客编号城市街道邮编-------------------------------------------------1北京白颐路5号1000842天津康宁里20号3000723上海南京路23号200092查询语句4(别名的使用)select*fromworkerworderbyw.address.zip对象类型数据的操作修改updateworkerwsetw.address.zip=100083wherewid=1;删除deletefromworkerwherewid=1;deletefromworkerwwherew.name.first_name=‘王’;修改表结构altertablecustadd(address1address_type);不能对表修改自定义的数据类型格式用户自定义数据类型对象类型更加贴近现实世界的数据特征。使用对象类型可以更加统一、自然地声明和操作表中的数据(在整个数据库中地址一致性)创建可为大家引用的新数据类型:创建一个模式(如pub)建立公共对象类型(新数据类型)设置必要的权限使用CREATEPROCEDUREnew_worker(widNUMBER,namepub.name_type,addresspub.address_type)自定义数据类型上的索引createindexaaaonworker(wname);ORA-02327:无法在具有数据类型ADT的列上创建索引。(即使在name_type类中定义了排序方法也不可以)如经常进行如下查询:selectwid顾客编号,w.address.city城市,w.address.street街道,w.address.zip邮编fromworkerwwherew.address.zip=100084;可建索引如下:createindexI_ziponworker(address.zip);使用对象表—面向对象数据库设计建立对象表的类建类型(对象类型声明)createtype类型名asobject(属性名1类型说明,属性名2类型说明,…...memberfunction
本文标题:Oracle8 对象关系数据库
链接地址:https://www.777doc.com/doc-9587 .html