数据库系统教程-第8章对象数据库系统.ppt

上传人:牧羊曲112 文档编号:5985756 上传时间:2023-09-11 格式:PPT 页数:55 大小:259.63KB
返回 下载 相关 举报
数据库系统教程-第8章对象数据库系统.ppt_第1页
第1页 / 共55页
数据库系统教程-第8章对象数据库系统.ppt_第2页
第2页 / 共55页
数据库系统教程-第8章对象数据库系统.ppt_第3页
第3页 / 共55页
数据库系统教程-第8章对象数据库系统.ppt_第4页
第4页 / 共55页
数据库系统教程-第8章对象数据库系统.ppt_第5页
第5页 / 共55页
点击查看更多>>
资源描述

《数据库系统教程-第8章对象数据库系统.ppt》由会员分享,可在线阅读,更多相关《数据库系统教程-第8章对象数据库系统.ppt(55页珍藏版)》请在三一办公上搜索。

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的比较。(7

2、)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,staff(fno,fname,age),presi

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

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

5、DB与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 StudentCourseGrade(name MyString,cg StudentGra

6、de);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);,继承性的定义,类型级的继承性,CREATE TYPE Person(name MyString,social_number i

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

8、E 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(coursetext);,SQL3中的定义语言的特色,结构数据类型(row类型)对象标识符(oid):便于引用Oid的三个性质

9、 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中,规定应为每个基本表设置一个元组变量,然后才可引用,否则语句将不做任何事情 聚集函数(如min、max和count)以一个值的集合体作为参数并返回单个值作为结果,它们可以应用于任何以关

10、系为值的表达式处,SELECT F.fno,F.fnameFROM faculty as FWHERE(MATHS,Mathematical Analysis)IN F.teach;SELECT U.uname,count(SELECT*FROM U.staff as F WHERE F.age50)FROM university as UWHERE U.city=shanghai;,路径表达式,当属性值为单值或结构值时,属性的引用方式仍和传统的关系模型一样,在层次之间加园点“.”当路径中某个属性值为集合时,就不能连着写下去,SELECT U.uname,U.president.fnameFR

11、OM university as UWHERE U.city=shanghai;U.staff.fname 错(staff是集合)SELECT U.uname,F.fnameFROM university as U,U.staff as FWHERE U.city=shanghai AND F.age50;正确,嵌套与解除嵌套,SELECT U.uname,set(F.fno,F.fname)as teachersFROM university as U,U.staff as F,F.teach as CWHERE C.editor.uname=U.unameGROUP BY U.uname;

12、,以嵌套的形势显示1NF结果,以1NF的形势显示嵌套结果,在select子句中列出所有内层属性,且内层属性前加上层次限定词,函数的定义和使用,用户可以用程序设计语言(如C,C+)或SQL定义SQL中的函数,CREATE TYPE StudentCourse-Grade(name MyString,cg setof(course MyString,grade integer,date MyDate);CREATE TABLE sc of TYPE StudentCourseGrade;,数据定义,CREATE FUNCTION course_count(one_student StudentCo

13、urseGrade)RETURNS integer ASSELECT Count(cg)FROM one_student;,定义的一个函数:返回给定学生的选课门数,SELECT nameFROM scWHERE course_count(sc)8,使用函数的一个查询,复合值的创建和查询,(ZHANG,set(DB,80,(1,July,2000),(OS,85,(1,January,2001),集合类型用SET说明,多集值则用MULTISET说明,符合属性DATE的值用()说明,INSERT INTO scVALUES(ZHANG,set(DB,80,(1,July,2000),(OS,85,

14、(1,January,2001);,SELECT name,count(cg)FROM scWHERE name IN set(WANG,LIU,ZHANG),涉及复合值的一个插入语句,涉及复合值的一个查询语句,主要内容,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类图来概念对象建模,ODMG标准,什么是ODMG标准ODMG标准的五个核心概念对象是基本的数据结构每个对象有一个永久的表示符对象可以被指定类型和子类型对

15、象状态由数据值与联系定义对象行为由对象操作定义,OODBS,什么是OODBXS典型的OODBMS:ObjectStore,Ontos,O2,Gemstone,Objectivity和PostVersant,面向对象数据模型的概念,对象:由一组变量、消息和方法组成类:本质相同的对象的抽象继承性:类的子类继承父类的所有性质对象标识:OID,唯一标识对象对象包含:一个对象由几个对象组成,则该对象包含它的成员对象,1.一个对象,主要内容,8.1 对象联系图8.2 面向对象的数据类型系统8.3 ORDB的定义语言8.4 ORDB的查询语言 8.5 OODBS概述8.6 ODMG1.0标准8.7 ODMG

16、2.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:public Person private:int salary;public:int fno;Ref works_for inverse University:staff;Set teach inverse Coursetext:teacher;,class University:public Persist

18、ent_Object public:int uno;string uname;string city;Ref president;Set staff inverse Faculty:works_for;Set edit inverse Coursetext:editor;class Coursetext:public Persistent_Object public:string cname;string textname;Ref teacher inverse Faculty:teach;Ref editor inverse University:edit;,ODMG C+对象操纵语言-C+

19、OML,插入实例,打开数据库;事务开始;查询工号为fno值的Faculty对象ofa;查询校名为uname值的University对象oun;创建Coursetext对象oco,送入cname和textname值:Ref oco=new(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);事务提

20、交(commit)。,主要内容,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类图来概念对象建模,ODMG对象模型的主要内容,对象和文字(ODMG对象模型的基本成分)两者的区别对象的特征:OID,Name,Lifetime,Struct对象的结构汇集对象原子对象文字的结构 原子文字、结构文字和汇集文字接口、类、类外延和关键码,ODMG对象定义语言(ODL),interface Faculty:Person(exten

21、t Faculties key fno)attribute integer fno;relationship University works_for inverse University: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

22、 president;relationship Set staff inverse Faculty:works_for;relationship Set edit inverse Cursetext:editor;integer num_staff();,OQL中的SELECT语句,1.检索上海地区大学中教师开设课程的课程名。SELECT DISTINCT C.cname FROM University U,U.staff F,F.teach CWHERE U.city=shanghai;2.下面查询返回的是列表值而不是集合或多集:SELECT F.fno,F.name FROM Facult

23、y F ORDER BY F.age DESC)0:4;3.检索上海地区各大学中教师开课的课程名,要求显示校名、教师名、课程名。SELECT Struct(U.uname,set(F.name,set(C.cname)FROM University U,U.staff F,F.teach CWHERE 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 EXIS

24、TS F IN U.staff:F.age=60;检索教师年龄全在50岁以下的大学校名。SELECT U.uname FROM University UWHERE 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

25、 F.age;检索至少有一位教师年龄超过90岁的大学的编号、校名和教师人数。SELECT U.uno,U.uname,U.num_staff()FROM University UGROUP BY U.uno,U.unameHAVING 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.unameHAVING U.num_staff()500);,OQL中对象的赋值和建立,对宿主语言变量赋值oldFaculties=S

26、ELECT F FROM Faculty F WHERE F.age 60;从聚集中提取元素 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 面向对象的数据类

27、型系统8.3 ORDB的定义语言8.4 ORDB的查询语言 8.5 OODBS概述8.6 ODMG1.0标准8.7 ODMG2.0标准8.8 OODB与ORDB的比较8.9 使用UML类图来概念对象建模,UML概述,什么事UMLUML的历史UML的基本组件状态图类图组件图,类图和ER图中术语的区别,用类图表达类和关联,ER图,UML的类图,类名,属性,方法,重复度,关联名二元,用类图表达类和关联续,(a)人之间的婚姻关联(b)职员之间的管理关联 图8.21 两个一元关联,图8.22 三元关联,用类图表达关联类,Studentsnosnameagesex,Coursecnocnameteache

28、r,RegistrationtermgradeCheckEligibility(),*,*,ComputerAccountacctIDpasswordserveSpace,Issues,*,0.1,用类图表达概化和特化,鉴别器:指定概化的基础概化表示了继承性联系抽象类和具体类子类的语义约束,ResidentPatientdateDischarged,PatientabstractpatientIDadmitDate,PhysicianPhysicianIDPhysicianName,OutpatientcheckbackDate,BedbedNo,*Treated_by 1,0.1 assig

29、ned_to 1,complete,disjointresidencydynamic,用类图表达聚合,聚合(aggregation)表达了成分对象和聚合对象之间“is part of”(一部分)的联系,复合,小结,对象联系图 面向对象技术 及其复杂数据类型在sql中的应用在OO技术与DB技术相结合的过程中,有两条不同的路径 在传统的关系模型基础上,提供复合数据类型和引用类型,扩充SQL语言使之能处理新的数据结构 在OOPL基础上,引入传统数据库技术,形成OODBS UML语言以及用它来表示类图的相关概念,本章的重点篇幅,(1)教材P311的图8.5。(对象联系图)(2)OO的类型系统。(教材P

30、313314)(3)教材P318的例8.7,P321-322的例8.10例8.13。(ORDB的定义语言和查询语言)(4)教材P339的例8.26,P341的例8.27。(ODMG2.0标准的ODL和OQL)(5)教材P347的8.9节的UML类图。虽然教材对这一节加了星号“*”,但面向对象的概念建模是今后发展的方向。,重点内容分析(一),本章的核心是数据库技术发展的三个演变过程。1数据模型的演变从关系模型到面向对象模型经历了下面的发展过程:平面关系模型:属性都是基本数据类型。嵌套关系模型:属性可以是基本数据类型,也可以是关系类型,且数据结构可以多次嵌套。,重点内容分析(二),面向对象类型:在

31、复合对象模型的基础上,数据结构的嵌套采用引用(指针)方式,并且引入面向对象技术的继承性等概念。2查询语言的演变这里主要是指SELECT语句的演变过程:RDB中的SELECT语句,由六个子句构成。ORDB中的SELECT语句(SQL3标准),引入了路径表达式、嵌套与解除嵌套等概念。,重点内容分析(三),OODB中的SELECT语句(ODMG2.0标准),有了更多的扩充,并与宿主语言语句混合起来,可以表达更为复杂的查询操作。3概念建模的演变这里主要是理解ER图的演变历程:ER图:主要用于关系数据库的设计。对象联系图:它是ER图的扩充,使之能表达对象之间的引用。UML的类图:这是一种纯OO技术的结构。体现了现实世界数据之间面向对象的各种联系方式。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号