面向对象数据库课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《面向对象数据库课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 面向 对象 数据库 课件
- 资源描述:
-
1、1第八章第八章 面向对象数据库面向对象数据库 2本章主要内容:本章主要内容:u 面向对象数据模型面向对象数据模型u 面向对象数据库的查询面向对象数据库的查询u 面向对象数据库的并发控制面向对象数据库的并发控制u 面向对象数据库管理系统面向对象数据库管理系统u 对象对象关系数据库系统关系数据库系统38.1 8.1 新应用的需求新应用的需求和传统数据库的局限性和传统数据库的局限性关系数据库系统的不足:关系数据库系统的不足:(1)(1)关系模型结构简单,不能很好模拟复杂对象关系模型结构简单,不能很好模拟复杂对象 (2)(2)数据类型简单,没有定义抽象数据类型数据类型简单,没有定义抽象数据类型的能力的
2、能力 (3)(3)结构与行为完全分离,使数据库中的信息仅结构与行为完全分离,使数据库中的信息仅能由识别他们的应用程序解释执行;能由识别他们的应用程序解释执行;(4)(4)查询实现复杂,连接优化降低了存取效率。查询实现复杂,连接优化降低了存取效率。下下4 OODB vs RDB5 89年年1月,在美国月,在美国ANSI/X3/SPARC的数据库系统研究的数据库系统研究组组(DBSSG)下成立了面向对象数据库任务组下成立了面向对象数据库任务组(OODBTG),专门对对象数据管理的标准化进行了研究。专门对对象数据管理的标准化进行了研究。90年高级年高级DBMS功能委员会发表了功能委员会发表了第三代数
3、据库系统宣言第三代数据库系统宣言的文的文章,文章中提出了第三代章,文章中提出了第三代DBMS应具有的基本特征:应具有的基本特征:(1)支持面向对象的数据模型,支持复杂数据类型;支持面向对象的数据模型,支持复杂数据类型;(2)具有第二代数据库系统的优点,即高效、安全、方便具有第二代数据库系统的优点,即高效、安全、方便 (3)具有开放性,即支持数据库标准具有开放性,即支持数据库标准(SQL)、网络协议、网络协议、适应多种软硬件平台适应多种软硬件平台。68.2 8.2 面向对象程序设计语言面向对象程序设计语言l面向对象程序设计的特点面向对象程序设计的特点u支持模块化设计支持模块化设计l以主体数据(对
4、象)为中心,以数据上的操作作为界以主体数据(对象)为中心,以数据上的操作作为界面进行设计(结构化的方法:数据输入处理数据面进行设计(结构化的方法:数据输入处理数据输出)输出)u软件复用软件复用 l对象封装使程序员可以通过界面理解和操作对象对象封装使程序员可以通过界面理解和操作对象l对象继承允许对象实现复用具有相同特征的其它对象代码对象继承允许对象实现复用具有相同特征的其它对象代码u 软件维护软件维护l面向对象的软件开发,从分析、设计、实现和测试等阶段面向对象的软件开发,从分析、设计、实现和测试等阶段都是基于对象的概念,在开发和维护阶段,软件系统的结都是基于对象的概念,在开发和维护阶段,软件系统
5、的结构都是一致的,易于维护。构都是一致的,易于维护。7l面向对象程序设计方法在计算机多个领域产生深远影响面向对象程序设计方法在计算机多个领域产生深远影响u程序设计语言程序设计语言u人工智能人工智能u软件工程软件工程u信息系统设计信息系统设计u计算机硬件设计计算机硬件设计u数据库数据库l面向对象数据库系统:面向对象数据库系统:ObjectStore、O2、Orion、Versant、Gemstone、Itasca8 面相对象数据库系统在许多应用中取得了进展:面相对象数据库系统在许多应用中取得了进展:(1)计算机辅助设计与制造(计算机辅助设计与制造(CAD/CAM););(2)计算机集成制造(计算
6、机集成制造(CIM););(3)计算机辅助软件工程(计算机辅助软件工程(CASE););(4)地理信息系统(地理信息系统(GIS););(5)企业资源规划(企业资源规划(ERP);(6)能源管理系统(能源管理系统(EMS)。)。9lOO数据模型数据模型u用面向对象的观点描述现实世界对象的逻辑组织、用面向对象的观点描述现实世界对象的逻辑组织、对象之间的限制、联系的模型称为对象之间的限制、联系的模型称为OO数据模型。数据模型。lOO模型的核心概念模型的核心概念u对象对象l属性集合属性集合 描述对象的状态、组成和特征描述对象的状态、组成和特征l方法集合方法集合 描述对象的行为特征描述对象的行为特征l
7、消息集合消息集合 是对象向外提供的界面,由对象接是对象向外提供的界面,由对象接收和响应收和响应简单对象、简单对象、复杂对象复杂对象8.3 8.3 面向对象数据模型面向对象数据模型10u对象标识对象标识l每个对象都有一个内部标识符每个对象都有一个内部标识符OID,OID在整个在整个系统中系统中 是唯一的,一旦生成就不能改变。是唯一的,一旦生成就不能改变。uOID的表示的表示l值标识值标识 由对象的属性组成对象标识由对象的属性组成对象标识l 指针标识指针标识 指向物理存储位置的指针作为对象标识指向物理存储位置的指针作为对象标识l代用品法(代用品法(surrogatesurrogate),),与对象
8、的内部属性无关。与对象的内部属性无关。11u封装封装l每个对象都是其状态和行为的封装体。每个对象都是其状态和行为的封装体。u类类 l 具有相同特征对象的集合;对象为类中的实例。具有相同特征对象的集合;对象为类中的实例。l 类本身看作对象,称为类对象。类本身看作对象,称为类对象。l面向对象数据库模式是类的集合,形成类层次结构面向对象数据库模式是类的集合,形成类层次结构u类层次类层次l一组相关类形成类层次结构一组相关类形成类层次结构l子类、超类子类、超类l子类和超类的关系体现了子类和超类的关系体现了“is A”is A”的语义的语义12 人人 教职工教职工 学生学生 教师教师 行政人员行政人员 工
9、人工人 本科生本科生 研究生研究生助教助教 讲师讲师 教授教授 类层次的例子类层次的例子在职研究生在职研究生u类层次类层次 l一组相关类形成类层次结构一组相关类形成类层次结构l子类、超类子类、超类l子类和超类的关系体现了子类和超类的关系体现了“is A”is A”的的语义语义13u继承继承 子类和超类间具有继承关系子类和超类间具有继承关系l子类继承超类的属性和方法。子类继承超类的属性和方法。l单继承和单继承和多继承多继承l 解决同名冲突的方法:解决同名冲突的方法:子类与超类间的同名冲突子类与超类间的同名冲突按子类优先处理按子类优先处理;多个超类间的同名冲突,多个超类间的同名冲突,按说明超类的先
10、后取第一按说明超类的先后取第一个超类中的定义个超类中的定义 或或 规定继承的超类;规定继承的超类;提供显式方法提供显式方法:从多个冲突的实例变量或方法中继从多个冲突的实例变量或方法中继承一个;继承多个,在类定义中重新命名。承一个;继承多个,在类定义中重新命名。14u多态性多态性l 同一操作有不同的实现,取决于具体对象。如同一操作有不同的实现,取决于具体对象。如“”法法 u滞后联编滞后联编l对对象操作的编译推迟到运行时实现,称滞后联编。对对象操作的编译推迟到运行时实现,称滞后联编。例:在同一个超类的不同子类上执行同一个操作。例:在同一个超类的不同子类上执行同一个操作。如同一个显示操作可以显示不同
11、的数据类型:如同一个显示操作可以显示不同的数据类型:人的信息、图象人的信息、图象u对象的嵌套对象的嵌套l复合类层次结构复合类层次结构 书:书号、书名、书:书号、书名、作者作者、出版社出版社、出版日期。、出版日期。作者:作者名、地址、电话作者:作者名、地址、电话 出版社:出版社名、地址、负责人出版社:出版社名、地址、负责人15 一般提供:一般提供:对单一类中对象的查询对单一类中对象的查询 以类为根的类层次上的查询。以类为根的类层次上的查询。二类索引:二类索引:类层次索引类层次索引 嵌套属性索引嵌套属性索引 8.4 8.4 面向对象数据库系统的查询面向对象数据库系统的查询16 类层次索引类层次索引
12、 建立在类建立在类C C的属性的属性A A上的一个类层次上的一个类层次索引,是以该类为根的类层次中所有类在属性索引,是以该类为根的类层次中所有类在属性A A上的单一上的单一索引,属性索引,属性A A称为称为索引属性索引属性,类,类C C称为称为索引类索引类。在单一类在单一类上建立的索引称为单一索引。上建立的索引称为单一索引。8.4 8.4 面向对象数据库系统的查询面向对象数据库系统的查询 人人 教职工教职工 学生学生 教师教师 行政人员行政人员 工人工人 本科生本科生 研究生研究生教职工教职工:职务、工资、:职务、工资、参加工作时间参加工作时间17 嵌套属性索引嵌套属性索引 在复合类层次的某个
13、类的在复合类层次的某个类的属性上建立索引。这种索引是以索引类为根的类复属性上建立索引。这种索引是以索引类为根的类复合层次中某个类的属性,该属性称为索引类的嵌套合层次中某个类的属性,该属性称为索引类的嵌套属性。属性。书:书号、书名、书:书号、书名、作者作者、出版社出版社、出版日期。、出版日期。作者:作者:作者名作者名、地址、电话、地址、电话 出版社:出版社名、地址出版社:出版社名、地址 若在若在auth_nameauth_name上建立上建立bookbook的嵌套属性索引,可的嵌套属性索引,可找到某个作者的所有书,以加快查找速度。找到某个作者的所有书,以加快查找速度。下下18定义图书类:定义图书
14、类:class book book_no:string;book_name:string;written_by:author;publisher_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
15、 b.book_name=“数据库原理数据库原理”AND b.written_by.auth_name=“严亮严亮”;8.4 8.4 面向对象数据库系统的查询面向对象数据库系统的查询(续续)20在在OODBSOODBS中的更新处理:中的更新处理:(1)(1)当一个事务访问某个类的实例时其它事务不能对这当一个事务访问某个类的实例时其它事务不能对这个类的任何超类进行修改。个类的任何超类进行修改。(2)(2)一个事务在查询计算时其它事务也不能修改该类的一个事务在查询计算时其它事务也不能修改该类的所有子类。所有子类。查询一个类时要对该类和所有子类进行评估。查询一个类时要对该类和所有子类进行评估。在在O
16、ODBMSOODBMS中需要提供更复杂的锁机制,需要锁更多的中需要提供更复杂的锁机制,需要锁更多的语义信息。语义信息。8.5 8.5 面向对象数据库系统的并发控制面向对象数据库系统的并发控制218.5 8.5 面向对象数据库系统的并发控制面向对象数据库系统的并发控制 多多粒度锁,锁的粒度有:粒度锁,锁的粒度有:RDBSRDBS中的中的锁粒度锁粒度:逻辑单元(属性、元组、表、数据库),逻辑单元(属性、元组、表、数据库),物理单元(数据页、索引页、数据块)。物理单元(数据页、索引页、数据块)。OODBMSOODBMS中中锁的粒度锁的粒度:数据库、类、对象、属性、物理页等。数据库、类、对象、属性、物
17、理页等。22多粒度多粒度封锁封锁u允许类层次中的每个结点单独加锁允许类层次中的每个结点单独加锁u对一个结点加锁,其下层结点也被加以同样类对一个结点加锁,其下层结点也被加以同样类型的隐式锁。型的隐式锁。l在多粒度封锁中一个数据对象可以两种方式封锁:在多粒度封锁中一个数据对象可以两种方式封锁:显式封锁和隐式封锁显式封锁和隐式封锁23 多粒度封锁多粒度封锁l显式封锁显式封锁u通过上锁命令(通过上锁命令(LOCK)直接加到数据对象直接加到数据对象上的封锁;上的封锁;l隐式封锁隐式封锁u该数据对象没有独立加锁,是由于其上级结该数据对象没有独立加锁,是由于其上级结点加锁而使该数据对象隐式加了锁。点加锁而使
18、该数据对象隐式加了锁。u隐式锁和显式锁的作用是一样的隐式锁和显式锁的作用是一样的24对某个数据对象加锁对某个数据对象加锁 时系统检查的内容时系统检查的内容l 该数据对象该数据对象u有无显式封锁与之冲突有无显式封锁与之冲突l 所有上级结点所有上级结点u检查本事务的显式封锁是否与该数据对象上的隐检查本事务的显式封锁是否与该数据对象上的隐式封锁冲突:式封锁冲突:(由上级结点封锁造成的)由上级结点封锁造成的)l 所有下级结点所有下级结点u看上面的显式封锁是否与本事务的隐式封锁看上面的显式封锁是否与本事务的隐式封锁(加到下级结点的封锁)加到下级结点的封锁)冲突。冲突。25意向锁意向锁(intention
19、 lock)例:事务例:事务T对类对类C 加加X锁,系统必须检查其所有超类锁,系统必须检查其所有超类结点有无冲突、所有子类有无冲突,如果有冲突结点有无冲突、所有子类有无冲突,如果有冲突,则,则T等待。等待。引进意向锁目的引进意向锁目的提高对数据对象加锁时系统的检查效率提高对数据对象加锁时系统的检查效率 引入意向锁,在某对象实例上加引入意向锁,在某对象实例上加S或或X锁前,先在其锁前,先在其祖先结点上加意向锁祖先结点上加意向锁,事务,事务T对类对类C请求请求 加加X锁时,锁时,只要检查该类上的意向锁即可。只要检查该类上的意向锁即可。26l什么是意向锁什么是意向锁u对任一结点加基本锁,必须先对它的
20、上层结对任一结点加基本锁,必须先对它的上层结点加意向锁点加意向锁u如果对一个结点加意向锁,则说明该结点的如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁下层结点正在被加锁 意向锁意向锁 27常用意向锁常用意向锁l意向共享锁意向共享锁(Intent Share LockIntent Share Lock,简称简称ISIS锁锁)l意向排它锁意向排它锁(Intent Exclusive LockIntent Exclusive Lock,简称简称IXIX锁锁)l共享意向排它锁共享意向排它锁(Share Intent Exclusive LockShare Intent Exclusive L
21、ock,简简称称SIXSIX锁锁)28l意向锁意向锁:ISIS、IXIX、SIXSIX 意向共享锁意向共享锁(IS):对一个数据对象加对一个数据对象加IS锁,表示事务可能对类中的实例锁,表示事务可能对类中的实例显式请求显式请求S锁。锁。意向排它锁意向排它锁(IX):在类上加在类上加IX锁表示事务可能对类中实例显式请求锁表示事务可能对类中实例显式请求X或或S锁。锁。意向锁意向锁 29 共享意向排它锁共享意向排它锁(SIX)SIX=S+IX,在类上加在类上加SIX锁表示对类中所有实例都隐锁表示对类中所有实例都隐式地加了式地加了S锁。表示该事务要读类中实例,还可能对一些锁。表示该事务要读类中实例,还
22、可能对一些实例请求实例请求X锁。因此,仅允许其它事务读但不允许更新锁。因此,仅允许其它事务读但不允许更新类中的实例。类中的实例。SIX锁的引入是必要的。合适于需要查询类中的大量实锁的引入是必要的。合适于需要查询类中的大量实例而仅更新少数实例的情况。例而仅更新少数实例的情况。否则,若仅加否则,若仅加IX锁,对只锁,对只需读操作的那些实例为防止其它事务写都要加需读操作的那些实例为防止其它事务写都要加S锁,增加锁,增加了锁的开销。了锁的开销。30 共享锁共享锁(S):加加S锁表示该事务读类中实例锁表示该事务读类中实例。排它锁排它锁(X):该事务要修改类中的实例,请该事务要修改类中的实例,请求求X锁。
23、锁。31 锁锁 类类 型型 的的 相容性相容性 矩阵矩阵 S XIS IX SIX SYNYNNXNNNNNISYNYYYIXNNYYNSIX NNYNNX XSIXSIXS IXS IXISIS锁强度的关系锁强度的关系32在在OODBS中多粒度加锁的规则:中多粒度加锁的规则:(1).若事务对类层次中的某个粒度上加若事务对类层次中的某个粒度上加S锁,则在其所锁,则在其所有祖先上都要加有祖先上都要加IS锁。锁。(2).若事务对类层次中的某个粒度上加若事务对类层次中的某个粒度上加X锁,在该粒度锁,在该粒度的所有祖先粒度上要加的所有祖先粒度上要加IX锁或锁或SIX锁。锁。(3).若事务已获得对一个类
24、的某个锁,则该类的所有子若事务已获得对一个类的某个锁,则该类的所有子孙也隐含获得同样的锁。孙也隐含获得同样的锁。(4).加锁从类层次的根开始依此往下进行直到事务申请加锁从类层次的根开始依此往下进行直到事务申请锁的那个粒度,而解锁时的顺序则是由下而上的。锁的那个粒度,而解锁时的顺序则是由下而上的。33 例:例:已知学校人员的类层次结构,若事务已知学校人员的类层次结构,若事务T要修改要修改李伟峰教授的属性值,则不同层次的加锁顺序和锁类型。李伟峰教授的属性值,则不同层次的加锁顺序和锁类型。(1)给类人加给类人加IX锁,锁,(2)给类教职工加给类教职工加IX锁,锁,(3)给类教师加给类教师加IX锁,锁
展开阅读全文