1 / 68

面向对象数据库系统

面向对象数据库系统. Object Oriented Database System ( OODBS) (二). 11.4 面向对象数据模型. 面向对象数据模型 ( Object Oriented Data Model – OODM) 采用面向对象方法构造出来的数据模型。 面向对象数据库系统 ( Object Oriented DataBase System – OODBS ) 采用面向对象数据模型的数据库系统。 面向对象数据库管理系统 ( Object Oriented DataBase Management System – OODBMS )

devin-parks
Download Presentation

面向对象数据库系统

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 面向对象数据库系统 Object Oriented Database System (OODBS) (二)

  2. 11.4 面向对象数据模型 • 面向对象数据模型(Object Oriented Data Model – OODM) • 采用面向对象方法构造出来的数据模型。 • 面向对象数据库系统( Object Oriented DataBase System – OODBS ) • 采用面向对象数据模型的数据库系统。 • 面向对象数据库管理系统( Object Oriented DataBase Management System – OODBMS ) • 采用面向对象数据模型的数据库管理系统。

  3. 11.4 面向对象数据模型 • 数据库的数据模型一般由三部分组成,它们是: • 数据模式(数据结构) • 建立在模式上的操作 • 数据的完整性约束 • 在面向对象数据模型中,我们用面向对象方法中的一些基本概念和基本方法来表示这三个组成部分:对象、方法、类的继承与合成

  4. 学号 学号 课程编号 姓名 课程名 课程编号 系别 年龄 主讲教师 成绩 C101 S1001 S1001 张曼英 C101 C++ 计算机 19 85 T02 S1002 C102 S1001 李 红 C102 OS 数学 20 91 T01 S1003 C103 S1001 丁一珉 DB C103 中文 18 95 T02 S1003 S1004 王爱民 C101 计算机 20 90 S1002 C101 76 S1003 C102 87 S1004 C101 88 11.4 面向对象数据模型 • 我们首先用关系模型来解释数据模型中的这三个组成部分: • 关系模型的数据结构 —二维表 学生 选课 课程

  5. 学号 姓名 系别 年龄 S1001 张曼英 计算机 19 S1002 李 红 数 学 20 S1003 丁一珉 中 文 18 S1004 王爱民 计算机 20 11.4 面向对象数据模型 • 关系模型的数据结构 —二维表 关键字 属 性 关系模式 元组

  6. 学号 课程编号 成绩 S1001 C101 85 S1001 C102 91 S1001 C103 95 S1003 C101 90 S1002 C101 76 S1003 C102 87 S1004 C101 88 11.4 面向对象数据模型 • 关系模型的数据结构 —二维表 外关键字

  7. 11.4 面向对象数据模型 • 关系模型上的数据操作 —查询、插入、删除、修改 • 例1:查出所有计算机系学生的姓名和年龄: • select 姓名,年龄 from 学生 where 系别 = ‘计算机’ • 例2:统计每个学生的平均成绩: • select 学号, avg(成绩) from 选课 group by 学号 • 例3:查询选修了DB课程的学生的姓名: • select 姓名 from 学生,课程,选课 where 学生.学号=选课.学号 AND 选课.课程编号=课程.课程编号 AND 课程名=‘DB’

  8. 11.4 面向对象数据模型 • 关系模型上的数据操作 —查询、插入、删除、修改 • 例4:插入一条记录(‘S1002’, ‘C102’, 90)到选课关系中: • insert into 选课(学号,课程编号,成绩) values (‘S1002’, ‘C102’, 90) • 例5:插入一条记录(‘S1002’, ‘C103’)到选课关系中: • insert into 选课(学号,课程编号) values (‘S1002’, ‘C103’)

  9. 11.4 面向对象数据模型 • 关系模型上的数据操作 —查询、插入、删除、修改 • 例6:将‘李红’同学的年龄改为19: • update 学生 set 年龄=19 where 姓名 = ‘李红’ • 例7:将‘李红’同学的‘DB’成绩改为80: • update 学生 set 成绩 = 80 where 学号 in (select 学号 from 学生 where 姓名=‘李红’) AND 课程编号 in (select 课程编号 from 课程 where 课程名 = ‘DB’)

  10. 11.4 面向对象数据模型 • 关系模型上的数据完整性约束: • 实体完整性 • 主关键字属性值非空,且具有唯一性 • 通过定义主关键字来定义实体完整性:PRIMARY KEY • 引用完整性(关联完整性) • 外关键字值必须是对应的主关键字上真正存在的值。 • 通过定义外关键字来定义引用完整性:FOREIGN KEY • 用户自定义完整性约束条件 • 用户自己定义的完整性约束条件 • 在定义基表时使用CHECK子句,例如: • CREATE TABLE 选课(…… • CHECK 成绩 BETWEEN 0 AND 100) • 定义断言(Assert)

  11. 学号 学号 课程编号 姓名 课程编号 课程名 系别 年龄 成绩 主讲教师 S1001 S1001 C101 张曼英 C++ C101 计算机 19 85 T02 C102 S1002 S1001 李 红 OS C102 数学 20 T01 91 S1001 S1003 C103 丁一珉 DB C103 中文 18 T02 95 S1004 S1003 王爱民 C101 计算机 20 90 S1002 C101 76 S1003 C102 87 S1004 C101 88 11.4 面向对象数据模型 • 关系模型上的数据完整性约束 选课 学生 课程

  12. 11.4 面向对象数据模型 • 对象:由一组属性、一组方法和一个对象标识符OID所构成的一个封装体。 • 类:具有相同属性和相同方法的一组对象的集合。 • 类层次结构:由类与类之间的继承关系和合成关系所构成的一个层次关系图。 • OODM的数据结构 —类层次结构 • OODM的数据操作 —方法 与 消息 • OODM的数据约束 —方法 与 消息 • 实体完整性 – 无 • 引用完整性 – 无 • 用户自定义完整性约束条件 – 完整性约束方法

  13. 11.4 面向对象数据模型 • 面向对象数据模型就是一个由类及类的继承与合成关系所构成的类层次结构图。例如:

  14. 11.4 面向对象数据模型 • 经过改造后的面向对象数据模型:

  15. 关系数据库 OO数据库 表(元组) 类(对象) 主KEY OID 属性 属性 关系上的操作(增,删,改,查询) 方法、消息 完整性约束 约束方法、消息 ER模型 类层次(OO模型) 11.4 面向对象数据模型 • 关系模型与OO模型的对应关系

  16. 11.4 面向对象数据模型 • OO模型对关系模型的扩充 • OID比主关键字更具有一般性; • 在对象与类中增加了方法,系统具有更好的稳定性、可扩充性,便于用户的使用; • 丰富的数据类型:类可以看成一种扩充的数据类型; • 数据模型上的操作更为丰富; • 数据模型具有更丰富的语义含义。

  17. 11.4 面向对象数据模型 • 元类 • 类本身也可以被看成是一种特殊的对象,我们称其为类对象。 • 所有类对象的集合也构成一个类,我们称其为元类。 • 元类中的实例就是传统意义上的类,元类中的方法则是传统意义上的消息。 • 元类实际上就是OODBS的数据字典。

  18. 11.5 面向对象数据库管理系统 • 面向对象数据库管理系统(OODBMS)除了具有面向对象的概念与方法外,还必需具有传统数据库管理系统的所有功能,是面向对象技术与传统数据库技术的结合体。 • 1989年12月在日本京都第一届‘演绎与面向对象数据库’国际会议上(DOOD’89)发表了著名的面向对象数据库宣言,在该宣言中明确提出了OODBMS需要满足的条件。其中又分为三类: • 第一类:必需满足的条件(15条)。7条是有关面向对象的概念与原理的,另8条是传统数据库管理系统所必需的条件。 • 第二类:希望满足的条件(5条)。 • 第三类:仅供参考的4个条件。

  19. 11.5 面向对象数据库管理系统 • OODBMS的必备条件 • 对象 • 对象标识符 • 封装性 • 类 • 类层次结构 • 重定义 • 重载(迟联编)

  20. 11.5 面向对象数据库管理系统 • OODBMS的必备条件 • 完整性约束 • 计算完备性 • OODBMS中除了提供数据定义、数据操作功能外,还需有具备与数据库无直接关系的计算、统计等功能。 • 提供计算完备性的途径: • 嵌入方式:将数据库的数据子语言嵌入到某种计算型主语言中 • 自主方式:扩充数据库的数据子语言的功能,使之具有一定的计算功能

  21. 11.5 面向对象数据库管理系统 • OODBMS的必备条件 • 可扩充性 • 包括对数据模式的可扩充性和对操作方式的可扩充性。 • 在面向对象数据模型中,通过类的继承与合成关系可以很方便地修改和扩充已有的数据模式(即类层次结构图) • 可以通过定义一些新的方法与消息来增加新的访问对象的方式。

  22. 11.5 面向对象数据库管理系统 • OODBMS的必备条件 • 持久性 • 包括对象的持久性与类的持久性。 • 持久性是区别数据库管理系统与传统的程序设计语言的关键。 • 可以通过引入数据库与次级存储器(包括磁盘)管理来实现持久性。 • 次级存储器管理 • 并发控制功能 • 故障恢复功能 • 即席查询功能:提供交互式终端查询语言。

  23. 11.5 面向对象数据库管理系统 • OODBMS的附加条件 • 多继承

  24. 11.5 面向对象数据库管理系统 • OODBMS的附加条件 • 扩充的完整性约束 • 传统的关系数据库系统的完整性约束功能有三个: • 实体完整性 • 引用完整性 • 用户自定义完整性 • 其缺点是: • 功能比较弱:只能定义一些简单的完整性约束条件,无法满足在复杂数据结构中对数据完整性保护的需要。 • 被动的数据完整性检查:对约束条件的检查是被动的,即由用户通过执行完整性检查命令来检查数据的完整性。 • 面向对象的数据库系统可以扩充这方面的完整性保护功能。

  25. 11.5 面向对象数据库管理系统 • OODBMS的附加条件 • 分布式功能 • 在网络环境中使用OODBMS的能力,如Client/Server、Browser/Server等访问方式。 • 较强的事务处理能力 • 包括处理‘长事务’与‘嵌套事务’的功能。 • 版本管理能力 • 版本的定义、新版本的演化、版本的回退等功能

  26. 11.5 面向对象数据库管理系统 • 上述15个必需条件和5个选择条件构成了一个OODBMS的较全面的功能要求,这样所构成的数据库管理系统既有传统数据库管理系统的全部功能,又能支持面向对象数据模型,这是一个比传统数据库系统功能更为强大的数据库系统,并且符合在“第三代数据库系统宣言”中对面向对象数据库系统所提出的必需条件: • 支持核心的面向对象数据模型 • 支持传统数据库系统所有的数据库特征

  27. 11.5.2 面向对象数据库管理系统的内容 • 面向对象数据库管理系统有三大部分内容组成: • 类管理 • 类管理主要指对类的定义、操作进行管理。 • 对象管理 • 对象管理又称实例管理,此部分主要完成对类中对象的操纵管理。 • 对象控制 • 对象控制除了具有传统数据库中的数据控制功能,外,在OODBMS还补充了一些新的功能。

  28. 11.5.2 面向对象数据库管理系统的内容 • 类管理 - 类定义 • 主要用于建立类层次结构,它包括: • 类的数据结构定义 • 定义类中的每个属性,包括:属性名、属性的取值范围(值域)、属性的缺省值,如果是继承下来的属性还必须指出是从哪一个超类中继承下来的。 • 类的方法定义 • 定义类中方法,包括方法名,如果是继承下来的方法还必须指出是从哪一个超类中继承下来的。 • 方法的实现代码一般通过其它途径来定义,在这里定义方法主要用于实现方法与类的封装。类间的继承与合成关系定义 • 其它的附加定义 • 如完整性条件定义等

  29. 11.5.2 面向对象数据库管理系统的内容 • 类管理 - 类模式演化 • 面向对象数据模型的模式修改操作,包括类结构的修改操作以及类与类之间关系的修改操作。 • 类模式演化功能的强弱是面向对象数据库系统与传统数据库系统的重要差别之一,类模式演化主要有如下一些内容: • 类中内容的变化 • 与属性有关的修改操作有:属性的增加与删除、属性名的修改、属性值域的修改、属性缺省值的修改 • 与方法有关的修改操作有:方法的增加与删除、方法名的修改、方法的实现代码的修改 • 类名的修改

  30. 11.5.2 面向对象数据库管理系统的内容 • 类管理 – 类模式演化 • 类间关系的变化 • 类间继承关系的改变 • 使类S成为类C的超类 • 从类C的超类表中删除一个类S • 改变类C的超类顺序 • 类间合成关系的改变 • 使类C’成为类C中属性A的合成类 • 从类C属性A中删除合成类C’

  31. 11.5.2 面向对象数据库管理系统的内容 • 类管理 – 类模式演化 • 类结构重组: • 简单的结构重组 • 从类层次结构中增加一个新类 • 从类层次结构中删除一个老类 • 复杂的结构重组 • 创建一个新类C作为现有几个老类的共同超类 • 合并n个老类成一个新类 • 分解一个类成n个新类

  32. 11.5.2 面向对象数据库管理系统的内容 • 类管理 – 数据模型的查询及其它功能 • 类层次结构模型的查询 • 类的数据结构、方法的查询 • 类间关系的查询 • 其它:有关类管理中的一些其它功能,包括: • 权限建立或删除 • 显示、打印及实例加载等

  33. 11.5.2 面向对象数据库管理系统的内容 • 对象管理 - 对象的查询 • 以类层次结构模型图为依据,可从模型中任何一点(或多点)出发,沿图中路径查询满足条件的任何图中另一点(或多点)的对象。 • 查询路径 • 从图中的一个点(类)出发,沿着类与类之间的继承与合成关系可以到达图中的另一点,所经过的路径被称为查询路径或导航。 • 查询路径或导航概念是OODBMS中的又一个重要特色。

  34. 11.5.2 面向对象数据库管理系统的内容 • 对象管理 – 对象的查询 • 查询路径由类、属性、继承路径、合成路径等几部分组成。其中继承路径与合成路径具有正、反向通行能力,每条路径有起点与终点,它构成了一个完整的路径称为路径变量。

  35. 11.5.2 面向对象数据库管理系统的内容 • 对象管理 – 对象的查询 • 例:学生.课程.课程.主讲教师.姓名 • 在查询路径中还有两点不同于传统的SQL 语言: • 量词的使用 • 路径变量有标量与集合量之分,在路径变量为集合量时,允许在路径变量所表示的路径中插入存在(exist)与全称(each)符。 • 存在符表示:“只要有一条路径”,而全称符则表示:“对所有路径”。 • 当路径中出现集合量时,在其前冠以each或exist后即成为标量,可以与一些常量值进行比较操作。 • 在路径变量中允许插入方法

  36. 11.5.2 面向对象数据库管理系统的内容 • 对象管理 – 对象的查询 • 例:exist 学生.课程.课程.主讲教师.姓名 = ‘李强’ • 例:学生.课程.课程.主讲教师.year( ) • 例:学生.课程. avg_grade( ) >= 90

  37. 11.5.2 面向对象数据库管理系统的内容 • 对象管理 - 对象的增、删、改操作 • 在类层次结构中,对对象的增、删、改操作极为复杂,与传统的关系数据库系统不同,如:在删除一个对象时,应该考虑的内容有: • 所对应子类的对象是否删除? • 所对应超类的对象是否删除? • 它所对应的合成类中相应对象是否删除? • 它所对应的被合成类中相应对象是否删除? • 如果允许上述的删除现象发生,将会引起连锁反映,直至删除类层次结构的根或叶子。 • 对上述问题一般采用两种解决办法: • 系统规定一种统一的处理办法 • 用户自己决定处理办法

  38. 11.5.2 面向对象数据库管理系统的内容 • 对象管理 - 索引、集簇及其它 • 这是为提高查找速度所采用的方法,其中又分为: • 按类中属性及路径所建立的索引 • 对类及路径所建立的集簇

  39. 11.5.2 面向对象数据库管理系统的内容 • 对象控制 • 完整性约束条件及检验 • 在OODBMS中,可通过方法及消息以实现完整性约束条件的表示及检验。 • 采用此种手段使完整性约束条件的表示功能大为提高,检验更为有效。 • 安全性表示与检查 • 在OODBMS中,可用类似于传统数据库管理系统中的方法引入受权机制以实现安全性功能。 • 在具体实现时要比传统数据库管理系统复杂得多。

  40. 11.5.2 面向对象数据库管理系统的内容 • 对象控制 • 并发控制与事务处理 • 在OODBMS中,可用类似于传统数据库管理系统中的方法引入并发控制技术于事务处理过程中。 • 在具体实现时,并发控制变得更为复杂。 • 事务处理需增加‘长事务’及‘嵌套事务’的功能。 • 故障恢复 • 在OODBMS中,也可用传统数据库管理系统中的方法以实现故障恢复功能,但在具体处理时较为复杂。

  41. 11.5.3 面向对象数据库语言 • 目前所用的语言大多选用类SQL形式,其中较为著名的有: • SQL-3:它是一种在SQL-2的基础上扩充了面向对象成分的OO数据库语言,并有望成为国际标准 • OQL语言:它是ODMG组织推荐的一种OO数据库语言 • 在本节以OSQL语言为例,介绍面向数据库系统的模式定义功能和对象查询及操纵功能。

  42. 11.5.3 面向对象数据库语言 1.模式定义子语言 • OSQL的模式定义子语言主要有如下一些功能: • 类的创建 • 类的删除 • 方法的创建 • 方法的修改 • 方法的删除 • 类结构的修改(类模式演化) • 类名的修改

  43. 11.5.3 面向对象数据库语言 1.模式定义子语言 -类创建语句 CREATE CLASS Classname( [ SuperClasses( list of superclassspecs )] [ Attributes ( list of attributespecs )] [ Methods ( list of methodspecs )] ) • Classname是新创建类的类名,而SuperClasses、 Attributes、 Methods则是三个可以选择的定义子句。 • 使用SuperClasses子句来定义该类的所有直接超类,使用Attributes子句来给出该类中所有属性的定义,使用Methods子句定义该类中的方法。其中:

  44. 11.5.3 面向对象数据库语言 • 其中每个属性的定义格式如下: (Attribute Name [ Domain Domainspec ] [ Default Value Value ] [ Inherit From Superclass ] ) • 每个方法的定义格式如下: ( Method Name [ ,Superclass Name] )

  45. 11.5.3 面向对象数据库语言 • 设有一个如图11-8所示的类层次结构模型 图11-8 一个类层次结构模型

  46. 11.5.3 面向对象数据库语言 • 其中的Airplane类的类创建语句是: CREATE CLASS Airplane ( Superclasses ( Motorized Vehicle, Airborne Vehicle ) Attributes ( Capacity (Domain integer ), • Weight ( Inherit From Motorized Vehicle ), • Manufacturer ( Inherit From Airborne Vehicle ) ) Methods (( Present Coordinates,Airborne Vehicle ) ) )

  47. 11.5.3 面向对象数据库语言 • 1.模式定义子语言 -类演化语句 • 用于修改类层次结构模型。该语句共有三种类型: • 删除型 • 删除一个类中的某些定义信息,包括超类的定义、属性的定义或方法的定义信息等。 • 添加型 • 在一个类的定义信息中加入新的超类、属性或方法。 • 修改型 • 修改一个类中已有属性或方法的定义信息。

  48. 11.5.3 面向对象数据库语言 • 删除型 EVOLUATE CLASS(DELETE)Classname ( [ SuperClasses( list of superclassspecs )] [ Attributes ( list of attributespecs )] [ Methods ( list of methodspecs )] ) • Classname是被演化类的类名,而SuperClasses、 Attributes、 Methods三个子句给出需要删除的内容。 • 从类Classname中删除一个超类A,则意味着将撤消类Classname与类A的继承关系。 • 对于属性的删除可以是: • 只删除属性的缺省值定义:在 (list of attributespecs) 中,属性名后面跟一个保留字 Default Value • 删除整个属性

  49. 11.5.3 面向对象数据库语言 • 添加型 EVOLUATE CLASS(ADD)Classname ( [ SuperClasses( list of superclassspecs )] [ Attributes ( list of attributespecs )] [ Methods ( list of methodspecs )] ) • Classname是被演化类的类名,而SuperClasses、 Attributes、 Methods三个子句给出需要增加的内容。 • 向类Classname中加入一个超类A,将建立类Classname与类A的继承关系。 • 可以在类Classname中增加一个属性,该属性可以是从其超类中继承下来的,也可以是类Classname中新定义的一个属性。 • 也可以使用该命令为类Classname的已有属性增加缺省值的定义。 • 方法的添加与属性的添加类似。

  50. 11.5.3 面向对象数据库语言 • 修改型 EVOLUATE CLASS(CHANGE)Classname ( [ Attributes ( list of attributespecs )] [ Methods ( list of methodspecs )] ) • 主要用于修改类中的属性与方法的定义信息。 • 对属性定义的修改包括: • 属性名、值域、缺省值、属性的继承关系 • 对方法的修改包括: • 方法名、方法的继承关系

More Related