第十章对象关 系数 据库

上传人:w****i 文档编号:91079733 上传时间:2019-06-21 格式:PPT 页数:52 大小:285KB
返回 下载 相关 举报
第十章对象关 系数 据库_第1页
第1页 / 共52页
第十章对象关 系数 据库_第2页
第2页 / 共52页
第十章对象关 系数 据库_第3页
第3页 / 共52页
第十章对象关 系数 据库_第4页
第4页 / 共52页
第十章对象关 系数 据库_第5页
第5页 / 共52页
点击查看更多>>
资源描述

《第十章对象关 系数 据库》由会员分享,可在线阅读,更多相关《第十章对象关 系数 据库(52页珍藏版)》请在金锄头文库上搜索。

1、数据库实用教程(第三版),第十章 对象关系数据库,清华大学出版社 董健全 2019年6月21日,第十章 对象关系数据库 本章概念: 新一代DBS的两条途径:ORDBS和OODBS;,平面关系模型,嵌套关系模型,复合对象模型,引用类型;,对象联系图的成分及表示方法,数据的泛化/细化; ORDB的定义语言:数据类型、继承性、引用类型的定义, ORDB的查询语言:路径表达式、嵌套与解除嵌套。, 数据模型的演变 查询语言的演变 概念建模的演变,1 数据库技术发展的三个演变过程, 数据库技术发展的三个演变过程:,属性都是基本数据类型。,属性可以是基本数据类型,也可以是关系 类型,且数据结构可以多次嵌套。

2、,在复合对象模型的基础上,数据结构的嵌套采用引用(指针)方式,并且引入面向对象技术的继承性等概念。,属性可以是基本数据类型,也可以是关系类型,还可以是元组类型,且数据结构可以多次嵌套。,1数据模型的演变过程 平面关系模型: 嵌套关系模型: 复合对象模型: 面向对象类型:,返回,数据库技术发展的三个演变过程: 2查询语言的演变 主要指SELECT语句的演变过程:,RDB中的SELECT语句:由六个子句构成。,ORDB中的SELECT语句(SQL3标准):引入了路径表达式、嵌套 与解除嵌套等概念。,OODB中的SELECT语句(ODMG标准OQL):有了更多的扩充, 并与宿主语言语句混合起来,可以

3、表达更 为复杂的查询操作。,返回,数据库技术发展的三个演变过程: 3概念建模的演变,ER图: 对象联系图: UML的类图:,ER图 :,返回,2 对象联系图 一、三种模型的表示 集合用 表示,元组用 表示。,例: 在教育系统中,大学(University)与 教师(Faculty) 组成了嵌套关系: University ( uno, uname, city, Staff (fno,fname,age ) 属性Staff是一个关系类型,表示一所大学中的所有 教师。,嵌套的关系结构描述(先定义关系类型,再定义关系):,type UniversityRel = relation(uno: inte

4、ger, uname :string, city : string, staff: FacultyRel); type FacultyRel = realtion(fno:integer, fname:string, age:integer); persistent var University : UniversityRel; 这里嵌套关系用持久变量(persistent variant)形式说明,供用户使用。,也可以先定义元组类型UniversityTup与FacultTup, 再定义关系类型UniversityRel与FacultRel分别为UniversityTup的集合与Facult

5、Tup的集合:,type UniversityTup = tuple (uno:integer, uname:string, staff: FacultRel); type FacultTup = tuple (fno:integer, fname:string, age:integer); type UniversityRel = set( UniversityTup ); type FacultRel = set( FacultTup ); persistent var University: UniversityRel ;,也可以不定义关系类型,直接使用集合set形式: type Uni

6、versityTup = tuple (uno: integer, uname: string, staff:set(FacultTup); type FacultTup = tuple(fno:integer, fname:string, age:integer); persistent var University: set(UniversityTup);,如果大学中还需要校长(president)信息,那么可 设计成如下关系: University ( uno,uname, Staff (fno,fname,age), President fno,fname,age ) 其中Staff是

7、关系类型, President是元组类型; 表示元组类型。 University关系是一个复合关系,不是嵌套关系,,二、引用类型 嵌套关系和复合对象的明显弱点是: 无法表达递归的结构,类型定义不允许递归。 禁用的类型构造 :,采用“引用” 技术解决类型定义中的递归问题。 在属性的类型中,除了基本数据类型、元组类型、关系类型外, 还可以出现“引用类型”。引用类型相当于程序设计中指针的概念, 在面向对象技术中称为“对象标识”。 引入“引用”概念的类型构造:,三、对象联系图的成分,表示对象类型(相当于实体类型);,表示基本数据类型(整型、实型、字符串型)属性;,表示对象之间的“引用”;,表示属性值是

8、单值(属性可以是基本数据类型, 也可以是另一个对象类型);,表示属性值是多值(属性可以是基本数据类型, 也可以是另一个对象类型);,表示对象类型之间的超类与子类联系(从子类 指向超类);,表示两个属性之间值的联系为逆联系。,椭圆: 小圆圈: 椭圆之间的边: 单箭头(): 双箭头(): 双线箭头(): 双向箭头():,返回,四、数据的泛化细化 数据的泛化细化:对概念之间联系进行抽象的一种方法。 “泛化”:称较高层上抽象是较低层上抽象的“泛化”。(在较低层 上抽象表达与之联系的较高层上的抽象, ) “细化”:称较低层上抽象是较高层上抽象的“细化”。这种细化联 系是一种“是”(is a)的联系。,在

9、有泛化细化联系的对象类型之间: 较高层的对象类型称为“超类型”(supertype), 较低层的对象类型称为“子类型”(subtype)。 子类具有继承性,继承超类的特征,而子类本身又有其它的特征。 泛化/细化联系用泛化边(双线箭头)表示,泛化边从子类指向超类。,泛化/细化联系用泛化边(双线箭头)表示,泛化边从子类指向超类。,salary,sno,一、基本数据类型:整型、浮点型、字符型、字符串、布尔型 和枚举型; 二、复合类型:复合类型有下列五种: 1.结构(或行)类型:不同类型元素的有序集合称为结构。 2.数组类型:同类元素的有序集合,称为数组(array)。 3.包(多集)类型:同类元素的

10、无序集合并且允许有重复的元素。 4.集合类型:相同类型元素的无序集合,并且所有的元素必须是 不同的(set)。 5.列表类型:类型相同并且允许有重复的元素的有序集合。,3 面向对象的数据类型,复合类型中: 数组、列表、包、集合 统称为聚集类型。 聚集类型的差异,数据类型可以嵌套。 例: 课程成绩集 (MATHS,80),(PHYSICS,90),(PL,70),(OS,80),(DB,80) 外层是集合类型,里层是结构类型。 三、引用类型 数据类型的定义只能嵌套, 若要允许递归,就要前面提到的引用类型,4 ORDB的定义语言 一、ORDB的定义: 在传统的关系数据模型基础上,提供元组、数组、集

11、合一类丰富的数据类型以及处理新的数据类型操作的能力,并且有继承性和对象标识等面向对象特点。,二、ORDB数据类型的定义 在对象关系模型中,属性可以是基本数据类型或复合类型。 复合类型有下列四种: (1)结构类型:不同类型元素的有序集合称为结构。 (2)数组类型:同类元素的有序集合,称为数组(array)。 (3)多集类型:同类元素的无序集合(有的成员可多次出现), 称为多集(multiset)。 (4)集合类型:同类元素的无序集合(每个成员只能出现一次), 称为集合(set)。,在ORDB中,数据类型可以嵌套。 例如课程成绩集: (MATHS,80),(PHYSICS,90),(PL,70),

12、(OS,80),(DB,0), 外层是集合类型,里层是结构类型。 例:设学生选课和成绩的嵌套关系如下: SC(name,cg(course,grade,date) 其属性表示:学生姓名、课程名、成绩、日期等含义。,CREATE TYPE MyString char varying;/*定义MyString是变长字符串类型*/ CREATE TYPE MyDate (day integer, month char(10), year integer);/*定义MyDate是结构类型*/ CREATE TYPE CourseGrade(course MyString, grade integer,

13、 date MyDate); /*定义CourseGrade是结构类型*/ CREATE TYPE StudentGrade setof(courseGrade); /*定义StudentGrade集合类型*/ CREATE TYPE StudentcourseGrade (name MyString, cg StudentGrade); /*定义StudentcourseGrade是结构类型*/ 在上述基础上再定义关系SC: CREATE TABLE sc of TYPE StudentcourseGrade; /*定义表sc包含了类型为结构StudentcourseGrade的元组*/,C

14、REATE TYPE MyString char varying; /*定义MyString是变长字符串类型*/ CREATE TYPE MyDate ( day integer, month char(10), year integer); /*定义MyDate是结构类型*/ CREATE TYPE CourseGrade ( course MyString, grade integer, date MyDate); /*定义CourseGrade是结构类型*/,CREATE TYPE StudentGrade setof(courseGrade); /*定义StudentGrade集合类型

15、*/ CREATE TYPE StudentcourseGrade (name MyString, cg StudentGrade); /*定义StudentcourseGrade是结构类型*/ 在上述基础上再定义关系SC: CREATE TABLE sc of TYPE StudentcourseGrade; /*定义表sc包含了类型为结构StudentcourseGrade的元组*/,也可以不创建中间类型,直接创建所需的表: CREATE TABLE sc(name MyString, cg setof(course MyString, grade integer, date MyDate

16、);,ORDB中数据类型系统还支持数组和多集类型,,例如: CREATE TYPE NameArray MyString10; /*定义NameArray是数组类型*/ CREATE TYPE Grade multiset(integer); /*定义Grade是多集类型,每个成员是整数*/ 多集类型中的元素是无序的。如果要求元素有序,则用列表类型: CREATE TYPE Grade listof(integer);,三、继承性的定义 继承性可以发生在类型一级或表一级。 1.类型级的继承性:数据类型之间的子类型与超类型的联系。,例:有关人的类型定义: CREATE TYPE Person(name MyString, social_number integer); 可用继承性定义学生类型和教师类型: CRE

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

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

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