第8章对象数据库系统(2008)_第1页
第8章对象数据库系统(2008)_第2页
第8章对象数据库系统(2008)_第3页
第8章对象数据库系统(2008)_第4页
第8章对象数据库系统(2008)_第5页
已阅读5页,还剩101页未读 继续免费阅读

下载本文档

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

文档简介

1、1第第8章章 对象数据库系统对象数据库系统2本章重要概念本章重要概念(1)(1)新一代)新一代DBS的两条途径:的两条途径: ORDBS,OODBS。(2)OO的数据类型系统:基本类型,五种复的数据类型系统:基本类型,五种复合类型,引用类型。对象联系图的成分及合类型,引用类型。对象联系图的成分及表示方法,数据的概化表示方法,数据的概化/特化,继承性。特化,继承性。(3)UML的类图,用类图表达类、关联、关的类图,用类图表达类、关联、关联类、概化联类、概化/特化、聚合。特化、聚合。 3本章重要概念本章重要概念(2)(4)平面关系、嵌套关系、复合对象、对象)平面关系、嵌套关系、复合对象、对象关系模

2、型的定义,两个级别的继承性,引关系模型的定义,两个级别的继承性,引用类型的定义,用类型的定义,ORDB的查询语的查询语言,路径言,路径表达式,嵌套与解除嵌套,表达式,嵌套与解除嵌套,Oracle中查询中查询的两种技术。的两种技术。 (5)ODMG标准,标准,OODBS的定义,的定义,ODMG对象对象模型的主要内容,模型的主要内容,ODMG 2.0标准的标准的ODL和和OQL。(6)OODB与与RDB、ORDB的比较。的比较。4第第8 8章章 对象数据库系统对象数据库系统(1)(1)n8.1 8.1 面向对象的数据类型系统面向对象的数据类型系统n8.2 8.2 对象联系图对象联系图n8.3 8.

3、3 使用使用UMLUML类图来概念对象建模类图来概念对象建模 n8.4 ORDB8.4 ORDB的定义语言的定义语言n8.5 ORDB8.5 ORDB的查询语言的查询语言n8.6 OODBS8.6 OODBS的基本概念的基本概念n8.7 ODMG8.7 ODMG对象模型对象模型n8.8 8.8 ODMG OQLODMG OQLn8.9 OODB8.9 OODB、ORDBORDB与与RDBRDB的比较的比较n8.10 8.10 小结小结5第第8 8章章 对象数据库系统对象数据库系统(2)(2)n第一代第一代DBSDBS:层次、网状数据库系统:层次、网状数据库系统 第二代第二代DBSDBS:关系数

4、据库系统:关系数据库系统n这两代这两代DBSDBS的应用领域主要在商务领域,其特点是的应用领域主要在商务领域,其特点是所处理的事务比较小,诸如存款取款、购票订票、所处理的事务比较小,诸如存款取款、购票订票、财务管理、仓库管理、人事管理、统计管理等。财务管理、仓库管理、人事管理、统计管理等。n随着计算机应用领域的拓广,这两代随着计算机应用领域的拓广,这两代DBSDBS已不能适已不能适用新的应用需要,譬如多媒体数据、空间数据、时用新的应用需要,譬如多媒体数据、空间数据、时态数据、复合数据等。同时,传统数据库的数据结态数据、复合数据等。同时,传统数据库的数据结构比较简单,不能支持新的数据类型和嵌套、

5、递归构比较简单,不能支持新的数据类型和嵌套、递归的数据结构。的数据结构。n因此,这两代因此,这两代DBMSDBMS很难满足很难满足CAD/CAMCAD/CAM、CASECASE、图像、图像处理、处理、GISGIS等新的应用领域的需要。为适应新的应等新的应用领域的需要。为适应新的应用需要,应提出新的数据模型、数据库系统。用需要,应提出新的数据模型、数据库系统。6第第8 8章章 对象数据库系统对象数据库系统(3)(3)n对于第二代以后的新一代对于第二代以后的新一代DBSDBS,有两种观点。这,有两种观点。这两种观点虽然都是从两种观点虽然都是从 OO OO 技术和技术和 DB DB 技术相结合技术相

6、结合的角度考虑,但方法不一样。的角度考虑,但方法不一样。n19891989年年9 9月,一批专门研究月,一批专门研究OOOO技术的学者著文技术的学者著文“面向对象数据库系统宣言面向对象数据库系统宣言”,提出继第一、二,提出继第一、二代代DBSDBS后,新一代后,新一代DBSDBS将是将是OODBSOODBS,即在面向对象程,即在面向对象程序设计语言中引入数据库技术。序设计语言中引入数据库技术。n而另外一批长期从事关系数据库研究的学者在而另外一批长期从事关系数据库研究的学者在19901990年年9 9月著文月著文“第三代数据库系统宣言第三代数据库系统宣言”,提出,提出不同的看法,认为新一代不同的

7、看法,认为新一代DBSDBS是从关系是从关系DBMSDBMS自然地自然地加入加入OOOO技术进化到具有新功能的结果。从这两种技术进化到具有新功能的结果。从这两种观点出发,各自研制了一批观点出发,各自研制了一批DBSDBS。78.1 OO的数据类型系统的数据类型系统(1)(1)n基本类型:整型、浮点型、字符、字符串、布尔基本类型:整型、浮点型、字符、字符串、布尔型和枚举型型和枚举型 n复合类型复合类型n行类型:不同类型元素的有序集行类型:不同类型元素的有序集 n数组类型:相同类型元素的有序集合数组类型:相同类型元素的有序集合 n列表类型:相同类型元素的有序集合,并且允列表类型:相同类型元素的有序

8、集合,并且允许有重复的元素许有重复的元素 n包类型:相同类型元素的无序集合,并且允许包类型:相同类型元素的无序集合,并且允许有重复的元素有重复的元素 n集合类型:相同类型元素的无序集合,并且所集合类型:相同类型元素的无序集合,并且所有的元素必须是不同的有的元素必须是不同的 n引用类型引用类型88.1 OO的数据类型系统的数据类型系统(2)(2)类型类型元素元素元素的重复性元素的重复性元素个数元素个数例子例子数组数组有序有序允许允许预置预置11,2 2,11和和22,1 1,11是不同的数组是不同的数组列表列表有序有序允许允许未预置未预置11,2 2,11和和22,1 1,11是不同的列表是不同

9、的列表包包( (多集多集) )无序无序允许允许未预置未预置11,2 2,11和和22,1 1,11是相同的包是相同的包集合集合( (关系关系) )无序无序不允许不允许未预置未预置11,22和和22,11是相同的集合是相同的集合表表8.1 8.1 汇集类型的差异汇集类型的差异98.2 对象联系图对象联系图n8.2.1 8.2.1 对象联系图的成分对象联系图的成分n8.2.2 8.2.2 数据的概化数据的概化/ /特化特化108.2.1 对象联系图的成分对象联系图的成分(1)(1)对象类型对象类型属性值是单值属性值是单值对象间的对象间的 嵌套或引用嵌套或引用基本数基本数据类型据类型属性值是多值属性

10、值是多值两个属性之间值两个属性之间值的联系为逆联系的联系为逆联系 对象间是超类对象间是超类和子类的联系和子类的联系单箭头单箭头双箭头双箭头双线箭头双线箭头双向箭头双向箭头大椭圆大椭圆边边小圆圈小圆圈11UniversityUniversitycitycityunameunameunounoCoursetextCoursetexteditoreditoreditedittextnametextnamecnamecnamepresidentpresidentworks_forworks_forstaffstaffFacultyFacultyfnofnoteachteachageageteacher

11、teachersalarysalaryfnamefname(P258 图图8.1)8.2.1 对象联系图的成分对象联系图的成分(2)(2)12n概化概化:数据的数据的概概化特化(化特化(generalizationgeneralizationspecializationspecialization)是对概念之间联系进行抽象的一种方)是对概念之间联系进行抽象的一种方法。当在较低层上抽象表达了与之联系的较高层上抽象法。当在较低层上抽象表达了与之联系的较高层上抽象的特殊情况时,就称较高层上抽象是较低层上抽象的的特殊情况时,就称较高层上抽象是较低层上抽象的“概概化化”, ,而较低层上抽象是较高层上抽象

12、的而较低层上抽象是较高层上抽象的“特化特化”。这种特化联系是一种这种特化联系是一种“是是”(is ais a)的联系。)的联系。FacultyFacultyPersoPerson nStudentStudentfnofnosalarysalarysnosnoageagenamename图图8.2 8.2 带概化边的对象联系图带概化边的对象联系图 8.2.2数据的概化数据的概化/ /特化特化138.3 使用使用UMLUML类图来概念对象建模类图来概念对象建模 n8.3.1 8.3.1 统一建模语言统一建模语言(UML)(UML)概述概述n8.3.2 8.3.2 用类图表达类和关联用类图表达类和关

13、联n8.3.3 8.3.3 用类图表达关联类用类图表达关联类n8.3.4 8.3.4 用类图表达概化用类图表达概化/ /特化特化n8.3.5 8.3.5 用类图表达聚合用类图表达聚合148.3.1 UML UML概述概述n在在2020世纪世纪9090年代中期,年代中期,BoochBooch、RumbaughRumbaugh和和JacobsonJacobson等三位专家源于早先的方法和符号,但并不拘泥于早等三位专家源于早先的方法和符号,但并不拘泥于早先的方法和符号,设计了一个标准的建立模型语言。先的方法和符号,设计了一个标准的建立模型语言。他们把这个成果称为他们把这个成果称为“统一建模语言统一建

14、模语言”(Unified (Unified Modeling LanguageModeling Language,缩写为,缩写为UML)UML),并把,并把UMLUML版本交给版本交给OMG(Object Management Group)OMG(Object Management Group)组织,在组织,在19971997年推出年推出UML 1.0UML 1.0和和UML 1.1UML 1.1版,确定版,确定UMLUML为面向对象开发的行为面向对象开发的行业标准语言,并得到了各大厂商的支持和认证。业标准语言,并得到了各大厂商的支持和认证。nUMLUML能表达系统多方面的透视,这些图有类图能

15、表达系统多方面的透视,这些图有类图(Class (Class Diagram)Diagram)、用例图、用例图(Use-Case Diagram)(Use-Case Diagram)、状态图、状态图(State Diagram)(State Diagram)、组件图、组件图(Component Diagram)(Component Diagram)等等9 9种。种。158.3.2用类图表达类和关联用类图表达类和关联(1)(1)ERER图中的术语图中的术语类图中的术语类图中的术语实体集实体集(Entity Set)(Entity Set) 类类(class)(class)实体实体(Entity)

16、(Entity)对象对象(object)(object)联系联系(relationship)(relationship) 关联关联(association)(association)联系元数联系元数关联元数关联元数实体的基数实体的基数(cardinality)(cardinality)重重复度复度( (mulitiplicitymulitiplicity) )表表8.2 8.2 类图与类图与ERER图中术语的区别图中术语的区别16n类图中的基本成分是类和关联:类图中的基本成分是类和关联:(1 1)类被表示为由三个部分组成的方框:)类被表示为由三个部分组成的方框:上面部分给出了类的名称;上面部分

17、给出了类的名称;中间部分给出了该类的单个对象的属性;中间部分给出了该类的单个对象的属性;下面部分给出了一些可以应用到这些对象的操作。下面部分给出了一些可以应用到这些对象的操作。(2 2)关联是对类的实例之间联系的命名,相当于)关联是对类的实例之间联系的命名,相当于ERER模型中的模型中的联系类型。与关联有关的内容有:联系类型。与关联有关的内容有:关联元数:与关联有关的类的个数,称为关联元数或度数;关联元数:与关联有关的类的个数,称为关联元数或度数;关联角色(关联角色(RoleRole):角色名可以命名,也可以不命名,就用):角色名可以命名,也可以不命名,就用类的名字作为角色名。类的名字作为角色

18、名。重复度(重复度(MultiplicityMultiplicity):重复度是指在一个给定的联系中):重复度是指在一个给定的联系中有多少对象参与。即是关联角色的重复度。有多少对象参与。即是关联角色的重复度。n重复度类似于重复度类似于ERER模型中实体基数的概念。但这是两个相反的模型中实体基数的概念。但这是两个相反的概念。概念。8.3.2用类图表达类和关联用类图表达类和关联(2)(2)17UniversityUniversitycitycityunameunameunounoCoursetextCoursetexteditoreditoreditedittextnametextnamecnam

19、ecnamepresidentpresidentworks_forworks_forstaffstaffFacultyFacultyfnofnoteachteachageageteacherteachersalarysalaryfnamefname(P258 图图8.1)181TEATEACHCH图图8.3 ER图图图图8.4 UML类图类图STASTAFFFFPERSPERSONONFACULTFACULTY YCOURSECOURSETEXTTEXTUNIVERUNIVERSITYSITYEDIEDIT TPRESIPRESIDENTDENT1 11 1N N1 1N N1 11 1N N

20、UniversityUniversity unounounameunamecitycityNum_staffNum_staff CoursetextCoursetext cnamecnametextnametextnameFacultyFacultyNum_teacherNum_teacherfnofnosalarysalaryPersonPerson namenameageage0.1 President 0.11 Staff 0.*1.1 Editff 0.*0.*1.1TeachTeach 8.3.2用类图表达类和关联用类图表达类和关联(3)(3)19PersonPerson0.10.1

21、0.10.1Is_married_toIs_married_toEmployeeEmployee* *0.10.1Manage Manage managermanager(a)(a)人之间的婚姻关联人之间的婚姻关联 (b b)职员之间的管理关联图)职员之间的管理关联图 8.5 8.5 两个一元关联两个一元关联图图8.6 三元关联三元关联VendorVendorWarehouseWarehousePartPartSuppliesSupplies*8.3.2用类图表达类和关联用类图表达类和关联(4)(4)208.3.3 用类图表达关联类用类图表达关联类* * *IssuesIssues0.10.1

22、StudentStudentsnosnosnamesnameageagesexsexCourseCoursecnocnocnamecnameteacherteacherRegistrationRegistrationtermtermgradegradeCheckEligibilityCheckEligibility()()ComputerAccountComputerAccountacctIDacctIDpasswordpasswordserveSpaceserveSpace* *图图8.7 8.7 表达关联类的类图表达关联类的类图218.3.4 表达概化和特化表达概化和特化(1)(1)例例8

23、.8(8.8(P352)P352)empemptypetypeempemptypetypeempemptypetypedisjointdisjoint,imcompleteimcomplete EmployeeEmployeeempNameempNameempNoempNoaddressaddressHourlyEmpHourlyEmphourlyRatehourlyRateSalariedEmpSalariedEmpannualSalaryannualSalarystockOptionstockOptionConsultantConsultantcontractNOcontractNObil

24、lingRatebillingRate图图8.8 8.8 带有三个子类的带有三个子类的EmployeeEmployee超类超类228.3.4 表达概化和特化表达概化和特化(2)(2)0.1 0.1 1 1assigned_toassigned_toBedBedbedNobedNo* 1Treated_by completecomplete,disjointdisjoint Residency ResidencydynamicdynamicOutpatientOutpatientcheckbackDatecheckbackDatePatientPatientabstractabstractpat

25、ientIDpatientIDadmitDateadmitDateResidentPatienResidentPatiendateDischargeddateDischargedPhysicianPhysicianPhysicianIDPhysicianIDPhysicianNamePhysicianName图图8.9 8.9 带有两个具体子类的抽象的带有两个具体子类的抽象的PatientPatient类类238.3.4 表达概化和特化表达概化和特化(3)(3)n1.1.鉴别器:指定概化的基础。鉴别器:指定概化的基础。n2.2.概化表示了继承性联系。概化表示了继承性联系。n3.3.抽象类和具体

26、类:没有或有直接对象的类。抽象类和具体类:没有或有直接对象的类。n4.4.子类的语义约束:子类的语义约束:noverlapping(overlapping(重叠重叠) ):子类的对象集可以相交。子类的对象集可以相交。 ndisjoint(disjoint(不相交不相交) ):子类的对象集不可以相交。:子类的对象集不可以相交。ncomplete(complete(完备完备) ):超类中的对象必须在子类中出:超类中的对象必须在子类中出现。现。nimcompleteimcomplete( (非完备非完备) ):超类中的对象可以不在子:超类中的对象可以不在子类中出现。类中出现。248.3.5 用类图表

27、达聚合用类图表达聚合聚合(聚合(aggregation)表达了成分对象和聚)表达了成分对象和聚合对象之间合对象之间“is part of”(一部分)的联系。(一部分)的联系。 例例8.88.81.1.* *DepartmentDepartmentRoomRoom1 1* *1 120.20.* *Consists ofConsists of part ofpart of复复合合UniversityUniversityAdminstrativeUnitAdminstrativeUnitSchoolSchoolBuildingBuilding1.1.* *1 1 Housed inHoused i

28、n 1 11 1图图8.10 8.10 关于聚合和复合的类图关于聚合和复合的类图258.4 ORDB8.4 ORDB的定义语言的定义语言n8.4.1 8.4.1 从关系模型从关系模型 到对象关系模型的演变到对象关系模型的演变n8.4.2 8.4.2 数据类型的定义数据类型的定义n8.4.3 8.4.3 继承性的定义继承性的定义n8.4.4 8.4.4 引用类型的定义引用类型的定义 26(a)(b)(c)(a)平面关系模型的结构:关系)平面关系模型的结构:关系元组元组 属性属性(基本类型基本类型) 属性属性(基本类型基本类型)(b)嵌套关系模型的结构:关系)嵌套关系模型的结构:关系 元组元组 属

29、性属性(关系类型关系类型) 属 性属 性 ( 基 本 类 型基 本 类 型 ) 元组元组 属性属性(元组类型元组类型)(c)复合对象模型的结构:)复合对象模型的结构: 关系关系 属性属性(关系类型关系类型) 子关系子关系8.4.1 到对象关系模型的演变到对象关系模型的演变(1)(1)27大学大学 教师教师校长校长University(uno,uname,city, staff(fno,fname,age),), president fno,fname,age ););8.4.1 到对象关系模型的演变到对象关系模型的演变(2)(2)n嵌套关系和复合对象的实例:嵌套关系和复合对象的实例:28n嵌套

30、关系和复合对象无法表达递归的结构。嵌套关系和复合对象无法表达递归的结构。 n使用使用“引用引用”(reference)的技术解决类型定)的技术解决类型定义中的递归问题义中的递归问题 ;引用相当于指针。;引用相当于指针。图图8.13 8.13 类型构造示意图类型构造示意图 universityuniversity元组元组universityuniversity关系关系facultyfaculty元组元组facultyfaculty关系关系8.4.1 到对象关系模型的演变到对象关系模型的演变(3)(3)29n传统的关系模型中属性只能是基本数据类型,而在对传统的关系模型中属性只能是基本数据类型,而在

31、对象关系模型中,属性还可以是复合类型。复合类型有象关系模型中,属性还可以是复合类型。复合类型有五种:结构(或行)、数组、列表、多集和集合,后五种:结构(或行)、数组、列表、多集和集合,后面四种在数据类型定义时,要用到面四种在数据类型定义时,要用到arrayarray、listoflistof、multisetmultiset和和setofsetof等关键字。等关键字。n在具体使用时,复合类型的值的表示方法如下:在具体使用时,复合类型的值的表示方法如下:行值的表示:行值的表示: (值(值1 1,值,值2 2,值,值n n)数组值的表示:数组值的表示: arrayarray值值1 1,值,值2 2

32、,值,值nn列表值的表示:列表值的表示: listlist(值(值1 1,值,值2 2,值,值n n)多集值的表示:多集值的表示:multisetmultiset(值(值1 1,值,值2 2,值,值n n)集合值的表示:集合值的表示: setset(值(值1 1,值,值2 2,值,值n n)8.4.2 数据类型的定义数据类型的定义30继承性可以发生在类型一级或表一级。继承性可以发生在类型一级或表一级。n1 1类型级的继承性类型级的继承性CREATE TYPE Person(name varcharCREATE TYPE Person(name varchar(10)(10),socialsoc

33、ial_ _number char(18)number char(18);CREATE TYPE Student UNDER PersonCREATE TYPE Student UNDER Person(degree varchar(degree varchar(10)(10), department varchardepartment varchar(20)(20);CREATE TYPE Teacher UNDER PersonCREATE TYPE Teacher UNDER Person(salary integer(salary integer, department varchar

34、department varchar(20)(20);CREATE TYPE TeachingAssistantCREATE TYPE TeachingAssistant UNDER StudentUNDER Student,TeacherTeacher;8.4.3 继承性的定义继承性的定义(1)(1)31n2 2表级的继承性表级的继承性CREATE TABLE people OF PersonCREATE TABLE people OF Person;CREATE TABLE students of StudentCREATE TABLE students of Student UNDER

35、peopleUNDER people;CREATE TABLE teachers OF TeacherCREATE TABLE teachers OF Teacher UNDER peopleUNDER people;CREATE TABLE teachingCREATE TABLE teaching_ _assistant ofassistant of TeachingAssistantTeachingAssistantUNDER studentsUNDER students,teachersteachers;8.4.3 继承性的定义继承性的定义(2)(2)328.4.3 继承性的定义继承性

36、的定义(3)(3)PersonPersonStudentStudentTeacherTeacherTeachingAssistantTeachingAssistant图图8.148.14类型层次图类型层次图peoplepeoplestudentsstudentsteachersteachersteaching_assistantteaching_assistant图图8.158.15表级继承层次图表级继承层次图33n子表和超表应满足下列两个一致性要求:子表和超表应满足下列两个一致性要求: 超表中每个元组最多可以与每个子表中的一个超表中每个元组最多可以与每个子表中的一个元组对应。元组对应。 子表

37、中每个元组在超表中恰有一个元组对应,子表中每个元组在超表中恰有一个元组对应,并在继承的属性上有相同的值。并在继承的属性上有相同的值。n可以采用有效的方法存储子表。在子表中不必存可以采用有效的方法存储子表。在子表中不必存放继承来的属性(超表中的主键除外),因为这放继承来的属性(超表中的主键除外),因为这些属性值可以通过基于主键的连接从超表中导出。些属性值可以通过基于主键的连接从超表中导出。n有了继承的概念,模式定义更符合实际。有了继承的概念,模式定义更符合实际。8.4.3 继承性的定义继承性的定义(4)(4)34n在在SQL3SQL3中,引用类型有两种方式:中,引用类型有两种方式:在创建类型时,

38、类型中某属性可以是对一个指定类在创建类型时,类型中某属性可以是对一个指定类型的对象的应用,该属性可以用下列方式定义:型的对象的应用,该属性可以用下列方式定义:属性名属性名 refref(类型名)(类型名) 或:属性名或:属性名 setofsetof(refref(类型名)(类型名) 在创建表时,要指明引用类型的属性将引用指定在创建表时,要指明引用类型的属性将引用指定类型的哪一个表,其方式如下:类型的哪一个表,其方式如下:引用类型的属性名引用类型的属性名 WITH OPTIONS SCOPE WITH OPTIONS SCOPE 表名表名这里对一个指向表的元组的引用范围(这里对一个指向表的元组的

39、引用范围(SCOPESCOPE)的限)的限制是强制性的,它使用的方式与外键类似。制是强制性的,它使用的方式与外键类似。8.4.4 引用类型的定义引用类型的定义(1)(1)35P271 图图8.16对象联系图对象联系图8.4.4 引用类型的定义引用类型的定义(2)(2)teachteachteacherteacherUniversityUniversitycitycityunameunameunounoCoursetextCoursetexteditoreditoreditedittextnametextnamecnamecnamepresidentpresidentworks_forworks

40、_forstaffstaffFacultyFacultyfnofnoageagesalarysalarynamenamePersonPersonsexsexsocialsocial_ _numbernumber36nCREATE TYPE PersonCREATE TYPE Person (social_number charsocial_number char(1818)name varcharname varchar(1010),),age integerage integer,sex charsex char(1 1););nCREATE TYPE Faculty UNDER Perso

41、nCREATE TYPE Faculty UNDER Person (fnofno char char(1010),),salary integer,salary integer,works_for works_for refref(UniversityUniversity),t e a c h t e a c h s e t o fs e t o f ( r e fr e f(CoursetextCoursetext););8.4.4 引用类型的定义引用类型的定义(3)(3)37nCREATE TYPE UniversityCREATE TYPE University (unouno cha

42、r char(1010), ,uname varcharuname varchar(2020),),city varcharcity varchar(2020),),president president refref(FacultyFaculty),staff staff setofsetof(refref(FacultyFaculty),edit edit setofsetof(refref(CoursetextCoursetext););nCREATE TYPE CoursetextCREATE TYPE Coursetext (cname varcharcname varchar(20

43、20),),textname varchartextname varchar(2020),),teacher teacher refref(FacultyFaculty),editor editor refref(UniversityUniversity););8.4.4 引用类型的定义引用类型的定义(4)(4)38nCREATE TABLE people OF PersonCREATE TABLE people OF Person;nCREATE TABLE faculties OF FacultyCREATE TABLE faculties OF Faculty(works_for WIT

44、H OPTIONS SCOPE universitiesworks_for WITH OPTIONS SCOPE universities, teach WITH OPTIONS SCOPE coursetextsteach WITH OPTIONS SCOPE coursetexts););nCREATE TABLE universities OF UniversityCREATE TABLE universities OF University(president WITH OPTIONS SCOPE facultiespresident WITH OPTIONS SCOPE facult

45、ies, staff WITH OPTIONS SCOPE facultiesstaff WITH OPTIONS SCOPE faculties, edit WITH OPTIONS SCOPE coursetextsedit WITH OPTIONS SCOPE coursetexts););nCREATE TABLE coursetexts OF CoursetextsCREATE TABLE coursetexts OF Coursetexts(teacher WITH OPTIONS SCOPE facultiesteacher WITH OPTIONS SCOPE facultie

46、s, editor WITH OPTIONS SCOPE universitieseditor WITH OPTIONS SCOPE universities););8.4.4 引用类型的定义引用类型的定义(5)(5)39n上述定义中的关键字上述定义中的关键字refref是不可省的。如果没有是不可省的。如果没有refref词,那么表之间是递归嵌套,在系统中是不可实现的。词,那么表之间是递归嵌套,在系统中是不可实现的。但有了但有了refref词后,表示引用的是关系中元组的标识符词后,表示引用的是关系中元组的标识符(即(即“元组的地址元组的地址”)。这样就能实现递归结构了。)。这样就能实现递归结构

47、了。 n一般,系统在具体实现引用类型时,有两种方式供一般,系统在具体实现引用类型时,有两种方式供选择:选择: 可以用表的主键来实现对表中元组的引用。可以用表的主键来实现对表中元组的引用。 表中每个元组有一个元组标识符作为隐含属性,表中每个元组有一个元组标识符作为隐含属性,对元组的引用就是引用这个元组标识符。另外,子表对元组的引用就是引用这个元组标识符。另外,子表隐含地继承这个元组标识符属性,就像它从父表中继隐含地继承这个元组标识符属性,就像它从父表中继承其他属性一样。承其他属性一样。8.4.4 引用类型的定义引用类型的定义(6)(6)408.5 ORDB ORDB的查询语言的查询语言n8.5.

48、1 8.5.1 对对SELECTSELECT语句的新规定语句的新规定n8.5.2 8.5.2 嵌套与解除嵌套嵌套与解除嵌套n8.5.3 8.5.3 复合值的创建和查询复合值的创建和查询n8.5.4 Oracle8.5.4 Oracle中查询的两种技术中查询的两种技术n8.5.5 8.5.5 函数和过程函数和过程41n扩充的扩充的SQLSQL对对SELECTSELECT语句作出了以下三条规定:语句作出了以下三条规定:n(1 1)允许用于计算关系的表达式可出现在任何关系)允许用于计算关系的表达式可出现在任何关系名可以出现的地方,比如名可以出现的地方,比如FROMFROM子句或子句或SELECTSE

49、LECT子句中。子句中。这种可自由使用子表达式的能力使得充分利用嵌套关这种可自由使用子表达式的能力使得充分利用嵌套关系结构成为可能。系结构成为可能。n(2 2)在)在SELECTSELECT语句中,应为每个基本表设置一个元语句中,应为每个基本表设置一个元组变量,然后才可引用,否则语句将不做任何事情。组变量,然后才可引用,否则语句将不做任何事情。n这是因为在传统的这是因为在传统的SQLSQL语言中,在语句里把基本表看语言中,在语句里把基本表看成是元组变量直接与属性名连用,求出属性值,这对成是元组变量直接与属性名连用,求出属性值,这对于非计算机用户来说是很不习惯的。因而在于非计算机用户来说是很不习

50、惯的。因而在ORDBORDB中,中,把这件事纠正过来了。把这件事纠正过来了。8.5.1 对对SELECTSELECT语句的新规定语句的新规定(1)(1)42n例例8.12 8.12 检索讲授检索讲授MATHSMATHS课,采用课,采用“Mathematical Mathematical Analysis”Analysis”教材的教师工号和姓名。教材的教师工号和姓名。SELECT F.fnoSELECT F.fno,F.fnameF.fnameFROM faculiesFROM faculies AS F AS FWHEREWHERE( MATHSMATHS , Mathematical Ana

51、lysisMathematical Analysis )IN F.teachIN F.teach;n例例8.13 8.13 检索上海地区各大学超过检索上海地区各大学超过5050岁的教师人数,岁的教师人数,可用下列语句表达。可用下列语句表达。SELECT U.unameSELECT U.uname,countcount(SELECT SELECT * * FROM U.staff AS FFROM U.staff AS F WHERE F.ageWHERE F.age5050)FROM universities AS UFROM universities AS UWHERE U.cityWHER

52、E U.city shanghaishanghai ; 8.5.1 对对SELECTSELECT语句的新规定语句的新规定(2)(2)43n(3 3)在对象联系图中,从已知的属性值找未知的)在对象联系图中,从已知的属性值找未知的属性值时沿途经过的属性名构成的式子称为属性值时沿途经过的属性名构成的式子称为“路径路径表达式表达式”。对路径表达式的使用,有这样两点规定:。对路径表达式的使用,有这样两点规定: 当属性值为单值或结构值时,属性的引用方式当属性值为单值或结构值时,属性的引用方式仍和传统的关系模型一样,在层次之间加园点仍和传统的关系模型一样,在层次之间加园点“.”.”。 当路径中某个属性值为集

53、合时,就不能连着写当路径中某个属性值为集合时,就不能连着写下去。譬如,在某大学里检索教师姓名,就不能写下去。譬如,在某大学里检索教师姓名,就不能写成成U.staff.fnameU.staff.fname,因为这里,因为这里staffstaff是集合值,不是是集合值,不是单值。此时应为单值。此时应为staffstaff定义一个元组变量。定义一个元组变量。8.5.1 对对SELECTSELECT语句的新规定语句的新规定(3)(3)44n例例8.14 8.14 检索上海地区的大学校长姓名。检索上海地区的大学校长姓名。SELECT U.unameSELECT U.uname,U.president.f

54、nameU.president.fnameFROM universities AS UFROM universities AS UWHERE U.cityWHERE U.city shanghaishanghai ;n例例8.15 8.15 检索上海地区各大学超过检索上海地区各大学超过5050岁的教师姓名,岁的教师姓名,可用下列语句表达:可用下列语句表达:SELECT U.unameSELECT U.uname,F.fnameF.fnameFROM universities AS UFROM universities AS U,U.staff AS FU.staff AS FWHERE U.c

55、ityWHERE U.city shanghaishanghai AND F.age AND F.age5050;这里设表这里设表universitiesuniversities的元组变量为的元组变量为U U,元组分量,元组分量U.staffU.staff仍是一个表,也起个元组变量名为仍是一个表,也起个元组变量名为F F。8.5.1 对对SELECTSELECT语句的新规定语句的新规定(4)(4)45n例例8.16 8.16 检索复旦大学每个教师上课所用的教材及检索复旦大学每个教师上课所用的教材及其编写的学校。其编写的学校。SELECT F.fnameSELECT F.fname,C.text

56、nameC.textname,C.editor.unameC.editor.unameFROM universities AS UFROM universities AS U,U.staff AS FU.staff AS F, F.teach AS CF.teach AS CWHERE U.unameWHERE U.uname FudanFudan University University ;n这个查询也可用另外一种形式表达:这个查询也可用另外一种形式表达:SELECT F.fnameSELECT F.fname,C.textnameC.textname,C.editor.unameC.ed

57、itor.unameFROM faculties AS FFROM faculties AS F,F.teach AS CF.teach AS CWHERE F.works_for.unameWHERE F.works_for.uname FudanFudan University University ; 8.5.1 对对SELECTSELECT语句的新规定语句的新规定(5)(5)46n例例8.17 8.17 检索使用本校教材开课的教师工号、姓名检索使用本校教材开课的教师工号、姓名及所在学校,可用下列语句表达:及所在学校,可用下列语句表达:SELECT U.unameSELECT U.una

58、me,F.fnoF.fno,F.fnameF.fnameFROM universities AS UFROM universities AS U,U.staff AS FU.staff AS F,F.teach AS CF.teach AS CWHERE C.editor.unameWHERE C.editor.unameU.unameU.uname;n这个查询也可用另外一种形式表达:这个查询也可用另外一种形式表达:SELECT F.work_for.unameSELECT F.work_for.uname,F.fnoF.fno,F.fnameF.fnameFROM faculties AS

59、FFROM faculties AS F,F.teach AS CF.teach AS CWHERE F.works_for.unameWHERE F.works_for.unameC.editor.unameC.editor.uname;8.5.1 对对SELECTSELECT语句的新规定语句的新规定(6)(6)47n将一个嵌套关系转换成将一个嵌套关系转换成1NF1NF的过程称为的过程称为“解除嵌套解除嵌套”。n例例8.18 8.18 例例8.178.17中的中的SELECTSELECT语句的结果显示是一个语句的结果显示是一个1NF1NF关系,形式如表关系,形式如表8.38.3所示。所示。8

60、.5.2 嵌套与解除嵌套嵌套与解除嵌套(1)(1)表表8.3 18.3 1NFNF关系关系UnameUnamefnofnofnamefnameFudanFudan University University957957ZHAOZHAOFudanFudan University University24682468LIULIUJiaotongJiaotong University University 45674567WENWENJiaotongJiaotong University University 52465246BAOBAOJiaotongJiaotong University Uni

温馨提示

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

评论

0/150

提交评论