数据库原理及应用 教学课件 ppt 作者 范剑波 1_ 第9章 面向对象数据库系统

上传人:E**** 文档编号:89375743 上传时间:2019-05-24 格式:PPT 页数:49 大小:242.50KB
返回 下载 相关 举报
数据库原理及应用 教学课件 ppt 作者  范剑波 1_ 第9章 面向对象数据库系统_第1页
第1页 / 共49页
数据库原理及应用 教学课件 ppt 作者  范剑波 1_ 第9章 面向对象数据库系统_第2页
第2页 / 共49页
数据库原理及应用 教学课件 ppt 作者  范剑波 1_ 第9章 面向对象数据库系统_第3页
第3页 / 共49页
数据库原理及应用 教学课件 ppt 作者  范剑波 1_ 第9章 面向对象数据库系统_第4页
第4页 / 共49页
数据库原理及应用 教学课件 ppt 作者  范剑波 1_ 第9章 面向对象数据库系统_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《数据库原理及应用 教学课件 ppt 作者 范剑波 1_ 第9章 面向对象数据库系统》由会员分享,可在线阅读,更多相关《数据库原理及应用 教学课件 ppt 作者 范剑波 1_ 第9章 面向对象数据库系统(49页珍藏版)》请在金锄头文库上搜索。

1、第9章 面向对象数据库系统 Chapter 9 Object Oriented Database System,本章重点 本章主要介绍了面向对象数据模型的基本概念、对象定义语言(ODL)、子类、从ODL设计到关系设计和对象查询语言(OQL)等内容,要求读者重点掌握面向对象数据模型的基本概念,学会用对象定义语言(ODL)来描述类和子类,掌握将ODL设计转换为关系设计的方法,了解对象查询语言。,9.1 面向对象数据模型的基本概念 9.1.1 OO模型的核心概念 一个00模型是用面向对象观点来描述现实世界实体 (对象)的逻辑组织、对象间限制、联系等的模型。一系 列面向对象核心概念构成了00模型的基础

2、。概括起来, 00模型的核心概念有如下一些。 1对象(Object)与对象标识OID(Object Identifier) 2封装(Encapsulation) 3类(Class) 4类层次(结构) 5消息(Message),9.1.2 对象与对象标识 1对象结构 对象是由一组数据结构和在这组数据结构上的操作的 程序代码封装起来的基本单位。对象之间的界面由一组消 息定义。一个对象包括以下几个部分: (1)属性集合:所有属性合起来构成了对象数据的 数据结构。属性描述对象的状态、组成和特性。对象的某 一属性可以是单值或者是值的集合;一个对象的属性也可 以是一个对象,即对象可以嵌套。 (2)方法集合

3、:方法描述了对象的行为特性。方法 的定义包括两部分:方法的接口用以说明方法的名称、参 数和结果返回值的类型,也称为调用说明;方法的实现是 一段程序编码,用以实现方法的功能,即对象操作算法。 (3)消息集合:消息是对象向外提供的界面,消息 由对象接收和响应。面向对象数据模型中的“消息”与计 算机网络中传输的消息的含义不同。它是指对象之间的操 作请求的传递,而不考虑操作实现细节。,2对象标识 面向对象数据库中的每个对象都有一个唯一的不变的标识称为对象标识(OID)。对象通常与实际领域的实体对应。在现实世界中,实体中的属性值可能随着时间的推移会发生改变,但是每个实体的标识始终保持不变。相应的,对象的

4、部分(或全部)属性、对象的方法会随着时间的推移发生变化,但对象标识不会改变。两个对象即使属性值和方法都完全相同,如果OID不同则认为是两个不同的对象,它们只是值相等而已。对象标识的概念比程序设计语言或传统数据模型中所用到的标识概念更强。下面是常用的几种标识。 (1)值标识。用值来表示标识。 (2)名标识。用一个名字来表示标识。 (3)内标识。以上两种标识是由用户建立的,内标识是建立在数据模型或程序设计语言中,不要求用户给出标识。,3封装 00模型的一个关键概念就是封装。每一个对象是其 状态与行为的封装。封装是对象的外部界面与内部实现 之间实行清晰隔离的一种抽象,外部与对象的通信只能 通过消息,

5、这是00模型的主要特征之一。 封装的意义在于将对象的实现与对象应用互相隔 离,从而允许对操作的实现算法和数据结构进行修改, 而不影响接口,不必修改使用它们的应用,这有利于提 高数据独立性。由于封装,对用户而言这些实现是不可 见的,这就隐藏了在实现中使用的数据结构与程序代码 等细节。此外对象封装后成为一个自含的单元,对象只 接受已定义好的操作,其他程序不能直接访问对象中的 属性,从而可以提高程序的可靠性。,9.1.3 类和类层次 1类的概念 在00数据库中,相似对象的集合称为类,每一个对象是它所在类的一个实例。一个类中的所有对象共享个定义,它们的区别仅在于属性的取值不同。 可以看到,类的概念类似

6、关系模式,类的属性类似关系模式中的属性;对象类似元组的概念,类的一个实例对象类似关系中的一个元组。 可以把类本身也看作一个对象,称为类对象。 面向对象数据库模式是类的集合。在一个面向对象数据库模式中,会出现多个相似但又有所不同的类。为此,面向对象的数据模型提供了一种类层次结构。类层次结构可以实现上述要求。,2类的层次结构 一个面向对象数据库模式可能有多个类层次。在一个类层次中,一个类继承其所有超类的全部属性、方法和消息。 可以定义一个类“人”。人的属性、方法和消息的集合是教职员工和学生的公共属性、公共方法和公共消息的集合。教职员工类和学生类定义为人的子类。教职员工类只包含教职员工的特殊属性、特

7、殊方法和特殊消息的集合。学生类也只包含学生的特殊属性、特殊方法和特殊消息集合。图9.1给出了学校数据库的一个类层次以及各类对应的属性。 图9.1 某学校数据库的类层次结构图,其中: 人(Person):身份证号、姓名、年龄、性别、住址 教职员工(Employee):工龄、工资、办公室电话号 码、家庭成员数 教员(Teacher):职称、职务、专长 行政人员(Officer):职务、职责、办公室地址 工人(Worker):工种、级别、所属部门 学生(Student):入学年份、专业 本科生(UndergraduateStudent):已修学分、平均 成绩 研究生(GraduateStudent)

8、:研究方向、导师 为了叙述简单,没有给出这些类的方法。在这个类 层次中教职员工和学生是人的子类,教员、行政人员、 工人是教职员工的子类。因此,逻辑上它们具有人、教 职员工和本身的所有属性、方法和消息。同样,本科生 和研究生是学生的子类。,9.1.4 继承 在00模型中常用的有两种继承,单继承与多重继 承。若一个子类只能继承一个超类的特性(包括属性、 方法和消息),这种继承称为单继承;若一个子类能继 承多个超类的特性,这种继承称为多重继承。 例如,在学校中实际上还有“在职研究生”,他们 既是教员又是学生,在职研究生继承了教职员工和学生 两个超类的所有属性、方法和消息,如图9.2所示。 单继承的层

9、次结构图是一棵树(如图9.1),多继承 的层次结构图是一个带根的有向无回路图(如图9.2)。 继承性有如下两个优点: 1、它是建模的有力工具,提供了对现实世界简 明而精确的描述。 2、它提供了信息重用机制。 子类对父类即有继承又有发展,继承的部分就是重 用的成分,发展的部分就是本身的特性。,图9.2 具有多继承的类层次结构图 9.1.5 对象的嵌套 在一个面向对象数据库模式中,对象的某一属性可 以是单值的或值的集合。进一步地,一个对象的属性也 可以是一个对象,这样对象之间产生一个嵌套层次结 构。 设Obj1和Obj2是两个对象。若Obj2是Obj1的某个属 性的值,称Obj2 属于Obj1,或

10、Obj1包含Obj2。一般地, 若对象Obj1包含对象Obj2,则称Obj1为复杂对象,Obj2 是Obj1的子对象。Obj2还可以包含对象Obj3,这样Obj2 也是复杂对象,从而形成一个嵌套层次结构。,例如,每辆汽车包括:汽车型号、汽车名称、发动 机、车体、车轮、内部设备等属性。其中汽车型号和汽 车名称的数据类型是字符串,发动机不是一个标准数据 类型,而是一个对象,包括:发动机型号、马力等属 性;车体也是一个对象,包括:钢板厚度、钢板型号、 车体形状等属性;内部设备也是个对象,包括:车 座、音响设备、安全设备等属性;音响设备也可以是一 个对象,包括:VCD、喇叭等属性,如图9.3所示。 图

11、9.3 汽车的嵌套层次图,9.2 对象定义语言ODL 对象定义语言 (Object Definition Language,简 称ODL)是用面向对象的术语来说明数据库结构的一种推 荐的标准语言,其主要用途是书写面向对象数据库的设 计,进而将其直接转换成面向对象数据库管理系统 (Object-Oriented DBMS,简称OODBMS)的说明。 OODBMS的基本语言一般是C+或者Smalltalk,所以 必须把ODL转换成其中一种语言的说明。事实上,我们很 快就会看到,ODL与C+是非常类似的,因此这种转换也 相当方便。,9.2.1面向对象的设计 所谓对象,就是某种可观察、可研究的实体;每

12、个 对象都有唯一的标识,使其能区分于任何其他的对象。 不同的对象有可能具有很多相似的特性,可以把具有相 似特性的对象归为一类。总之,在数据库中,对象和类 的概念与我们在C+中学到的概念基本相同。 在进行ODL类的设计时,有三种特性需要描述: 1属性(attribute),它们的类型是由基本的数据 类型(如整型或字符串类型)构成的。在ODL中,属性的类 型只有有限的几种。 2联系(relationship),它们的类型是对某类对 象的引用或是这种引用的集合。 3方法(method),是能用于该类对象的函数,在 ODL中对方法的使用与C+中是类似的,因此我们不对其 进行详细的讨论。,9.2.2 类

13、的声明 在ODL中,声明一个类的最简单形式包括: 1关键字interface(接口) 2类的名字 3用花括号括起来的类的特性表(特性包括属 性、联系和方法) 所以,要声明一个类,最简单的形式是: interface ; 由于在类的声明中所用的关键字是“接口”,因 此,类的声明又叫接口说明。,9.2.3 ODL中的属性 属性是最简单的一种特性,它用某个简单类型的值 来描述对象的某个方面。例如,在学生选课数据库中, 对每门课来说都有一个字符串类型的属性CourseName (课程名),它的值是这门课的课程名;还有一个字符串 类型的属性Teacher(任课老师),它的值是教这门课的 老师的姓名。 下

14、面是ODL对课程类的说明。这个说明尚不完整,我 们将随着教材内容的深入对其进行扩充。 1) interface Course 2) attribute integer CourseNo; /课程号 3) attribute string CourseName;/课程名 4) attribute string Teacher; /任课老师 ;,在学生选课的数据库中,我们还可以再定义一个简 单的学生类。 1) interface Student 2) attribute integer StudentNo /学号 3) attribute string StudentName; /姓名 4) at

15、tribute integer Age; /年龄 5) attribute string Dept /系别 ; 再举一个电影资料数据库的例子,先看电影类Movie: 1) interface Movie 2) attribute string Title; /电影名 3) attribute integer Year; /电影制作年份 4) attribute integer Length; /电影长度 5) attribute enum Film color, blackwhite Type;/电影类型(彩色或黑白),再来定义演员类Actor 1) interface Actor 2) at

16、tribute string Name; /演员的姓名 3) attribute integer Year; /出生年份 ; 9.2.4 ODL中的联系和反向联系 在现实世界中,很多事物都不是孤立的,往往存在 各种各样的联系。只用属性来描述一个对象显然是不够 的,只有把一个对象与其他对象之间的联系描述出来, 才能更完整、准确地反映客观世界。,比如,课程和学生之间存在着选课的联系,现在我 们在Course类的说明中增加一个学生集合的特性,代表 选上该课的学生集合。首先要明确,属性的类型不能是 类,也不能从类中构造,所以学生集合不能作为Course 类的属性。我们把学生集合作为Course类和Student类之 间的联系,在Course类的说明中增加如下一行: Relationship Set students; 这一行说明Course类的每个对象中都有一个对 Student对象的引

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号