




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章 面向对象数据库,本章主要内容: 面向对象数据模型 面向对象数据库的查询 面向对象数据库的并发控制 面向对象数据库管理系统 对象关系数据库系统,8.1 新应用的需求和传统数据库的局限性,关系数据库系统的不足: (1)关系模型结构简单,不能很好模拟复杂对象 (2)数据类型简单,没有定义抽象数据类型的能力 (3)结构与行为完全分离,使数据库中的信息仅能由识别他们的应用程序解释执行; (4)查询实现复杂,连接优化降低了存取效率。,下下,OODB vs RDB,RDBMS,Original,Stored,Recovered,89年1月,在美国ANSI /X3/SPARC的数据库系统研究组(DBS
2、SG)下成立了面向对象数据库任务组(OODBTG),专门对对象数据管理的标准化进行了研究。90年高级DBMS功能委员会发表了第三代数据库系统宣言的文章,文章中提出了第三代DBMS应具有的基本特征:,(1)支持面向对象的数据模型,支持复杂数据类型; (2)具有第二代数据库系统的优点,即高效、安全、方便 (3)具有开放性,即支持数据库标准(SQL)、网络协议、适应多种软硬件平台。,8.2 面向对象程序设计语言,面向对象程序设计的特点 支持模块化设计 以主体数据(对象)为中心,以数据上的操作作为界面进行设计(结构化的方法:数据输入处理数据输出) 软件复用 对象封装使程序员可以通过界面理解和操作对象
3、对象继承允许对象实现复用具有相同特征的其它对象代码 软件维护 面向对象的软件开发,从分析、设计、实现和测试等阶段都是基于对象的概念,在开发和维护阶段,软件系统的结构都是一致的,易于维护。,面向对象程序设计方法在计算机多个领域产生深远影响 程序设计语言 人工智能 软件工程 信息系统设计 计算机硬件设计 数据库 面向对象数据库系统:ObjectStore、O2、Orion、Versant、Gemstone、Itasca,面相对象数据库系统在许多应用中取得了进展:,(1)计算机辅助设计与制造(CAD/CAM); (2)计算机集成制造(CIM); (3)计算机辅助软件工程(CASE); (4)地理信息
4、系统(GIS); (5)企业资源规划(ERP); (6)能源管理系统(EMS)。,OO数据模型 用面向对象的观点描述现实世界对象的逻辑组织、对象之间的限制、联系的模型称为OO数据模型。 OO模型的核心概念 对象 属性集合 描述对象的状态、组成和特征 方法集合 描述对象的行为特征 消息集合 是对象向外提供的界面,由对象接收和响应 简单对象、 复杂对象,8.3 面向对象数据模型,对象标识 每个对象都有一个内部标识符OID,OID在整个系统中 是唯一的,一旦生成就不能改变。 OID的表示 值标识 由对象的属性组成对象标识 指针标识 指向物理存储位置的指针作为对象标识 代用品法(surrogate),
5、与对象的内部属性无关。 ,封装 每个对象都是其状态和行为的封装体。 类 具有相同特征对象的集合;对象为类中的实例。 类本身看作对象,称为类对象。 面向对象数据库模式是类的集合,形成类层次结构 类层次 一组相关类形成类层次结构 子类、超类 子类和超类的关系体现了“is A”的语义,类层次的例子,类层次 一组相关类形成类层次结构 子类、超类 子类和超类的关系体现了“is A”的语义,继承 子类和超类间具有继承关系 子类继承超类的属性和方法。 单继承和多继承 解决同名冲突的方法: 子类与超类间的同名冲突按子类优先处理; 多个超类间的同名冲突,按说明超类的先后取第一个超类中的定义 或 规定继承的超类;
6、 提供显式方法: 从多个冲突的实例变量或方法中继承一个;继承多个,在类定义中重新命名。,多态性 同一操作有不同的实现,取决于具体对象。如“”法 滞后联编 对对象操作的编译推迟到运行时实现,称滞后联编。 例:在同一个超类的不同子类上执行同一个操作。 如同一个显示操作可以显示不同的数据类型: 人的信息、图象,对象的嵌套 复合类层次结构 书:书号、书名、作者、出版社、出版日期。 作者:作者名、地址、电话 出版社:出版社名、地址、负责人,一般提供: 对单一类中对象的查询 以类为根的类层次上的查询。 二类索引: 类层次索引 嵌套属性索引,8.4 面向对象数据库系统的查询,类层次索引 建立在类C的属性A上
7、的一个类层次索引,是以该类为根的类层次中所有类在属性A上的单一索引,属性A称为索引属性,类C称为索引类。 在单一类上建立的索引称为单一索引。,8.4 面向对象数据库系统的查询,嵌套属性索引 在复合类层次的某个类的属性上建立索引。这种索引是以索引类为根的类复合层次中某个类的属性,该属性称为索引类的嵌套属性。,书:书号、书名、作者、出版社、出版日期。 作者:作者名、地址、电话 出版社:出版社名、地址 若在auth_name上建立book的嵌套属性索引,可找到某个作者的所有书,以加快查找速度。,下下,定义图书类: class book book_no: string; book_name: stri
8、ng; written_by: author; publisher_by: publisher; date_of_publation: date; new(); ; class author ; class publisher ;,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 面向对象数据库系
9、统的查询(续),在OODBS中的更新处理: (1)当一个事务访问某个类的实例时其它事务不能对这个类的任何超类进行修改。 (2) 一个事务在查询计算时其它事务也不能修改该类的所有子类。 查询一个类时要对该类和所有子类进行评估。 在OODBMS中需要提供更复杂的锁机制,需要锁更多的语义信息。,8.5 面向对象数据库系统的并发控制,8.5 面向对象数据库系统的并发控制,多粒度锁,锁的粒度有: RDBS中的锁粒度: 逻辑单元(属性、元组、表、数据库), 物理单元(数据页、索引页、数据块)。 OODBMS中锁的粒度: 数据库、类、对象、属性、物理页等。,多粒度封锁,允许类层次中的每个结点单独加锁 对一个
10、结点加锁,其下层结点也被加以同样类型的隐式锁。 在多粒度封锁中一个数据对象可以两种方式封锁:显式封锁和隐式封锁,多粒度封锁,显式封锁 通过上锁命令(LOCK)直接加到数据对象上的封锁; 隐式封锁 该数据对象没有独立加锁,是由于其上级结点加锁而使该数据对象隐式加了锁。 隐式锁和显式锁的作用是一样的,对某个数据对象加锁 时系统检查的内容,该数据对象 有无显式封锁与之冲突 所有上级结点 检查本事务的显式封锁是否与该数据对象上的隐式封锁冲突:(由上级结点封锁造成的) 所有下级结点 看上面的显式封锁是否与本事务的隐式封锁( 加到下级结点的封锁)冲突。,意向锁(intention lock),例:事务T对
11、类C 加X锁,系统必须检查其所有超类结点有无冲突、所有子类有无冲突,如果有冲突,则T等待。,引进意向锁目的 提高对数据对象加锁时系统的检查效率 引入意向锁,在某对象实例上加S或X锁前,先在其祖先结点上加意向锁 ,事务T对类C请求 加X锁时,只要检查该类上的意向锁即可。,什么是意向锁 对任一结点加基本锁,必须先对它的上层结点加意向锁 如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁,意向锁,常用意向锁,意向共享锁(Intent Share Lock,简称IS锁) 意向排它锁(Intent Exclusive Lock,简称IX锁) 共享意向排它锁(Share Intent Exclusi
12、ve Lock,简称SIX锁),意向锁: IS、IX、SIX 意向共享锁(IS): 对一个数据对象加IS锁,表示事务可能对类中的实例显式请求S锁。 意向排它锁(IX): 在类上加IX锁表示事务可能对类中实例显式请求X或S锁。,意向锁,共享意向排它锁(SIX) SIX=S+IX,在类上加SIX锁表示对类中所有实例都隐式地加了S锁。表示该事务要读类中实例,还可能对一些实例请求X锁。因此,仅允许其它事务读但不允许更新类中的实例。,SIX锁的引入是必要的。合适于需要查询类中的大量实例而仅更新少数实例的情况。 否则,若仅加IX锁,对只需读操作的那些实例为防止其它事务写都要加S锁,增加了锁的开销。,共享锁
13、(S): 加S锁表示该事务读类中实例。 排它锁(X):该事务要修改类中的实例,请求X锁。,在OODBS中多粒度加锁的规则: (1). 若事务对类层次中的某个粒度上加S锁,则在其所有祖先上都要加IS锁。 (2). 若事务对类层次中的某个粒度上加X锁,在该粒度的所有祖先粒度上要加IX锁或SIX锁。 (3). 若事务已获得对一个类的某个锁,则该类的所有子孙也隐含获得同样的锁。 (4). 加锁从类层次的根开始依此往下进行直到事务申请锁的那个粒度,而解锁时的顺序则是由下而上的。,例: 已知学校人员的类层次结构,若事务T要修改李伟峰教授的属性值,则不同层次的加锁顺序和锁类型。 (1) 给类人加IX锁, (
14、2) 给类教职工加IX锁, (3) 给类教师加IX锁, (4) 给类教授加IX锁, (5) 给对象李伟峰加X锁。 解锁的顺序:李伟峰、教授、教师、教职工、人。 若要查询其他教授的信息,则对类教授改加SIX锁其它锁不变。,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锁 LOC
15、K TABLE IN SHARE ROW EXCLUSIVE MODE (5)X 排它表锁 LOCK TABLE IN EXCLUSIVE MODE,8.6.1 ORION的数据模型 ORION支持面向对象的核心概念: 对象、类、消息、方法。 ORION采用多重继承,一个类可以有多个超类。 解决同名冲突的方法: (1) 类与超类间的同名冲突按子类优先处理; (2) 多个超类间的同名冲突,按说明超类的先后取第一个超类中的定义; (3) 提供显式方法: 从多个冲突的实例变量或方法中继承一个;继承多个,在类定义中重新命名。,8.6.2 复合对象 ORION中的对象有:复合对象、依赖对象、独立对象 复
16、合对象:一个对象全部或部分由多个依赖对象组成。 依赖对象:一个对象的存在依赖于另一个对象。 依赖对象只能由一个对象所拥有。例如,装在车上的发动机只能为一辆汽车所有,是依赖于汽车的。 独立对象:独立于其它对象存在的对象,可以被其它对象所引用。 计算机:主机,外设,生产厂 主 机:CPU,内存,硬盘,软盘 外 设:显示器,键盘,打印机,8.6.3 模式进化 模式进化(schema evolution) 修改数据库模式: 修改类结构、类格的继承结构 类定义的修改 对实例变量和方法的修改; 增删属性和方法。 对类格的修改 增、删一个类或超类, 改变类名或改变超类名的顺序。,8.6.3 模式进化 ORI
17、ON为动态修改数据库模式的功能提供了一组约束规则: (1)模式进化操作分类 (2) 模式进化的不变性(一致性) (3) 模式进化规则,(1)模式进化操作分类 类格结点内容的修改(增删变量和方法) 边的修改(超类子类关系的修改) 结点的修改(增删类、改类名) (2) 模式进化的不变性 模式修改后保持成立的特性(模式一致性: 模式内部的一致性约束) 同一类中的类名、变量名和方法名的唯一性 被引用的类、操作和实现必须存在 子类/超类不能有环、多继承不能有冲突,(3) 模式进化规则 冲突解决规则 发生命名冲突时的继承规则 性质传播(修改传播)规则 修改超类结果传播给子类 DAG操纵规则 对类格修改的规
18、则:增加一个子类的超类,该超类排在所有超类的最后,8.6.4 版本管理 版本 类对象版本、实例对象版本 ORION提供二类版本 1. 临时版本 可修改和删除,可由它导出新的临时版本。 2. 工作版本 只能查看不能修改,可导出临时版本。 版本对象描述 对象标识符、版本号、版本状态(临时、工作 ),版本管理 线性版本管理模型 按照版本出现的先后顺序排列 树型版本管理模型 一个版本有多个后继版本,能反映版本间的依赖关系。 有向无环图版本管理模型 一个版本有多个前驱版本和多个后继版本,DB0生成的不同版本,DB0,DB4,DB3,DB2,DB1,DB6,DB7,DB5,8.6.4 版本管理 对版本操作
19、命令:,Create ( 创建版本对象,生成对象结构); Derive ( 派生新的临时版本); Replace ( 替换临时版本的内容); Delete ( 删除版本); Promote ( 改临时版本工作版本).,OODB存在的问题: 已有OODBMS在程序设计接口、实现方法、对查询的支持等多个方面存在许多差异; 模式进化难于实现; 与应用程序密切相关,许多系统仅支持一种语言 健壮性、容错性; 缺乏开发工具。,87 对象关系数据库系统 对象关系数据库系统在关系系统基础上应具有以下特征: 扩充数据类型; 支持复杂对象管理(组合、集合、引用); 支持继承(子类 / 超类,单继承/多继承); 提
20、供通用规则系统(事件和动作为任意SQL语句的主动性规则、自定义函数、规则的继承),对象关系数据库系统中扩展的数据类型 扩展的类型: LOB BOOLEAN 集合类型ARRAY 用户定义的DISTINCT类型 面向对象的数据类型 行类型ROW TYPE 抽象数据类型(Abstract Data Type),SQL3中提供了CREATE TYPE语句 定义DISTINCT类型和抽象数据类型 例:使用DISTINCT类型 CREATE TYPE AGE_TYPE AS INTEGER FINAL; CREATE TYPE GRADE_TYPE AS INTEGER FINAL; WHERE AGEG
21、RADE,871 复杂对象 对象关系数据库系统中关系的属性域是非原子的,可以用复合数据类型表示,也可以是一个关系,称为嵌套关系。 复合数据类型:组合类型、集合类型和引用类型。 组合类型:由不同类型数据值组成; 集合类型:相同类型值的组合; 引用类型:指向任意类型实例的指针。,用复合数据类型构造复杂对象(抽象数据类型ADT) 定义一个组合数据类型。 CREATE TYPE ( , , );,简单类型或复合类型,集合类型 用关键词 setof(T)说明,T是任意数据类型。 setof(T)是类型为T的值的集合数据类型。 引用类型 用关键词 ref(T),T可以是任意数据类型,例子:图书(书号、书名
22、、作者、 出版社、出版日期) CREATE TYPE mystring varchar(40); CREATE TYPE mydate ( year integer, month integer, day integer);,CREATE TYPE publisher_t (publi_ name cahr(20), address varchar(40), telephone intger);,CREATE TYPE book_t (bookno char(20), bookname varchar(40), author setof (mystring), publisher_ref re
23、f (publisher_t), date mydate); CREATE TABLE publisher of type publisher_t; CREATE TABLE book of type book_t;,集合类型,参照类型,组合类型,872 继承 继承可以在类型一级说明,也可以用于表一级。 CREATE TYPE UNDER CREATE TABLE UNDER ,872 继承 继承 可以在类型一级说明 CREATE TYPE person_t(name char (8)); CREATE TYPE teacher_t (title char (6) , salary float
24、 , department char(8) ) UNDER person_t; CREATE TYPE student_t (class integer, department char(8)) UNDER person_t;,表一级继承 直接在定义表中给出继承关系 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;,多重继承 UNDER 后说明多个类型。 CREATE TYPE teacher_stdent_t (credit integer) UNDER teacher_t, student_t; 多重继承会出现属性冲突,解决方法有: (1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国狗皮行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030年中国度假型酒店行业市场深度调研及竞争格局与投资研究报告
- 2025-2030年中国尼龙滤芯行业市场现状供需分析及投资评估规划分析研究报告
- 各类护理培训课件模板
- 社会工作专业博士的职业道路探索
- 软件工程师年终技术总结报告
- 智能制造对产业升级的推动作用深度解读报告
- 文娱传媒人才职业发展导航
- 汽车零部件行业发展与技术革新研究报告
- 典耀中国课件下载
- 2025年日历表全年(打印版)完整清新每月一张
- 开曼群岛公司法2024版中文译本(含2024年修订主要内容)
- 高校毕业证编号编制规则
- DBJ50∕T-342-2019 工程建设对既有建(构)筑物安全影响评估标准
- 信息安全等级保护测评项权重赋值表
- 善用积极语言培养学生积极的心理品质
- 极致物业管理系统-客户关系管理
- 部编版选择性必修上册7《兼爱》知识梳理
- 《智慧课堂教学模式的实践研究》课题研究开题报告6篇.docx
- IPC-A-610F通用焊接标准
- (完整)HIV实验室SOP文件-新版
评论
0/150
提交评论