本讲(第5章)简要说明授课目的与要求:了解对象数据库管理系统的特点、优缺点以及与传统DBMS的区别;了解对象关系数据库系统相对关系数据库的扩充。
5.1 引言1. 高级的数据库应用计算机辅助设计(CAD);计算机辅助软件工程(CASE); 多媒体系统;地理信息系统(GIS);交互的和动态的Web站点。
2. 新的应用需求:1) 处理二进制大对象,文字、图象、声音、视频等多媒体数据。
2) 数据模拟:实体的任意组合、任意联系,例聚合、继承。
3) 行为模拟:对不同数据的多种操作。
3.关系数据库的弱点有限的数据类型缺少全系统唯一、不依赖于属性的OID (Object ID)不支持用户自定义或系统可扩展的运算 不能清晰表示和有效处理复杂对象及联系 阻抗失配4. 面向对象技术1)对象由属性和操作两部分构成。
一个对象包含若干属性,用以描述对象的状态、组成、特性。
一个对象包含若干操作,用以描述对象的行为方式。
2)操作(消息/方法)的接口与实现。
接口说明------给出操作的名称、参数表、操作结果、对象类型等。
实现部分------为实现该操作的一段程序代码。
附加优点:有利于提高数据独立性,有利于数据完整、安全保护。
3)类与实例具有相同属性和方法的一类对象抽象(概化)为类,其中的每一对象称为该类的一个实例。
4)继承与类结构①一个类中所有对象的集合的子集可以定义成一个新的类,它成为原类的子类,原来的类称为子类的超类。
②子类的每个成员继承超类的所有属性和方法。
子类和父类(直接超类)用线连接,构成一个类层次结构。
③子类还可以定义自己特有的属性和方法,也可以重新定义所继承的超类原有的属性和方法。
5. OODBS1.2.3二、模式及其映射1.每个对象在其生命周期中,都有一个系统给定的唯一不变的对象标识OID只要OID 相同,就是同一对象(无论对象的属性、操作如何修改);只要OID 不同,就是不同对象(尽管其属性、操作都一样) 高效快速定位、用户不可修改、独立于内容 系统产生OID 的方法有两种:逻辑OID 物理OID对象标识(OID )6.OO技术与数据库技术结合的途径①在面向对象的程序设计语言(例如Smalltalk,C++,Java)环境中扩展传统的数据库的功能。
如GemStone。
②为OO语言提供面向对象的支持数据库管理(持久性、事务、并发、安全等)的类库。
如Ontos,Versant和ObjectStore。
③在RDB上加面向对象的DDL、DML。
如Postgres、Oracle。
④开发一个全新的面向对象数据库的数据模型/数据语言。
如SIM(Semantic Information Manager)。
8. OODB的标准化1) OODBTG最终报告(ANSI,1991.8)提出了对象信息管理(OIM)标准的建议。
其中一个重要内容是“对象数据管理参考模型”(ODM),它描述了对象模型、数据库管理的特征以及对象数据管理应具备的系统特征。
ODM参考模型制定了OODBMS的基本功能规范。
2) ODMG-93对象管理集团(OMG)所属对象数据库管理组1993.9 提出ODMG1.0 ,其规定OODBMS应包括:①对象模型OM。
②对象定义语言ODL,用以定义对象模型及其接口。
③对象操作语言OML,支持对对象的说明性访问。
④与程序设计语言(C++、Smalltalk)联编。
ODMG2.0(1997),ODMG3.0(1999)3) SQL3 (ANSI, ISO, 1999)将对象的概念、思想、技术引入RDBMS。
提出替换SQL92的SQL3,它支持抽象数据类型、子类、超类、数据类型生成器、类型模板。
标准SQL3得到大型关系数据库厂商,如IBM、Oracle、Sybase、SQL server的支持。
5.2 OODB &ODMG-93对象管理集团(OMG)所属对象数据库管理组1993.9 提出ODMG1.0 ,规定OODBMS应包括:①对象模型OM。
②对象定义语言ODL,用以定义对象模型及其接口。
③对象操作语言OML,支持对对象的说明性访问。
④与程序设计语言(C++、Smalltalk)联编。
ODMG2.0(1997),ODMG3.0(1999)一、对象模型(OM)基本思想:对象是基本数据结构每个对象有一个永久的标识符 可以为对象指定类型或子类型 对象的状态由数据值和联系定义 行为由对象操作定义ODMG预定义类型及其层次关系ObjectAtomic_ObjectStructured-ObjectCollection<T>Structure<e1:T1,…en:Tn>LiteralAtomic_LiteralStructured-LiteralImmutable-Collection<T>Immutable-Structure<e1:T1,…en:Tn>Object抽象类型(接口)中定义了:Has_name?:Boolean;Names:Set<String>;Lock_type:enum(read,write,upgrade); Try_lock(in Lock_type mode);Same_as(in Object anObject);Copy( );Delete( ) /*创建对象的操作不在此定义*/ODMG预定义类型及其层次关系ObjectAtomic_ObjectStructured-ObjectCollection<T>Structure<e1:T1,…en:Tn>LiteralAtomic_LiteralStructured-LiteralImmutable-Collection<T>Immutable-Structure<e1:T1,…en:Tn>OO模型Class STUDENT(extent ALL_STUDENTSkey S_no){attribute string Name;attribute string S_no;attribute enum Gender(M,F) Sex; relationship COURSE Studyinverse COURSE :: elective; void register(in short secno)…};OO模型Class GRAD_STUDENT extends STUDENT(extent GRAD_STUDENTS){attributerelationshipvoid …};ODMG预定义类型及其层次关系ObjectAtomic_ObjectStructured-ObjectCollection<T>Structure<e1:T1,…en:Tn>LiteralAtomic_LiteralStructured-LiteralImmutable-Collection<T>Immutable-Structure<e1:T1,…en:Tn>Collection_objectSet〈T〉Bag〈T〉List〈T〉Array〈T〉Dictionany〈T〉Collection<T>cardinality:IntegerEmpty?:BooleanOrdered?:BooleanAllows_duplicates?:BooleanDelete()Copy(c2:Collection<T>[pragma{,pragma}])Insert_element(o:Denotable_object)Remove_element(o:Denotable_object)Remove_element_at(current_position:Iterator) …ODMG预定义类型及其层次关系ObjectAtomic_ObjectStructured-ObjectCollection<T>Structure<e1:T1,…en:Tn>LiteralAtomic_LiteralStructured-LiteralImmutable-Collection<T>Immutable-Structure<e1:T1,…en:Tn>Structure<e1:T1,…en:Tn>Create([<initializer_list>])->s:Structure Delete()Get_component_value(component)->value:Denotable_Object set_component_value(component,value:Denotable_Object) clear_component_value(component)Copy()->s:StructureODMG预定义类型及其层次关系ObjectAtomic_ObjectStructured-ObjectCollection<T>Structure<e1:T1,…en:Tn>LiteralAtomic_LiteralStructured-LiteralImmutable-Collection<T>Immutable-Structure<e1:T1,…en:Tn>Atomic_literalLongshortunsigned long unsigned short floatdoublebooleancharstringenum〈〉面向对象数据库设计EER—OO联系与引用完整性行为设计构造与析构方法访问方法变换方法二、对象定义语言ODL用以定义对象模型(图5-10)销售人员5.2 OODB &ODMG-93二、对象定义语言ODL用以定义对象模型及其接口(图5-10)三、对象操作语言OQL支持对对象的说明性访问。
5.3对象—关系数据库(ORDB)& SQL32.对象关系数据库技术ORDB从关系模型和SQL语言出发,其模式的最顶层仍是一组命名的关系,但支持:抽象数据类型(ADT)扩充了的表概念扩充了的SQL语言3.讨论要点:关系模型的扩充(支持嵌套关系,行标识符) SQL中DDL的扩充(支持复杂类型和对象)SQL 中DML的扩充(支持涉及复杂类型的查询) 在关系数据库中存储对象(1)嵌套关系与行标识考虑Doc关系,有4个属性:Document tiltleAuthor listDate acquiredKeyword list5.3 ORDB & SQL3(day,month,year)salesplanJonesSalesplan1AprilProfit2001SQL3表有一个行标识符,每行的唯一标识。