数据库系统教程--第8章+对象数据库系统.ppt_第1页
数据库系统教程--第8章+对象数据库系统.ppt_第2页
数据库系统教程--第8章+对象数据库系统.ppt_第3页
数据库系统教程--第8章+对象数据库系统.ppt_第4页
数据库系统教程--第8章+对象数据库系统.ppt_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八章 对象数据库系统,本章重要概念(一),(1)新一代DBS的两条途径:ORDBS和OODBS。 (2)平面关系模型,嵌套关系模型,复合对象模型,引用类型,对象联系图的成分及表示方法,数据的概化/特化,继承性。 (3)OO的数据类型系统:基本类型,五种复合类型,引用类型。 (4)对象关系模型的定义,两个级别的继承性,引用类型的定义,ORDB的查询语言,路径表达式,Oracle中查询的两种技术,嵌套与解除嵌套。,本章重要概念(二),(5)OODBS的定义,OO数据模型的五个基本概念,ODMG1.0标准的ODL和OML,ODMG2.0标准的数据模型、ODL和OQL。 (6)OODB与ORDB的比

2、较。 (7)UML的类图,用类图表达类、关联、关联类、概化/特化、聚合。,主要内容和学习要求,8.1 对象联系图 (理解) 8.2 面向对象的数据类型系统(了解) 8.3 ORDB的定义语言 (了解) 8.4 ORDB的查询语言 (了解) 8.5 OODBS概述 (了解) 8.6 ODMG1.0标准 (了解) 8.7 ODMG2.0标准 (了解) 8.8 OODB与ORDB的比较 (了解) 8.9 使用UML类图来概念对象建模 (理解),从关系到嵌套关系、复合对象,(a),(b),(c),嵌套关系和复合关系的实例,大学,教师,校长,University(uno,uname,city, staf

3、f(fno,fname,age), presidentfno,fname,age ),引用类型,嵌套关系和复合对象无法表达递归的结构 使用“引用”(reference)的技术解决类型定义中的递归问题 ;引用相当于指针,对象联系图的成分,对象类型,属性值是单值,对象间嵌套或引用的关系,基本数据类型,属性值是多值,两个属性之间值的联系为逆联系,对象间是超类和子类的联系,一个对象联系图的实例,数据的泛化特化,泛化: 特化: 这种特化联系是一种“是”(is a)的联系。,主要内容,8.1 对象联系图 8.2 面向对象的数据类型系统 8.3 ORDB的定义语言 8.4 ORDB的查询语言 8.5 OOD

4、BS概述 8.6 ODMG1.0标准 8.7 ODMG2.0标准 8.8 OODB与ORDB的比较 8.9 使用UML类图来概念对象建模,面向对象的数据类型系统,基本类型:整型、浮点型、字符、字符串、布尔型和枚举型 复合类型 行类型:不同类型元素的有序集 数组类型:相同类型元素的有序集合 列表类型:相同类型元素的有序集合,并且允许有重复的元素 包类型:相同类型元素的无序集合,并且允许有重复的元素 集合类型:相同类型元素的无序集合,并且所有的元素必须是不同的 引用类型,主要内容,8.1 对象联系图 8.2 面向对象的数据类型系统 8.3 ORDB的定义语言 8.4 ORDB的查询语言 8.5 O

5、ODBS概述 8.6 ODMG1.0标准 8.7 ODMG2.0标准 8.8 OODB与ORDB的比较 8.9 使用UML类图来概念对象建模,数据类型的定义,CREATE TYPE MyString char varying; CREATE TYPE MyDate(day integer,month char(10),year integer); CREATE TYPE StudentGrade setof(CourseGrade); CREATE TYPE CourseGrade(course MyString,grade integer, date MyDate); CREATE TYPE

6、 StudentCourseGrade(name MyString, cg StudentGrade); CREATE TABLE sc of TYPE StudentCourseGrade;,CREATE TABLE SC (name MyString,cg setof (course MyString,grade integer,date MyDate);,CREATE TYPE NameArray MyString10; CREATE TYPE Grades multiset(integer); CREATE TYPE Grades listof(integer);,继承性的定义,类型级

7、的继承性,CREATE TYPE Person(name MyString,social_number integer); CREATE TYPE Student(degree MyString,department MyString) under Person; CREATE TYPE Teacher(salary integer,department MyString) under Person;,表级的继承性,子表和超表应满足下列两个一致性要求: 超表中每个元组最多可以与每个子表中的一个元组对应。 子表中每个元组在超表中恰有一个元组对应,并在继承的属性上有相同的值 。,超表,子表,子表,

8、引用类型的定义,对类型的引用 定义:team_list setof(ref(Person) 对表中的元组的引用,CREATE TABLE university( uno integer,uname MyString,city MyString,president ref(faculty),staff setof(ref(faculty),edit setof(ref(coursetext); CREATE TABLE faculty(fno integer,fname MyString,age integer,works_for ref(university),teach setof(ref(

9、coursetext);,SQL3中的定义语言的特色,结构数据类型(row类型) 对象标识符(oid):便于引用 Oid的三个性质 oid值在任何时刻都能惟一标识元组 oid只是一个简单的标识,与元组的物理值无关 在元组插入DB时,oid值由DBMS自动产生,主要内容,8.1 对象联系图 8.2 面向对象的数据类型系统 8.3 ORDB的定义语言 8.4 ORDB的查询语言 8.5 OODBS概述 8.6 ODMG1.0标准 8.7 ODMG2.0标准 8.8 OODB与ORDB的比较 8.9 使用UML类图来概念对象建模,以关系为值的属性,在ORDB中,规定应为每个基本表设置一个元组变量,然

10、后才可引用,否则语句将不做任何事情 聚集函数(如min、max和count)以一个值的集合体作为参数并返回单个值作为结果,它们可以应用于任何以关系为值的表达式处,SELECT F.fno,F.fname FROM faculty as F WHERE(MATHS,Mathematical Analysis)IN F.teach; SELECT U.uname,count(SELECT * FROM U.staff as F WHERE F.age50) FROM university as U WHERE U.city = shanghai;,路径表达式,当属性值为单值或结构值时,属性的引用方

11、式仍和传统的关系模型一样,在层次之间加园点“.” 当路径中某个属性值为集合时,就不能连着写下去,SELECT U.uname,U.president.fname FROM university as U WHERE U.city = shanghai; U.staff.fname 错(staff是集合) SELECT U.uname,F.fname FROM university as U,U.staff as F WHERE U.city = shanghai AND F.age50; 正确,嵌套与解除嵌套,SELECT U.uname,set(F.fno,F.fname)as teache

12、rs FROM university as U,U.staff as F,F.teach as C WHERE C.editor.uname = U.uname GROUP BY U.uname;,以嵌套的形势显示1NF结果,以1NF的形势显示嵌套结果,在select子句中列出所有内层属性,且内层属性前加上层次限定词,函数的定义和使用,用户可以用程序设计语言(如C,C+)或SQL定义SQL中的函数,CREATE TYPE StudentCourse- Grade(name MyString, cg setof(course MyString, grade integer,date MyDate

13、); CREATE TABLE sc of TYPE StudentCourseGrade;,数据定义,CREATE FUNCTION course_count(one_student StudentCourseGrade) RETURNS integer AS SELECT Count(cg) FROM one_student;,定义的一个函数:返回给定学生的选课门数,SELECT name FROM sc WHERE course_count(sc) 8,使用函数的一个查询,复合值的创建和查询,(ZHANG,set(DB,80,(1,July,2000),(OS,85,(1,January

14、,2001),集合类型用SET说明,多集值则用MULTISET说明,符合属性DATE的值用()说明,INSERT INTO sc VALUES (ZHANG,set(DB,80,(1,July,2000),(OS,85,(1,January,2001);,SELECT name,count(cg) FROM sc WHERE name IN set(WANG, LIU,ZHANG),涉及复合值的一个插入语句,涉及复合值的一个查询语句,主要内容,8.1 对象联系图 8.2 面向对象的数据类型系统 8.3 ORDB的定义语言 8.4 ORDB的查询语言 8.5 OODBS概述 8.6 ODMG1.

15、0标准 8.7 ODMG2.0标准 8.8 OODB与ORDB的比较 8.9 使用UML类图来概念对象建模,ODMG标准,什么是ODMG标准 ODMG标准的五个核心概念 对象是基本的数据结构 每个对象有一个永久的表示符 对象可以被指定类型和子类型 对象状态由数据值与联系定义 对象行为由对象操作定义,OODBS,什么是OODBXS 典型的OODBMS: ObjectStore,Ontos,O2,Gemstone,Objectivity和PostVersant,面向对象数据模型的概念,对象:由一组变量、消息和方法组成 类:本质相同的对象的抽象 继承性:类的子类继承父类的所有性质 对象标识:OID,

16、唯一标识对象 对象包含:一个对象由几个对象组成,则该对象包含它的成员对象,1.一个对象,主要内容,8.1 对象联系图 8.2 面向对象的数据类型系统 8.3 ORDB的定义语言 8.4 ORDB的查询语言 8.5 OODBS概述 8.6 ODMG1.0标准 8.7 ODMG2.0标准 8.8 OODB与ORDB的比较 8.9 使用UML类图来概念对象建模,持久化程序设语言和嵌入式语言的区别,在嵌入式语言中,宿主语言的类型系统与SQL的类型系统不同,程序员要负责宿主语言与DML之间的类型转换。而持久化程序设计语言的查询语言与宿主语言完全集成在一块,任何格式转换对程序员都是透明的。 使用嵌入式查询

17、语言的程序员要负责编写程序把数据从数据库中取出放到内存中。在持久化语言中,程序员可以直接操纵持久数据,而不必为存取数据编写程序。,持久化语言的基本概念,对象的持久性 对象标识和指针 持久对象的存储和访问 根据对象名找对象 根据对象标识找对象 将对象按聚集形式存放,然后利用程序循环找所需对象 持久化c+系统:通过类库赖扩展C+,以支持持久化 扩展c+对象定义语言 扩展c+对象操纵语言,ODMG C+对象定义语言 -C+ ODL,class Person:public Persistent_Object public:string name; int age; ; class Faculty:pu

18、blic Person private:int salary; public: int fno; Ref works_for inverse University:staff; Set teach inverse Coursetext:teacher; ;,class University:public Persistent_Object public:int uno; string uname; string city; Ref president; Set staff inverse Faculty:works_for; Set edit inverse Coursetext:editor

19、; ; class Coursetext:public Persistent_Object public:string cname; string textname; Ref teacher inverse Faculty:teach; Ref editor inverse University:edit; ;,ODMG C+对象操纵语言 -C+ OML,插入实例, 打开数据库; 事务开始; 查询工号为fno值的Faculty对象ofa; 查询校名为uname值的University对象oun; 创建Coursetext对象oco,送入cname和textname值: Ref oco = ne

20、w(faco_db) Coursetext; oco-cname = cname; oco-textname = textname; 在oco的teacher中插入Faculty对象ofa: oco-teacher.insert_element(ofa); 在oco的editor中插入University对象oun: oco-editor.insert_element(oun); 事务提交(commit)。,主要内容,8.1 对象联系图 8.2 面向对象的数据类型系统 8.3 ORDB的定义语言 8.4 ORDB的查询语言 8.5 OODBS概述 8.6 ODMG1.0标准 8.7 ODMG2

21、.0标准 8.8 OODB与ORDB的比较 8.9 使用UML类图来概念对象建模,ODMG对象模型的主要内容,对象和文字(ODMG对象模型的基本成分) 两者的区别 对象的特征:OID,Name,Lifetime,Struct 对象的结构 汇集对象 原子对象 文字的结构 原子文字、结构文字和汇集文字 接口、类、类外延和关键码,ODMG对象定义语言(ODL),interface Faculty:Person (extent Faculties key fno) attribute integer fno; relationship University works_for inverse Univ

22、ersity:staff; relationship Set teach inverse Coursetext:teacher; integer num_teach() raises(noTeach);,interface University (extent Universities key uno) attribute integer uno; attribute string city; relationship Faculty president; relationship Set staff inverse Faculty:works_for; relationship Set ed

23、it inverse Cursetext:editor; integer num_staff();,OQL中的SELECT语句,1.检索上海地区大学中教师开设课程的课程名。 SELECT DISTINCT C.cname FROM University U,U.staff F,F.teach C WHERE U.city = shanghai; 2.下面查询返回的是列表值而不是集合或多集: SELECT F.fno,F.name FROM Faculty F ORDER BY F.age DESC)0:4; 3. 检索上海地区各大学中教师开课的课程名,要求显示校名、教师名、课程名。 SELEC

24、T Struct(U.uname,set(F.name,set(C.cname) FROM University U,U.staff F,F.teach C WHERE U.city = shanghai;,OQL的量词表达式,全称量词的句法 FOR ALL x IN S:C(x) 存在量词的句法 EXISTS x IN S:C(x) 检索存在60岁以上教师的大学校名。 SELECT DISTINCT U.uname FROM University U WHERE EXISTS F IN U.staff:F.age=60; 检索教师年龄全在50岁以下的大学校名。 SELECT U.uname

25、FROM University U WHERE FOR ALL F IN U.staff:F.age50;,OQL中使用聚集操作和分组子句的SELECT语句,OQL中 ,COUNT可以应用于任何聚集,SUM和AVG可以用于基本类型的聚集,MAX和MIN可以用于任何可比较类型的聚集。 检索每个年龄段教师平均授课门数。 SELECT F.age, avgNum:AVG(SELECT P.F.num_teach() FROM partition P) FROM Faculty F GROUP BY F.age; 检索至少有一位教师年龄超过90岁的大学的编号、校名和教师人数。 SELECT U.uno

26、,U.uname,U.num_staff()FROM University U GROUP BY U.uno,U.uname HAVING MAX(SELECT F.age FROM partition P,P.staff F)90;,OQL的集合运算符,(SELECT U.uno,U.uname FROM University U GROUP BY U.uno,U.uname HAVING U.num_staff() 500 );,OQL中对象的赋值和建立,对宿主语言变量赋值 oldFaculties = SELECT F FROM Faculty F WHERE F.age 60; 从聚集

27、中提取元素 facultyList = SELECT F FROM Faculty F WHERE F.age 60 ORDER BY F.salary DESC,F.age DESC;,主要内容,8.1 对象联系图 8.2 面向对象的数据类型系统 8.3 ORDB的定义语言 8.4 ORDB的查询语言 8.5 OODBS概述 8.6 ODMG1.0标准 8.7 ODMG2.0标准 8.8 OODB与ORDB的比较 8.9 使用UML类图来概念对象建模,OODB和ORDB的比较,主要内容,8.1 对象联系图 8.2 面向对象的数据类型系统 8.3 ORDB的定义语言 8.4 ORDB的查询语言

28、 8.5 OODBS概述 8.6 ODMG1.0标准 8.7 ODMG2.0标准 8.8 OODB与ORDB的比较 8.9 使用UML类图来概念对象建模,UML概述,什么事UML UML的历史 UML的基本组件 状态图 类图 组件图,类图和ER图中术语的区别,用类图表达类和关联,ER图,UML的类图,类名,属性,方法,重复度,关联名 二元,用类图表达类和关联续,(a)人之间的婚姻关联 (b)职员之间的管理关联 图8.21 两个一元关联,图8.22 三元关联,用类图表达关联类,Student sno sname age sex,Course cno cname teacher,Registration term grade CheckEligibility( ),*,*,ComputerAccount acctID password serveSpace,Issues,*,0.1,用类图表达概化和特化,鉴别器:指定概化的基础 概化表示了继承性联系 抽象类和具体类 子类的语义约束,ResidentPatient dateDischarged,Patient abstract patientID admitDate,Physician PhysicianID PhysicianName,Outpatient checkbackDate,Bed bedNo,* Tr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论