面向对象数据库.ppt

上传人:李司机 文档编号:4113817 上传时间:2023-04-04 格式:PPT 页数:63 大小:415.50KB
返回 下载 相关 举报
面向对象数据库.ppt_第1页
第1页 / 共63页
面向对象数据库.ppt_第2页
第2页 / 共63页
面向对象数据库.ppt_第3页
第3页 / 共63页
面向对象数据库.ppt_第4页
第4页 / 共63页
面向对象数据库.ppt_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《面向对象数据库.ppt》由会员分享,可在线阅读,更多相关《面向对象数据库.ppt(63页珍藏版)》请在三一办公上搜索。

1、1,第八章 面向对象数据库,2,本章主要内容:面向对象数据模型 面向对象数据库的查询 面向对象数据库的并发控制 面向对象数据库管理系统 对象关系数据库系统,3,8.1 新应用的需求和传统数据库的局限性,关系数据库系统的不足:(1)关系模型结构简单,不能很好模拟复杂对象(2)数据类型简单,没有定义抽象数据类型的能力(3)结构与行为完全分离,使数据库中的信息仅能由识别他们的应用程序解释执行;(4)查询实现复杂,连接优化降低了存取效率。,下下,4,OODB vs RDB,RDBMS,Original,Stored,Recovered,5,89年1月,在美国ANSI/X3/SPARC的数据库系统研究组

2、(DBSSG)下成立了面向对象数据库任务组(OODBTG),专门对对象数据管理的标准化进行了研究。90年高级DBMS功能委员会发表了第三代数据库系统宣言的文章,文章中提出了第三代DBMS应具有的基本特征:,(1)支持面向对象的数据模型,支持复杂数据类型;(2)具有第二代数据库系统的优点,即高效、安全、方便(3)具有开放性,即支持数据库标准(SQL)、网络协议、适应多种软硬件平台。,6,8.2 面向对象程序设计语言,面向对象程序设计的特点支持模块化设计以主体数据(对象)为中心,以数据上的操作作为界面进行设计(结构化的方法:数据输入处理数据输出)软件复用 对象封装使程序员可以通过界面理解和操作对象

3、对象继承允许对象实现复用具有相同特征的其它对象代码 软件维护面向对象的软件开发,从分析、设计、实现和测试等阶段都是基于对象的概念,在开发和维护阶段,软件系统的结构都是一致的,易于维护。,7,面向对象程序设计方法在计算机多个领域产生深远影响程序设计语言人工智能软件工程信息系统设计计算机硬件设计数据库面向对象数据库系统:ObjectStore、O2、Orion、Versant、Gemstone、Itasca,8,面相对象数据库系统在许多应用中取得了进展:,(1)计算机辅助设计与制造(CAD/CAM);(2)计算机集成制造(CIM);(3)计算机辅助软件工程(CASE);(4)地理信息系统(GIS)

4、;(5)企业资源规划(ERP);(6)能源管理系统(EMS)。,9,OO数据模型用面向对象的观点描述现实世界对象的逻辑组织、对象之间的限制、联系的模型称为OO数据模型。OO模型的核心概念对象属性集合 描述对象的状态、组成和特征方法集合 描述对象的行为特征消息集合 是对象向外提供的界面,由对象接收和响应简单对象、复杂对象,8.3 面向对象数据模型,10,对象标识每个对象都有一个内部标识符OID,OID在整个系统中 是唯一的,一旦生成就不能改变。OID的表示值标识 由对象的属性组成对象标识 指针标识 指向物理存储位置的指针作为对象标识代用品法(surrogate),与对象的内部属性无关。,11,封

5、装每个对象都是其状态和行为的封装体。类 具有相同特征对象的集合;对象为类中的实例。类本身看作对象,称为类对象。面向对象数据库模式是类的集合,形成类层次结构类层次一组相关类形成类层次结构子类、超类子类和超类的关系体现了“is A”的语义,12,类层次的例子,类层次 一组相关类形成类层次结构子类、超类子类和超类的关系体现了“is A”的语义,13,继承 子类和超类间具有继承关系子类继承超类的属性和方法。单继承和多继承 解决同名冲突的方法:子类与超类间的同名冲突按子类优先处理;多个超类间的同名冲突,按说明超类的先后取第一个超类中的定义 或 规定继承的超类;提供显式方法:从多个冲突的实例变量或方法中继

6、承一个;继承多个,在类定义中重新命名。,14,多态性 同一操作有不同的实现,取决于具体对象。如“”法 滞后联编对对象操作的编译推迟到运行时实现,称滞后联编。例:在同一个超类的不同子类上执行同一个操作。如同一个显示操作可以显示不同的数据类型:人的信息、图象,对象的嵌套复合类层次结构 书:书号、书名、作者、出版社、出版日期。作者:作者名、地址、电话 出版社:出版社名、地址、负责人,15,一般提供:对单一类中对象的查询 以类为根的类层次上的查询。二类索引:类层次索引 嵌套属性索引,8.4 面向对象数据库系统的查询,16,类层次索引 建立在类C的属性A上的一个类层次索引,是以该类为根的类层次中所有类在

7、属性A上的单一索引,属性A称为索引属性,类C称为索引类。在单一类上建立的索引称为单一索引。,8.4 面向对象数据库系统的查询,17,嵌套属性索引 在复合类层次的某个类的属性上建立索引。这种索引是以索引类为根的类复合层次中某个类的属性,该属性称为索引类的嵌套属性。,书:书号、书名、作者、出版社、出版日期。作者:作者名、地址、电话 出版社:出版社名、地址 若在auth_name上建立book的嵌套属性索引,可找到某个作者的所有书,以加快查找速度。,下下,18,定义图书类:class book book_no:string;book_name:string;written_by:author;pub

8、lisher_by:publisher;date_of_publation:date;new();class author;class publisher;,19,OODB语言标准,大多采用了扩充SQL语言的方法,称为OSQL。例:检索作者为严亮的“数据库原理”书的出版社名。SELECT b.published_by.publi_name FROM b IN book WHERE b.book_name=“数据库原理”AND b.written_by.auth_name=“严亮”;,8.4 面向对象数据库系统的查询(续),20,在OODBS中的更新处理:(1)当一个事务访问某个类的实例时其它事

9、务不能对这个类的任何超类进行修改。(2)一个事务在查询计算时其它事务也不能修改该类的所有子类。查询一个类时要对该类和所有子类进行评估。在OODBMS中需要提供更复杂的锁机制,需要锁更多的语义信息。,8.5 面向对象数据库系统的并发控制,21,8.5 面向对象数据库系统的并发控制,多粒度锁,锁的粒度有:RDBS中的锁粒度:逻辑单元(属性、元组、表、数据库),物理单元(数据页、索引页、数据块)。OODBMS中锁的粒度:数据库、类、对象、属性、物理页等。,22,多粒度封锁,允许类层次中的每个结点单独加锁对一个结点加锁,其下层结点也被加以同样类型的隐式锁。在多粒度封锁中一个数据对象可以两种方式封锁:显

10、式封锁和隐式封锁,23,多粒度封锁,显式封锁通过上锁命令(LOCK)直接加到数据对象上的封锁;隐式封锁该数据对象没有独立加锁,是由于其上级结点加锁而使该数据对象隐式加了锁。隐式锁和显式锁的作用是一样的,24,对某个数据对象加锁 时系统检查的内容,该数据对象有无显式封锁与之冲突 所有上级结点检查本事务的显式封锁是否与该数据对象上的隐式封锁冲突:(由上级结点封锁造成的)所有下级结点看上面的显式封锁是否与本事务的隐式封锁(加到下级结点的封锁)冲突。,25,意向锁(intention lock),例:事务T对类C 加X锁,系统必须检查其所有超类结点有无冲突、所有子类有无冲突,如果有冲突,则T等待。,引

11、进意向锁目的提高对数据对象加锁时系统的检查效率 引入意向锁,在某对象实例上加S或X锁前,先在其祖先结点上加意向锁,事务T对类C请求 加X锁时,只要检查该类上的意向锁即可。,26,什么是意向锁对任一结点加基本锁,必须先对它的上层结点加意向锁如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁,意向锁,27,常用意向锁,意向共享锁(Intent Share Lock,简称IS锁)意向排它锁(Intent Exclusive Lock,简称IX锁)共享意向排它锁(Share Intent Exclusive Lock,简称SIX锁),28,意向锁:IS、IX、SIX意向共享锁(IS):对一个数据

12、对象加IS锁,表示事务可能对类中的实例显式请求S锁。意向排它锁(IX):在类上加IX锁表示事务可能对类中实例显式请求X或S锁。,意向锁,29,共享意向排它锁(SIX)SIX=S+IX,在类上加SIX锁表示对类中所有实例都隐式地加了S锁。表示该事务要读类中实例,还可能对一些实例请求X锁。因此,仅允许其它事务读但不允许更新类中的实例。,SIX锁的引入是必要的。合适于需要查询类中的大量实例而仅更新少数实例的情况。否则,若仅加IX锁,对只需读操作的那些实例为防止其它事务写都要加S锁,增加了锁的开销。,30,共享锁(S):加S锁表示该事务读类中实例。排它锁(X):该事务要修改类中的实例,请求X锁。,31

13、,32,在OODBS中多粒度加锁的规则:(1).若事务对类层次中的某个粒度上加S锁,则在其所有祖先上都要加IS锁。(2).若事务对类层次中的某个粒度上加X锁,在该粒度的所有祖先粒度上要加IX锁或SIX锁。(3).若事务已获得对一个类的某个锁,则该类的所有子孙也隐含获得同样的锁。(4).加锁从类层次的根开始依此往下进行直到事务申请锁的那个粒度,而解锁时的顺序则是由下而上的。,33,例:已知学校人员的类层次结构,若事务T要修改李伟峰教授的属性值,则不同层次的加锁顺序和锁类型。(1)给类人加IX锁,(2)给类教职工加IX锁,(3)给类教师加IX锁,(4)给类教授加IX锁,(5)给对象李伟峰加X锁。解

14、锁的顺序:李伟峰、教授、教师、教职工、人。若要查询其他教授的信息,则对类教授改加SIX锁其它锁不变。,34,ORACLE的锁:(1)RS 行共享锁 可以上SRX、RS、RX、S锁 LOCK TABLE IN ROW SHARE MODE(2)RX 行排它锁 可以上RS、RX锁 LOCK TABLE IN ROW EXCLUSIVE MODE(3)S 共享表锁 可以上RS、S锁 LOCK TABLE IN SHARE MODE(4)SRX 共享行排它表锁 可以上RS锁 LOCK TABLE IN SHARE ROW EXCLUSIVE MODE(5)X 排它表锁 LOCK TABLE IN EX

15、CLUSIVE MODE,35,36,8.6.1 ORION的数据模型ORION支持面向对象的核心概念:对象、类、消息、方法。ORION采用多重继承,一个类可以有多个超类。解决同名冲突的方法:(1)类与超类间的同名冲突按子类优先处理;(2)多个超类间的同名冲突,按说明超类的先后取第一个超类中的定义;(3)提供显式方法:从多个冲突的实例变量或方法中继承一个;继承多个,在类定义中重新命名。,37,38,8.6.2 复合对象ORION中的对象有:复合对象、依赖对象、独立对象 复合对象:一个对象全部或部分由多个依赖对象组成。依赖对象:一个对象的存在依赖于另一个对象。依赖对象只能由一个对象所拥有。例如,

16、装在车上的发动机只能为一辆汽车所有,是依赖于汽车的。独立对象:独立于其它对象存在的对象,可以被其它对象所引用。计算机:主机,外设,生产厂 主 机:CPU,内存,硬盘,软盘 外 设:显示器,键盘,打印机,39,8.6.3 模式进化 模式进化(schema evolution)修改数据库模式:修改类结构、类格的继承结构类定义的修改 对实例变量和方法的修改;增删属性和方法。对类格的修改 增、删一个类或超类,改变类名或改变超类名的顺序。,40,8.6.3 模式进化ORION为动态修改数据库模式的功能提供了一组约束规则:(1)模式进化操作分类(2)模式进化的不变性(一致性)(3)模式进化规则,41,(1

17、)模式进化操作分类 类格结点内容的修改(增删变量和方法)边的修改(超类子类关系的修改)结点的修改(增删类、改类名)(2)模式进化的不变性 模式修改后保持成立的特性(模式一致性:模式内部的一致性约束)同一类中的类名、变量名和方法名的唯一性 被引用的类、操作和实现必须存在 子类/超类不能有环、多继承不能有冲突,42,(3)模式进化规则 冲突解决规则 发生命名冲突时的继承规则 性质传播(修改传播)规则 修改超类结果传播给子类 DAG操纵规则 对类格修改的规则:增加一个子类的超类,该超类排在所有超类的最后,43,8.6.4 版本管理 版本 类对象版本、实例对象版本 ORION提供二类版本 1.临时版本

18、 可修改和删除,可由它导出新的临时版本。2.工作版本 只能查看不能修改,可导出临时版本。版本对象描述 对象标识符、版本号、版本状态(临时、工作),44,版本管理线性版本管理模型按照版本出现的先后顺序排列树型版本管理模型 一个版本有多个后继版本,能反映版本间的依赖关系。有向无环图版本管理模型一个版本有多个前驱版本和多个后继版本,45,DB0生成的不同版本,DB0,DB4,DB3,DB2,DB1,DB6,DB7,DB5,46,8.6.4 版本管理 对版本操作命令:,Create(创建版本对象,生成对象结构);Derive(派生新的临时版本);Replace(替换临时版本的内容);Delete(删除

19、版本);Promote(改临时版本工作版本).,48,49,OODB存在的问题:已有OODBMS在程序设计接口、实现方法、对查询的支持等多个方面存在许多差异;模式进化难于实现;与应用程序密切相关,许多系统仅支持一种语言 健壮性、容错性;缺乏开发工具。,50,87 对象关系数据库系统 对象关系数据库系统在关系系统基础上应具有以下特征:扩充数据类型;支持复杂对象管理(组合、集合、引用);支持继承(子类/超类,单继承/多继承);提供通用规则系统(事件和动作为任意SQL语句的主动性规则、自定义函数、规则的继承),51,对象关系数据库系统中扩展的数据类型扩展的类型:LOB BOOLEAN 集合类型ARR

20、AY 用户定义的DISTINCT类型 面向对象的数据类型 行类型ROW TYPE 抽象数据类型(Abstract Data Type),52,SQL3中提供了CREATE TYPE语句 定义DISTINCT类型和抽象数据类型 例:使用DISTINCT类型CREATE TYPE AGE_TYPE AS INTEGER FINAL;CREATE TYPE GRADE_TYPE AS INTEGER FINAL;WHERE AGEGRADE,53,871 复杂对象 对象关系数据库系统中关系的属性域是非原子的,可以用复合数据类型表示,也可以是一个关系,称为嵌套关系。复合数据类型:组合类型、集合类型和引

21、用类型。组合类型:由不同类型数据值组成;集合类型:相同类型值的组合;引用类型:指向任意类型实例的指针。,54,用复合数据类型构造复杂对象(抽象数据类型ADT)定义一个组合数据类型。CREATE TYPE(,);,简单类型或复合类型,集合类型 用关键词 setof(T)说明,T是任意数据类型。setof(T)是类型为T的值的集合数据类型。引用类型 用关键词 ref(T),T可以是任意数据类型,55,例子:图书(书号、书名、作者、出版社、出版日期)CREATE TYPE mystring varchar(40);CREATE TYPE mydate(year integer,month integ

22、er,day integer);,CREATE TYPE publisher_t(publi_ name cahr(20),address varchar(40),telephone intger);,56,CREATE TYPE book_t(bookno char(20),bookname varchar(40),author setof(mystring),publisher_ref ref(publisher_t),date mydate);CREATE TABLE publisher of type publisher_t;CREATE TABLE book of type book

23、_t;,集合类型,参照类型,组合类型,57,872 继承 继承可以在类型一级说明,也可以用于表一级。CREATE TYPE UNDER CREATE TABLE UNDER,58,872 继承 继承 可以在类型一级说明CREATE TYPE person_t(name char(8));CREATE TYPE teacher_t(title char(6),salary float,department char(8))UNDER person_t;CREATE TYPE student_t(class integer,department char(8))UNDER person_t;,59

24、,表一级继承 直接在定义表中给出继承关系CREATE TABLE person(name char(8));CREATE TABLE teacher(title char(6),salary float)UNDER person;CREATE TABLE student(class integer,department char(8))UNDER person;CREATE TABLE tcher_stdent(credit integer)UNDER teacher,student;,60,多重继承 UNDER 后说明多个类型。CREATE TYPE teacher_stdent_t(cre

25、dit integer)UNDER teacher_t,student_t;多重继承会出现属性冲突,解决方法有:(1)在超类中重新定义冲突属性名;(2)在子类中重新定义冲突属性名。,CREATE TYPE tcher_stdent_t(credit integer)UNDER teacher_t WITH(department AS t_depart),student_t WITH(department AS s_depart);,61,Oracle 的对象关系特征 扩展数据类型 可变长数组类型:VARRAY CREATE TYPE phone_type as OBJECT(ph_num CH

26、AR(11);CREATE TYPE tel_list as VARRAY(3)OF phone_type;CREATE TABLE emp(empno char(6),,phone tel_list);,定义对象类型,定义数组,62,Oracle 的对象关系特征 使用嵌套表表示复杂对象,图书(书号、书名、作者、出版社)CREATE TYPE publisher_type as OBJECT(publi_ name char(20),address varchar(40),telephone intger);CREATE TYPE publish_t as TYPE OF publisher_type;,CREATE TABLE book(bookno char(20),bookname varchar(40),author varchar(20),publisher publish_t),定义表类型,定义对象类型,63,Oracle 的对象关系特征 扩展数据类型 Oracle可以存储大对象,如视频、音频、文本文档 BLOB:二进制大对象 CLOB:字符大对象 BFILE:存储在数据库外部的 二进制文件,其目录名存储在数据库内。,结束,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号