面向对象数据库课件

上传人:94****0 文档编号:240909971 上传时间:2024-05-17 格式:PPT 页数:63 大小:308.73KB
返回 下载 相关 举报
面向对象数据库课件_第1页
第1页 / 共63页
面向对象数据库课件_第2页
第2页 / 共63页
面向对象数据库课件_第3页
第3页 / 共63页
点击查看更多>>
资源描述
第八章第八章 面向对象数据库面向对象数据库 1第八章面向对象数据库1本章主要内容:本章主要内容:u 面向对象数据模型面向对象数据模型u 面向对象数据库的查询面向对象数据库的查询u 面向对象数据库的并发控制面向对象数据库的并发控制u 面向对象数据库管理系统面向对象数据库管理系统u 对象对象关系数据库系统关系数据库系统2本章主要内容:28.1 8.1 新应用的需求新应用的需求和传统数据库的局限性和传统数据库的局限性关系数据库系统的不足:关系数据库系统的不足:(1)(1)关系模型结构简单,不能很好模拟复杂对象关系模型结构简单,不能很好模拟复杂对象 (2)(2)数据类型简单,没有定义抽象数据类型数据类型简单,没有定义抽象数据类型的能力的能力 (3)(3)结结构构与与行行为为完完全全分分离离,使使数数据据库库中中的的信信息息仅仅能能由识别他们的应用程序解释执行;由识别他们的应用程序解释执行;(4)(4)查询实现复杂,连接优化降低了存取效率。查询实现复杂,连接优化降低了存取效率。下下38.1新应用的需求和传统数据库的局限性关系数据库系统的OODBvsRDBRDBMSRDBMSOODBMSOODBMSOriginalOriginalStoredStoredRecoveredRecoveredOriginalOriginalStoredStoredRecoveredRecovered4OODBvsRDBRDBMSOODBM 89年年1月,在美国月,在美国ANSI/X3/SPARC的数据库系统研究的数据库系统研究组组(DBSSG)下成立了面向对象数据库任务组下成立了面向对象数据库任务组(OODBTG),专门专门对对象数据管理的标准化进行了研究。对对象数据管理的标准化进行了研究。90年高级年高级DBMS功功能委员会发表了能委员会发表了第三代数据库系统宣言第三代数据库系统宣言的文章,文章的文章,文章中提出了第三代中提出了第三代DBMS应具有的基本特征:应具有的基本特征:(1)支持面向对象的数据模型,支持复杂数据类型;支持面向对象的数据模型,支持复杂数据类型;(2)具有第二代数据库系统的优点,即高效、安全、方便具有第二代数据库系统的优点,即高效、安全、方便(3)具具有有开开放放性性,即即支支持持数数据据库库标标准准(SQL)、网网络络协协议议、适应多种软硬件平台适应多种软硬件平台。589年1月,在美国ANSI/X3/SPA8.2 8.2 面向对象程序设计语言面向对象程序设计语言l面向对象程序设计的特点面向对象程序设计的特点u支持模块化设计支持模块化设计l以主体数据(对象)为中心,以数据上的操作作为界以主体数据(对象)为中心,以数据上的操作作为界面进行设计(结构化的方法:数据输入处理数据输面进行设计(结构化的方法:数据输入处理数据输出)出)u软件复用软件复用l对象封装使程序员可以通过界面理解和操作对象对象封装使程序员可以通过界面理解和操作对象l对象继承允许对象实现复用具有相同特征的其它对象代码对象继承允许对象实现复用具有相同特征的其它对象代码u软件维护软件维护l面向对象的软件开发,从分析、设计、实现和测试等阶段面向对象的软件开发,从分析、设计、实现和测试等阶段都是基于对象的概念,在开发和维护阶段,软件系统的结构都是基于对象的概念,在开发和维护阶段,软件系统的结构都是一致的,易于维护。都是一致的,易于维护。68.2面向对象程序设计语言面向对象程序设计的特点6l面向对象程序设计方法在计算机多个领域产生深远影响面向对象程序设计方法在计算机多个领域产生深远影响u程序设计语言程序设计语言u人工智能人工智能u软件工程软件工程u信息系统设计信息系统设计u计算机硬件设计计算机硬件设计u数据库数据库l面向对象数据库系统:面向对象数据库系统:ObjectStore、O2、Orion、Versant、Gemstone、Itasca7面向对象程序设计方法在计算机多个领域产生深远影响7 面相对象数据库系统在许多应用中取得了进展:面相对象数据库系统在许多应用中取得了进展:(1)计算机辅助设计与制造(计算机辅助设计与制造(CAD/CAM););(2)计算机集成制造(计算机集成制造(CIM););(3)计算机辅助软件工程(计算机辅助软件工程(CASE););(4)地理信息系统(地理信息系统(GIS););(5)企业资源规划(企业资源规划(ERP);(6)能源管理系统(能源管理系统(EMS)。)。8面相对象数据库系统在许多应用中取得了进展:(1)lOO数据模型数据模型u用面向对象的观点描述现实世界对象的逻辑组织、用面向对象的观点描述现实世界对象的逻辑组织、对象之间的限制、联系的模型称为对象之间的限制、联系的模型称为OO数据模型。数据模型。lOO模型的核心概念模型的核心概念u对象对象l属性集合属性集合描述对象的状态、组成和特征描述对象的状态、组成和特征l方法集合方法集合描述对象的行为特征描述对象的行为特征l消息集合消息集合是对象向外提供的界面,由对象接是对象向外提供的界面,由对象接收和响应收和响应简单对象、简单对象、复杂对象复杂对象8.3 8.3 面向对象数据模型面向对象数据模型9OO数据模型8.3面向对象数据模型9u对象标识对象标识l每个对象都有一个内部标识符每个对象都有一个内部标识符OID,OID在整个在整个系统中系统中是唯一的,一旦生成就不能改变。是唯一的,一旦生成就不能改变。uOID的表示的表示l值标识值标识由对象的属性组成对象标识由对象的属性组成对象标识l指针标识指针标识指向物理存储位置的指针作为对象标识指向物理存储位置的指针作为对象标识l代用品法(代用品法(surrogatesurrogate),),与对象的内部属性无关。与对象的内部属性无关。10对象标识10u封装封装l每个对象都是其状态和行为的封装体。每个对象都是其状态和行为的封装体。u类类l具有相同特征对象的集合;对象为类中的实例。具有相同特征对象的集合;对象为类中的实例。l类本身看作对象,称为类对象。类本身看作对象,称为类对象。l面向对象数据库模式是类的集合,形成类层次结构面向对象数据库模式是类的集合,形成类层次结构u类层次类层次l一组相关类形成类层次结构一组相关类形成类层次结构l子类、超类子类、超类l子类和超类的关系体现了子类和超类的关系体现了“is A”is A”的语义的语义1111人人教职工教职工学生学生教师教师行政人员行政人员工人工人本科生本科生研究生研究生助教助教讲师讲师教授教授类层次的例子类层次的例子在职研究生在职研究生u类层次类层次l一组相关类形成类层次结构一组相关类形成类层次结构l子类、超类子类、超类l子类和超类的关系体现了子类和超类的关系体现了“is A”is A”的语义的语义12u继承继承子类和超类间具有继承关系子类和超类间具有继承关系l子类继承超类的属性和方法。子类继承超类的属性和方法。l单继承和单继承和多继承多继承l解决同名冲突的方法:解决同名冲突的方法:子类与超类间的同名冲突子类与超类间的同名冲突按子类优先处理按子类优先处理;多个超类间的同名冲突,多个超类间的同名冲突,按说明超类的先后取第一按说明超类的先后取第一个超类中的定义个超类中的定义 或或 规定继承的超类;规定继承的超类;提供显式方法提供显式方法:从多个冲突的实例变量或方法中继从多个冲突的实例变量或方法中继承一个;继承多个,在类定义中重新命名。承一个;继承多个,在类定义中重新命名。13继承13u多态性多态性l同一操作有不同的实现,取决于具体对象。如同一操作有不同的实现,取决于具体对象。如“”法法u滞后联编滞后联编l对对象操作的编译推迟到运行时实现,称滞后联编。对对象操作的编译推迟到运行时实现,称滞后联编。例:在同一个超类的不同子类上执行同一个操作。例:在同一个超类的不同子类上执行同一个操作。如同一个显示操作可以显示不同的数据类型:如同一个显示操作可以显示不同的数据类型:人的信息、图象人的信息、图象u对象的嵌套对象的嵌套l复合类层次结构复合类层次结构 书:书号、书名、书:书号、书名、作者作者、出版社出版社、出版日期。、出版日期。作者:作者名、地址、电话作者:作者名、地址、电话 出版社:出版社名、地址、负责人出版社:出版社名、地址、负责人14多态性对象的嵌套14 一般提供:一般提供:对单一类中对象的查询对单一类中对象的查询 以类为根的类层次上的查询。以类为根的类层次上的查询。二类索引:二类索引:类层次索引类层次索引 嵌套属性索引嵌套属性索引 8.4 8.4 面面向向对对象象数数据据库库系系统统的的查查询询15一般提供:8.4面向对象数据库系统的查询15 类类层层次次索索引引 建建立立在在类类C C的的属属性性A A上上的的一一个个类类层层次次索索引引,是是以以该该类类为为根根的的类类层层次次中中所所有有类类在在属属性性A A上上的的单单一一索索引引,属属性性A A称称为为索索引引属属性性,类类C C称称为为索索引引类类。在在单单一一类类上建立的索引称为单一索引。上建立的索引称为单一索引。8.4 8.4 面面向向对对象象数数据据库库系系统统的的查查询询人人教职工教职工学生学生教师教师行政人员行政人员工人工人本科生本科生研究生研究生教职工教职工:职务、工资、:职务、工资、参加工作时间参加工作时间168.4面向对象数据库系统的查询 嵌嵌套套属属性性索索引引 在在复复合合类类层层次次的的某某个个类类的的属属性性上上建建立立索索引引。这这种种索索引引是是以以索索引引类类为为根根的的类类复复合合层层次次中中某某个个类类的的属属性性,该该属属性性称称为为索索引引类类的的嵌嵌套套属属性。性。书:书号、书名、书:书号、书名、作者作者、出版社出版社、出版日期。、出版日期。作者:作者:作者名作者名、地址、电话、地址、电话 出版社:出版社名、地址出版社:出版社名、地址 若若在在auth_nameauth_name上上建建立立bookbook的的嵌嵌套套属属性性索索引引,可可找到某个作者的所有书,以加快查找速度。找到某个作者的所有书,以加快查找速度。下下17书:书号、书名、作者、出版社、出版日期。下下17定义图书类:定义图书类:classbookbook_no:string;book_name:string;written_by:author;publisher_by:publisher;date_of_publation:date;new();classauthor;classpublisher;18定义图书类:18 OODB语语言言标标准准,大大多多采采用用了了扩扩充充SQL语语言言的的方方法法,称为称为OSQL。例:例:检索作者为严亮的检索作者为严亮的“数据库原理数据库原理”书的出版社名。书的出版社名。SELECTb.published_by.publi_nameFROMbINbookWHEREb.book_name=“数据库原理数据库原理”ANDb.written_by.auth_name=“严亮严亮”;8.4 8.4 面面向向对对象象数数据据库库系系统统的的查查询询(续续)198.4面向对象数据库系统的查询(续)19在在OODBSOODBS中的更新处理:中的更新处理:(1)(1)当当一一个个事事务务访访问问某某个个类类的的实实例例时时其其它它事事务务不不能能对对这这个类的任何超类进行修改。个类的任何超类进行修改。(2)(2)一一个个事事务务在在查查询询计计算算时时其其它它事事务务也也不不能能修修改改该该类类的的所有子类。所有子类。查询一个类时要对该类和所有子类进行评估。查询一个类时要对该类和所有子类进行评估。在在OODBMSOODBMS中中需需要要提提供供更更复复杂杂的的锁锁机机制制,需需要要锁锁更更多多的的语义信息。语义信息。8.5 8.5 面面向向对对象象数数据据库库系系统统的的并并发发控控制制20在OODBS中的更新处理:8.5面向对象数据库系统的并发8.5 8.5 面面向向对对象象数数据据库库系系统统的的并并发发控控制制 多粒度锁,锁的粒度有:多粒度锁,锁的粒度有:RDBSRDBS中的中的锁粒度锁粒度:逻辑单元(属性、元组、表、数据库),逻辑单元(属性、元组、表、数据库),物理单元(数据页、索引页、数据块)。物理单元(数据页、索引页、数据块)。OODBMSOODBMS中中锁的粒度锁的粒度:数据库、类、对象、属性、物理页等。数据库、类、对象、属性、物理页等。218.5面向对象数据库系统的并发控制多粒度锁,锁的粒多粒度多粒度封锁封锁u允许类层次中的每个结点单独加锁允许类层次中的每个结点单独加锁u对一个结点加锁,其下层结点也被加以同样类对一个结点加锁,其下层结点也被加以同样类型的隐式锁。型的隐式锁。l在多粒度封锁中一个数据对象可以两种方式封锁:在多粒度封锁中一个数据对象可以两种方式封锁:显式封锁和隐式封锁显式封锁和隐式封锁22多粒度封锁允许类层次中的每个结点单独加锁22多粒度封锁多粒度封锁l显式封锁显式封锁u通过上锁命令(通过上锁命令(LOCK)直接加到数据对象直接加到数据对象上的封锁;上的封锁;l隐式封锁隐式封锁u该数据对象没有独立加锁,是由于其上级结该数据对象没有独立加锁,是由于其上级结点加锁而使该数据对象隐式加了锁。点加锁而使该数据对象隐式加了锁。u隐式锁和显式锁的作用是一样的隐式锁和显式锁的作用是一样的23多粒度封锁显式封锁23对某个数据对象加锁对某个数据对象加锁时系统检查的内容时系统检查的内容l该数据对象该数据对象u有无显式封锁与之冲突有无显式封锁与之冲突l所有上级结点所有上级结点u检查本事务的显式封锁是否与该数据对象上的隐检查本事务的显式封锁是否与该数据对象上的隐式封锁冲突:式封锁冲突:(由上级结点封锁造成的)由上级结点封锁造成的)l所有下级结点所有下级结点u看上面的显式封锁是否与本事务的隐式封锁看上面的显式封锁是否与本事务的隐式封锁(加到下级结点的封锁)加到下级结点的封锁)冲突。冲突。24对某个数据对象加锁时系统检查的内容该数据对象24意向锁意向锁(intentionlock)例:事务例:事务T对类对类C加加X锁,系统必须检查其所有超类锁,系统必须检查其所有超类结点有无冲突、所有子类有无冲突,如果有冲突,结点有无冲突、所有子类有无冲突,如果有冲突,则则T等待。等待。引进意向锁目的引进意向锁目的提高对数据对象加锁时系统的检查效率提高对数据对象加锁时系统的检查效率引入意向锁,在某对象实例上加引入意向锁,在某对象实例上加S或或X锁前,先在其锁前,先在其祖先结点上加意向锁祖先结点上加意向锁,事务,事务T对类对类C请求请求加加X锁时,锁时,只要检查该类上的意向锁即可。只要检查该类上的意向锁即可。25意向锁(intentionlock)例:事务T对类C加Xl什么是意向锁什么是意向锁u对任一结点加基本锁,必须先对它的上层结对任一结点加基本锁,必须先对它的上层结点加意向锁点加意向锁u如果对一个结点加意向锁,则说明该结点的如果对一个结点加意向锁,则说明该结点的下层结点正在被加锁下层结点正在被加锁 意向锁意向锁 26什么是意向锁意向锁26常用意向锁常用意向锁l意向共享锁意向共享锁(Intent Share LockIntent Share Lock,简称简称ISIS锁锁)l意向排它锁意向排它锁(Intent Exclusive LockIntent Exclusive Lock,简称简称IXIX锁锁)l共享意向排它锁共享意向排它锁(Share Intent Exclusive LockShare Intent Exclusive Lock,简简称称SIXSIX锁锁)27常用意向锁意向共享锁(IntentShareLock,简l意向锁意向锁:ISIS、IXIX、SIXSIXl意向共享锁意向共享锁(IS):对一个数据对象加对一个数据对象加IS锁,表示事务可能对类中的实例锁,表示事务可能对类中的实例显式请求显式请求S锁。锁。l意向排它锁意向排它锁(IX):在类上加在类上加IX锁表示事务可能对类中实例显式请求锁表示事务可能对类中实例显式请求X或或S锁。锁。意向锁意向锁 28意向锁:IS、IX、SIX意向锁28共享意向排它锁共享意向排它锁(SIX)SIX=S+IX,在在类类上上加加SIX锁锁表表示示对对类类中中所所有有实实例例都都隐隐式式地地加加了了S锁锁。表表示示该该事事务务要要读读类类中中实实例例,还还可可能能对对一一些些实实例例请请求求X锁锁。因因此此,仅仅允允许许其其它它事事务务读读但但不不允允许许更更新新类类中的实例。中的实例。SIX锁锁的的引引入入是是必必要要的的。合合适适于于需需要要查查询询类类中中的的大大量量实实例例而而仅仅更更新新少少数数实实例例的的情情况况。否否则则,若若仅仅加加IX锁锁,对对只只需需读读操操作作的的那那些些实实例例为为防防止止其其它它事事务务写写都都要要加加S锁锁,增增加加了锁的开销。了锁的开销。29共享意向排它锁(SIX)SIX锁的引入是必要的共享锁共享锁(S):加加S锁表示该事务读类中实例锁表示该事务读类中实例。排排它它锁锁(X):该该事事务务要要修修改改类类中中的的实实例例,请请求求X锁。锁。3030锁锁类类型型的的相容性相容性矩阵矩阵SXISIXSIXSYNYNNXNNNNNISYNYYYIXNNYYNSIX NNYNNX XSIXSIXS IXS IXISIS锁强度的关系锁强度的关系31X31在在OODBS中多粒度加锁的规则:中多粒度加锁的规则:(1).若若事事务务对对类类层层次次中中的的某某个个粒粒度度上上加加S锁锁,则则在在其其所所有祖先上都要加有祖先上都要加IS锁。锁。(2).若若事事务务对对类类层层次次中中的的某某个个粒粒度度上上加加X锁锁,在在该该粒粒度度的所有祖先粒度上要加的所有祖先粒度上要加IX锁或锁或SIX锁。锁。(3).若若事事务务已已获获得得对对一一个个类类的的某某个个锁锁,则则该该类类的的所所有有子子孙也隐含获得同样的锁。孙也隐含获得同样的锁。(4).加加锁锁从从类类层层次次的的根根开开始始依依此此往往下下进进行行直直到到事事务务申申请请锁的那个粒度,而解锁时的顺序则是由下而上的。锁的那个粒度,而解锁时的顺序则是由下而上的。32在OODBS中多粒度加锁的规则:32 例例:已已知知学学校校人人员员的的类类层层次次结结构构,若若事事务务T要要修修改改李伟峰教授的属性值,则不同层次的加锁顺序和锁类型。李伟峰教授的属性值,则不同层次的加锁顺序和锁类型。(1)给类人加给类人加IX锁,锁,(2)给类教职工加给类教职工加IX锁,锁,(3)给类教师加给类教师加IX锁,锁,(4)给类教授加给类教授加IX锁,锁,(5)给对象李伟峰加给对象李伟峰加X锁。锁。解锁的顺序:李伟峰、教授、教师、教职工、人。解锁的顺序:李伟峰、教授、教师、教职工、人。若若要要查查询询其其他他教教授授的的信信息息,则则对对类类教教授授改改加加SIX锁锁其其它锁不变。它锁不变。33例:已知学校人员的类层次结构,若事务T要修改李伟峰教授ORACLE的锁:的锁:(1)RS行共享锁行共享锁可以上可以上SRX、RS、RX、S锁锁LOCKTABLEINROWSHAREMODE(2)RX行排它锁行排它锁可以上可以上RS、RX锁锁LOCKTABLEINROWEXCLUSIVEMODE(3)S共享表锁共享表锁可以上可以上RS、S锁锁LOCKTABLEINSHAREMODE(4)SRX共享行排它表锁共享行排它表锁可以上可以上RS锁锁LOCKTABLEINSHAREROWEXCLUSIVEMODE(5)X排它表锁排它表锁LOCKTABLEINEXCLUSIVEMODE34ORACLE的锁:34 8.6 ORION8.6 ORION的的系统结构系统结构 (1)(1)消息处理子系统。消息处理子系统。(2)(2)负责处理发给负责处理发给(3)(3)对象的所有消息;对象的所有消息;(2)(2)对象子系统。对象子系统。对象的存取操作、版本管理、查询优化、多媒体信息管理;对象的存取操作、版本管理、查询优化、多媒体信息管理;(3)(3)事务管理子系统。事务管理子系统。提供并发控制和恢复机制;提供并发控制和恢复机制;(4)(4)存存储储子子系系统统。该该子子系系统统包包括括页页缓缓冲冲区区管管理理和和磁磁盘盘管管理理二二个个子子系系统统,负责存储在磁盘上对象的存取。负责存储在磁盘上对象的存取。对象子系统对象子系统事务管理子系统事务管理子系统存储子系统存储子系统磁盘段管理磁盘段管理页缓冲管理页缓冲管理消息处理子系统消息处理子系统358.6ORION的系统结构对象子系统事务管理子系统8.6.1ORION的数据模型的数据模型ORIONORION支持面向对象的核心概念:支持面向对象的核心概念:对象、类、消息、方法。对象、类、消息、方法。ORIONORION采用多重继承,一个类可以有多个超类。采用多重继承,一个类可以有多个超类。解决同名冲突的方法:解决同名冲突的方法:(1)(1)类与超类间的同名冲突按子类优先处理;类与超类间的同名冲突按子类优先处理;(2)(2)多多个个超超类类间间的的同同名名冲冲突突,按按说说明明超超类类的的先先后后取取第一个超类中的定义;第一个超类中的定义;(3)(3)提提供供显显式式方方法法:从从多多个个冲冲突突的的实实例例变变量量或或方方法法中继承一个;继承多个,在类定义中重新命名。中继承一个;继承多个,在类定义中重新命名。368.6.1ORION的数据模型36 ORIONORION中定义中定义ObjectObject作为类层次结构的根作为类层次结构的根用户定义类用户定义类Object系统定义类系统定义类VehiclePtypeCollectionIntegerStringSetAirWaterLandVehicleVehicleVehicleSetofVehicleSetofPtypeSetofIntegerSetofStringSetofAirVehicleSetofLandVehicleSetofWaterVehicle37ORION中定义Object作为类层次结构的根Set8.6.2复合对象复合对象ORION中的对象有:中的对象有:复合对象、依赖对象、独立对象复合对象、依赖对象、独立对象 复合对象:一个对象全部或部分由多个依赖对象组成。复合对象:一个对象全部或部分由多个依赖对象组成。依赖对象:一个对象的存在依赖于另一个对象。依赖对象:一个对象的存在依赖于另一个对象。依依赖赖对对象象只只能能由由一一个个对对象象所所拥拥有有。例例如如,装装在在车车上上的的发发动机只能为一辆汽车所有,是依赖于汽车的。动机只能为一辆汽车所有,是依赖于汽车的。独独立立对对象象:独独立立于于其其它它对对象象存存在在的的对对象象,可可以以被被其其它它对对象象所所引用引用。计算机:主机,外设,生产厂计算机:主机,外设,生产厂主主机:机:CPU,内存,硬盘,软盘内存,硬盘,软盘外外设:显示器,键盘,打印机设:显示器,键盘,打印机388.6.2复合对象388.6.3模式进化模式进化模式进化模式进化(schemaevolution)修改数据库模式:修改数据库模式:修改类结构修改类结构、类格的继承结构类格的继承结构类定义的修改类定义的修改对实例变量和方法的修改;对实例变量和方法的修改;增删属性和方法。增删属性和方法。对类格的修改对类格的修改 增、删一个类或超类,增、删一个类或超类,改变类名或改变类名或改变超类名的顺序。改变超类名的顺序。人人教职工教职工学生学生教师教师行政人员行政人员本科生本科生研究生研究生398.6.3模式进化8.6.3模式进化模式进化ORIONORION为动态修改数据库模式的功能提供了一为动态修改数据库模式的功能提供了一组约束规则:组约束规则:(1)(1)模式进化操作分类模式进化操作分类(2)模式进化的不变性模式进化的不变性(一致性一致性)(3)模式进化规则模式进化规则408.6.3模式进化40 (1)(1)模式进化操作分类模式进化操作分类 类格结点内容的修改类格结点内容的修改(增删变量和方法增删变量和方法)边的修改边的修改(超类子类关系的修改超类子类关系的修改)结点的修改结点的修改(增删类、改类名增删类、改类名)(2)模式进化的不变性模式进化的不变性模模式式修修改改后后保保持持成成立立的的特特性性(模模式式一一致致性性:模模式式内内部部的一致性约束的一致性约束)同一类中的类名、变量名和方法名的唯一性同一类中的类名、变量名和方法名的唯一性被引用的类、操作和实现必须存在被引用的类、操作和实现必须存在子类子类/超类不能有环、多继承不能有冲突超类不能有环、多继承不能有冲突41(1)模式进化操作分类41(3)模式进化规则模式进化规则冲突解决规则冲突解决规则发生命名冲突时的继承规则发生命名冲突时的继承规则性质传播性质传播(修改传播修改传播)规则规则修改超类结果传播给子类修改超类结果传播给子类DAG操纵规则操纵规则对类格修改的规则:增加一个子类的超类,对类格修改的规则:增加一个子类的超类,该超类排在所有超类的最后该超类排在所有超类的最后42428.6.4版本管理版本管理版本版本类对象版本、实例对象版本类对象版本、实例对象版本ORION提供二类版本提供二类版本1.临时版本临时版本可修改和删除,可由它导出新的临时版本。可修改和删除,可由它导出新的临时版本。2.工作版本工作版本只能查看不能修改,可导出临时版本。只能查看不能修改,可导出临时版本。版本对象描述版本对象描述对象标识符、版本号、版本状态对象标识符、版本号、版本状态(临时、工作(临时、工作)438.6.4版本管理43 版本管理版本管理线性版本管理模型线性版本管理模型按照版本出现的先后顺序排列按照版本出现的先后顺序排列树型版本管理模型树型版本管理模型一一个个版版本本有有多多个个后后继继版版本本,能能反反映映版版本本间间的的依依赖关系。赖关系。有向无环图版本管理模型有向无环图版本管理模型一个版本有多个前驱版本和多个后继版本一个版本有多个前驱版本和多个后继版本 44版本管理44 DBDB0 0生成的不同版本生成的不同版本 DBDB0 0 DBDB4 4 DBDB3 3 DBDB2 2 DBDB1 1 DBDB6 6 DBDB7 7 DBDB5 545DB0生成的不同版本DB0DB4DB3DB2DB8.6.4版本管理版本管理对版本操作命令:对版本操作命令:Create(创建版本对象,生成对象结构创建版本对象,生成对象结构);Derive(派生新的临时版本派生新的临时版本);Replace(替换临时版本的内容替换临时版本的内容);Delete(删除版本删除版本);Promote(改临时版本工作版本改临时版本工作版本).468.6.4版本管理Create(创建版本对象8.6.5对象的存储管理对象的存储管理u二元存储:二元存储:u基于对象的存储基于对象的存储对象标识对象标识对象长度对象长度属性数属性数属性向量属性向量值位移向量值位移向量值值对象存储格式对象存储格式u类层次结构对象的存储类层次结构对象的存储(1)属性值存储在尽可能低的层次属性值存储在尽可能低的层次(2)属性值存储在较高的层次,还可以将属性值按不同层次分别属性值存储在较高的层次,还可以将属性值按不同层次分别存储存储ORION中采用了第一种存储策略,尽可能将类中的实例存储中采用了第一种存储策略,尽可能将类中的实例存储在类层次的最低层。在类层次的最低层。478.6.5对象的存储管理47人人教职工教职工学生学生教师教师工人工人本科生本科生研究生研究生学校人员的类层次结构编号编号姓名姓名001王平王平编号编号姓名姓名参加工作时间参加工作时间002李李力力1990.02.23003孙小丹孙小丹1987.09.15编号编号姓名姓名入校时间入校时间004吴吴伟伟1998.09.06编号编号姓名姓名参加工作时间参加工作时间职称职称005赵亮赵亮1978.12.15教授教授006刘江水刘江水1988.10.22副教授副教授007史为民史为民1995.08.12讲师讲师编号编号姓名姓名参加工作时间参加工作时间工种工种008张也张也1981.02.12钳工钳工009楼白楼白1993.05.09车工车工编号编号姓名姓名入校时间入校时间专业专业010赵小亮赵小亮1998.09.06机电机电011江浩江浩1998.09.06化工化工编号编号姓名姓名入校时间入校时间导师导师012吕空吕空1999.09.05冯江冯江013陈涛陈涛2000.09.09宋为国宋为国48人编号OODB存在的问题:存在的问题:已已有有OODBMS在在程程序序设设计计接接口口、实实现现方方法法、对对查查询的支持等多个方面存在许多差异;询的支持等多个方面存在许多差异;模式进化难于实现;模式进化难于实现;与应用程序密切相关,许多系统仅支持一种语言与应用程序密切相关,许多系统仅支持一种语言健壮性、容错性;健壮性、容错性;缺乏开发工具。缺乏开发工具。49OODB存在的问题:4987对象对象关系数据库系统关系数据库系统对对象象关关系系数数据据库库系系统统在在关关系系系系统统基基础础上上应应具具有有以下特征:以下特征:扩充数据类型;扩充数据类型;支持复杂对象管理(组合、集合、引用);支持复杂对象管理(组合、集合、引用);支持继承(子类支持继承(子类/超类,单继承超类,单继承/多继承);多继承);提提供供通通用用规规则则系系统统(事事件件和和动动作作为为任任意意SQL语语句句的主动性规则、自定义函数、规则的继承)的主动性规则、自定义函数、规则的继承)5087对象关系数据库系统50对象关系数据库系统中扩展的数据类型对象关系数据库系统中扩展的数据类型v扩展的类型:扩展的类型:LOBBOOLEAN集合类型集合类型ARRAY用户定义的用户定义的DISTINCT类型类型面向对象的数据类型面向对象的数据类型行类型行类型ROWTYPE抽象数据类型(抽象数据类型(AbstractDataType)51对象关系数据库系统中扩展的数据类型51SQL3中提供了中提供了CREATETYPE语句语句定义定义DISTINCT类型和抽象数据类型类型和抽象数据类型例:例:使用使用DISTINCT类型类型CREATETYPEAGE_TYPEASINTEGERFINAL;CREATETYPEGRADE_TYPEASINTEGERFINAL;WHEREAGEGRADE52SQL3中提供了CREATETYPE语句52871复杂对象复杂对象对对象象关关系系数数据据库库系系统统中中关关系系的的属属性性域域是是非非原原子子的的,可可以以用用复复合合数数据据类类型型表表示示,也也可可以以是是一一个个关关系系,称称为为嵌套关系嵌套关系。复合数据类型复合数据类型:组合类型、集合类型和引用类型。:组合类型、集合类型和引用类型。组合类型组合类型:由不同类型数据值组成;:由不同类型数据值组成;集合类型集合类型:相同类型值的组合;:相同类型值的组合;引用类型引用类型:指向任意类型实例的指针。:指向任意类型实例的指针。53871复杂对象53用复合数据类型构造复杂对象用复合数据类型构造复杂对象(抽象数据类型抽象数据类型ADT)v定义一个定义一个组合数据类型组合数据类型。CREATETYPE(,);简单类型或简单类型或复合类型复合类型v集集合合类类型型 用用关关键键词词setof(T)说说明明,T是是任任意意数数据据类类型。型。setof(T)是类型为是类型为T的值的集合数据类型。的值的集合数据类型。v引用类型引用类型 用关键词用关键词ref(T),T可以是任意数据类型可以是任意数据类型54用复合数据类型构造复杂对象(抽象数据类型ADT)简单类型例子:例子:图书(书号、书名、作者、图书(书号、书名、作者、出版社、出版日期)出版社、出版日期)CREATETYPEmystringvarchar(40);CREATETYPEmydate(yearinteger,monthinteger,dayinteger);CREATETYPEpublisher_t(publi_namecahr(20),addressvarchar(40),telephoneintger);集合集合类型类型组合类组合类型型55例子:图书(书号、书名、作者、出版社、出版日期)CREATCREATETYPEbook_t(booknochar(20),booknamevarchar(40),authorsetof(mystring),publisher_refref(publisher_t),datemydate);CREATETABLEpublisheroftypepublisher_t;CREATETABLEbookoftypebook_t;集合类型集合类型参照类型参照类型组合类型组合类型56CREATETYPEbook_t集合类型参照类型组合8 87 72 2 继承继承继承可以在继承可以在类型一级说明类型一级说明,也可以用于,也可以用于表一级表一级。CREATETYPEUNDERCREATETABLEUNDER57872继承578 87 72 2 继承继承v继承继承可以在可以在类型一级说明类型一级说明CREATETYPEperson_t(namechar(8)););CREATETYPEteacher_t(titlechar(6),salaryfloat,departmentchar(8))UNDERperson_t;CREATETYPEstudent_t(classinteger,departmentchar(8))UNDERperson_t;58872继承58v表一级继承表一级继承直接在定义表中给出继承关系直接在定义表中给出继承关系CREATETABLEperson(namechar(8)););CREATETABLEteacher(titlechar(6),salaryfloat)UNDERperson;CREATETABLEstudent(classinteger,departmentchar(8))UNDERperson;CREATETABLEtcher_stdent(creditinteger)UNDERteacher,student;59表一级继承直接在定义表中给出继承关系59v多重继承多重继承UNDER后说明多个类型。后说明多个类型。CREATETYPEteacher_stdent_t(creditinteger)UNDERteacher_t,student_t;多重继承会出现属性冲突,解决方法有:多重继承会出现属性冲突,解决方法有:(1)在超类中重新定义冲突属性名;在超类中重新定义冲突属性名;(2)在子类中重新定义冲突属性名。在子类中重新定义冲突属性名。CREATETYPEtcher_stdent_t(creditinteger)UNDERteacher_tWITH(departmentASt_departt_depart),student_tWITH(departmentASs_departs_depart);60多重继承UNDER后说明多个类型。CREA Oracle Oracle 的对象关系特征的对象关系特征v 扩展数据类型扩展数据类型可变长数组类型:可变长数组类型:VARRAYCREATETYPEphone_typeasOBJECT(ph_numCHAR(11);CREATETYPEtel_listasVARRAY(3)OFphone_type;CREATETABLEemp(empnochar(6),,phonetel_list););定义对象类型定义对象类型 定义数组定义数组 61Oracle的对象关系特征定义对象类型定义数组6 Oracle Oracle 的对象关系特征的对象关系特征v 使用嵌套表表示复杂对象使用嵌套表表示复杂对象图书(书号、书名、作者、图书(书号、书名、作者、出版社)出版社)CREATETYPEpublisher_typeasOBJECT(publi_namechar(20),addressvarchar(40),telephoneintger);CREATETYPEpublish_tasTYPEOFpublisher_type;CREATETABLEbook(booknochar(20),booknamevarchar(40),authorvarchar(20),publisherpublish_t)定义表类型定义表类型定义对象类型定义对象类型 62Oracle的对象关系特征图书(书号、书名、作者、Oracle Oracle 的对象关系特征的对象关系特征v 扩展数据类型扩展数据类型Oracle可以存储大对象,如视频、音频、文本文档可以存储大对象,如视频、音频、文本文档BLOB:二进制大对象二进制大对象CLOB:字符大对象字符大对象BFILE:存存储储在在数数据据库库外外部部的的二二进进制制文文件件,其其目目录名存储在数据库内。录名存储在数据库内。结束63Oracle的对象关系特征结束63
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!