《高级数据库技术与应用》教学课件-ADB(2)-数据库系统基础_第1页
《高级数据库技术与应用》教学课件-ADB(2)-数据库系统基础_第2页
《高级数据库技术与应用》教学课件-ADB(2)-数据库系统基础_第3页
《高级数据库技术与应用》教学课件-ADB(2)-数据库系统基础_第4页
《高级数据库技术与应用》教学课件-ADB(2)-数据库系统基础_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

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

文档简介

高级数据库技术与应用(2)

--第2章数据库系统基础汤庸叶小平

计算机科学系协同软件研究开发中心1数据库系统基础目录2.1关系数据库基础2.2面向对象数据库技术2.3对象关系数据库技术

2关系数据库基础关系数据模型2.1.2关系模式设计2.1.3事务处理技术

3关系数据模型(01)1.关系数据模型基本概念(1)关系描述(从技术直观层面)关系基本描述:一个关系就是一张二维平面表格,每个关系都有一个关系名。对关系的描述称为关系模式,不同关系模式对应不同关系结构。关系表示形式为:关系名(属性名1,属性名2,...,属性名n)4关系数据模型(02)1.关系数据模型基本概念(1)关系描述(从技术直观层面)关系相关概念:元组:在一个二维表中,水平方向的行称为元组,每一行是一个元组。元组对应存储文件中的一个具体的记录。属性列:二维表中垂直方向的列称为属性列,每一列有一个属性名。域: 属性的取值范围,即对同一属性的取值所限定的范围。5关系数据模型(03)1.关系数据模型基本概念(2)关系概念(从数学形式层面)笛卡尔乘积:给定一组域D1,D2,…,Dn(其中允许有相同的),则笛卡儿积定义为:

D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1,2,…,n}}其中每个(d1,d2,…,dn)叫作元组;元组中的每个di叫作分量,di必是Di中的一个值;当n=1时称单元组,n=2时,称二元组,…。

6关系数据模型(04)1.关系数据模型基本概念(2)关系概念(从数学形式层面)关系的数学定义:当且仅当R是D1×D2×…×Dn的一个子集,则称R是D1×D2×…×Dn上的一个关系,

记为:R(D1,D2,…,Dn),其中R为关系名,n为关系的度,Di为第i个域名。在关系对应的二维表中,行对应元组,列对应域。

7关系数据模型(05)元组标识由主键描述●超键:在给定关系R中,能够唯一标识各个元组的属性集合称为关系R的超键(SuperKey)。●候选键:不含多余属性的超键称为候选键(CandidateKey),或者说候选键是其中任何真子集均不是超键的超键。候选键有时也称作键(Key)。●主键:选定了用于标识的候选键称为主键(PrimeKey)。1.关系数据模型基本概念(3)元组标识与关系间关联8关系数据模型(06)关系间相互关联由外键描述。●外键:如果一个关系R1的一个属性子集S是另一个关系R2的主键,但不是R1本身的主键,则称S是关系R1的外键(Foreign

Key)。其中,R1称为依赖关系,R2称为参照关系。1.关系数据模型基本概念(3)元组标识与关系间关联9关系数据模型(07)●列的同质性关系表中每一列的属性值都必须为同一类型数据,来自同一个属性域。●异列同域性关系中不同的属性列可以出自同一个域,但不同属性列应当有不同属性名称。●列的无序性关系中属性是无序的,即列的次序可以任意交换。由于列的顺序无关紧要,列顺序不同的关系在逻辑上是同一集合。2.关系结构基本性质10关系数据模型(08)●元组相异性关系的主体中不允许出现相同的元组。●行的无序性关系中不考虑元组之间的顺序,元组在关系中应是无序的,即没有行序,这是因为关系是元组的集合,按集合的定义,集合中的元素无序。●属性值原子性关系中的每一个属性值都是不可分解的,不允许出现组合数据,更不允许“表中有表”。2.关系结构基本性质11关系数据模型(09)基于更新的代数运算建立在传统集合运算之上●插入——集合的并运算

设有同类关系R、S(即R、S具有相同的关系模式),则二者的并运算定义为:式中“∪”为并运算符,t为元组变量,结果R∪S为一个新的与R、S同类的关系,该关系是由属于R或属于S的元组构成的集合。3.关系运算——关系代数

①基于更新的代数运算12关系数据模型(10)●删除——集合的差运算设有同类关系R、S,则二者的差(Difference)运算定义为:式中“-”为差运算符,t为元组变量,结果R-S为一个新的与R、S同类的关系,该关系是由属于R而且不属于S的元组构成的集合,即在R中减去与S中相同的那些元组。3.关系运算——关系代数

①基于更新的代数运算13关系数据运算(11)基于查询需要建立不同于传统情形的新的集合运算●关系属性的指定——投影运算设有k元关系R,其元组变量为tk=<t1,t2,…,tk>,那么关系R在其分量Ai1,Ai2,…,Ain(n≤k,i1,i2,…,in为1到k之间互不相同的整数)上的投影定义为:

3.关系运算——关系代数

基于查询的代数运算14关系数据模型(12)●关系元组的选定——选择运算

设有k元关系R,条件用一命题公式F表示,则从关系R中选择出满足条件F的行定义为:

3.关系运算——关系代数

基于查询的代数运算15关系数据模型(13)●关系的集成——广义笛卡尔乘积运算

设有关系R、S,其中关系R有r个属性分量、m个元组,关系S有s个属性分量、n个元组,则二者的广义笛卡尔乘积(CartesianProduct)运算定义为:3.关系运算——关系代数

基于查询的代数运算16关系数据模型(14)●交运算设有同类关系R、S,则二者的交(Intersection)运算定义为●除法运算设有两个关系T和R,其元数分别为n和m(n>m>0),则T和R进行“除法”运算的结果记P=TR,其中P是一个元数为n-m的满足下述性质的最大关系:P中的每个元组u与R中每个元组v所组成的元组(u,v)必在关系T中。在这里,为了叙述方便,假设R的属性为T中的后m个属性。3.关系运算——关系代数

组合代数运算17关系数据模型(15)●连接运算

设有关系R、S,θ为算术比较符,i为R中某一属性列的编号,j为S中某一属性列的编号,iθj为一个算术比较式。关系R,S在域i,j上的θ-连接(θ-Join)就是从R和S的笛卡尔乘积中选取满足条件“iθj”的元组,其定义为:3.关系运算——关系代数

组合代数运算18关系数据模型(16)如果在一阶谓词演算表达式中,变量是以元组为演算单位,就称其为元组关系演算(TupleRelationCalculus),其中元组变量表示关系中的元组,变量取值范围是整个关系。●关系的元组演算表示为了得到关系操作的元组关系演算表达式,需要考虑关系与谓词的联系。3.关系运算——关系演算①元组演算19关系数据模型(17)A.由关系R确定的谓词P在数理逻辑中我们知道,关系可用谓词表示,n元关系可以由n元谓词表示。设有关系R,它有元组(r1,r2,…,rm),定义关系R对应如下一个谓词P(x1,x2,…,xn)。当t=(r1,r2,…,rm)属于R时,t为P的成真指派,而其他不在R中的任意元组t则是P的成假指派。即是说,由关系R定义一个谓词P具有如下性质:P(t)=T(当t在R中);P(t)=F(当t不在R中)。3.关系运算——关系演算①元组演算20关系数据模型(18)B.由谓词P表示关系R由于关系代数中R是元组集合,一般而言,集合是可以用满足它的某种特殊性质来刻画与表示。如果谓词P表述了关系R中元组的本质特性,就可以将关系R写为:R={t|P(t)}这个公式就建立了关系(元组集合)的谓词表示,称之为关系演算表达式。3.关系运算——关系演算①元组演算21关系数据模型(19)●元组关系演算的语法元组关系演算表达式的严格数学描述是由“归纳定义”方式完成的。按照通常的思路,元组演算表达式是由“关系演算公式”组成;“关系演算公式”是由“原子公式”组成。3.关系运算——关系演算①元组演算22关系数据模型(20)下述三类称为元组演算原子公式,简称原子公式:A.R(t)是原子公式这里,R是关系名,t=(r1,r2,…,rm)是元组变量,并且是P的成真指派,此时R(t)表示命题“t是关系R中元组”。B.u(i)θv(j)是原子公式这里,u(i)表示元组u的第i个分量,v(j)表示元组v的第j个分量,u(i)θv(j)表示命题:“表示u的第i个分量与u的第j个分量有关系θ”。C.u(i)θa是原子公式这里,a是常量,u(i)θa表示命题“u的第i个分量与常量a有关系θ”。3.关系运算——关系演算①元组演算23关系数据模型(21)利用原子公式可以递归定义关系演算公式:A.原子公式是公式。B.如果φ1,φ2是公式,则φ1φ2,φ1φ2,φ1→φ2和⌐φ1均是公式。C.如果φ是公式,r是φ中自由变元,则r(φ),r(φ)是公式。D.所有公式由且仅由上述三种方式经过有限次操作生成。3.关系运算——关系演算①元组演算24关系数据模型(22)有了公式φ的概念,以公式φ作为特性就构成一个有若干元组组成的集合,即关系R,这种形式的元组集合就称其为关系演算表达式。关系演算表达式的一般形式为:{t|φ(t)}其中,φ(t)为公式,t为φ中出现的自由变元。关系演算表达式也简称为关系表达式或者表达式。3.关系运算——关系演算①元组演算25关系数据模型(23)●关系操作的元组演算表示关系操作有五种基本操作,它们在关系代数中分别对应五种基本运算,这五种基本运算可以用一阶谓词演算中的公式表示。3.关系运算——关系演算①元组演算26关系数据模型(24)设有关系R、S,其谓词表示为R(t)和S(t),此时有R∪S={t|R(t)∨S(t)};R–S=(t|R(t)∧¬S(t));σF(R)={t|R(t)∧F},其中F是一个谓词公式;3.关系运算——关系演算①元组演算27关系数据模型(25)3.关系运算——关系演算①元组演算其中t(k)所表示的元组有k个分量,而t(i)表示t的第i个分量,u(j)表示u第j个分量。28关系数据模型(26)3.关系运算——关系演算②域演算

域关系演算(DomainRelationCalculus)简称为域演算,它是关系演算的另外一种形式。域关系和元组关系演算都建立在谓词演算之上,同属于关系演算范畴。域关系和元组关系演算的不同之处首先在于,谓词表达式中谓词变元不同元组演算以元组为变元,域演算以元组的分量为变元,由于元组分量是在相应属性域内变化,所以也将元组变元视为域变元,相应的谓词公式就表示了属性域间关系,也就是域关系的由来;其次在于元组变元的变化范围为整个关系,域变元的变化范围是某个属性域。29关系数据模型(27)3.关系运算——关系演算②域演算

域关系演算(DomainRelationCalculus)简称为域演算,它是关系演算的另外一种形式。域关系和元组关系演算都建立在谓词演算之上,同属于关系演算范畴。域关系和元组关系演算的不同之处首先在于,谓词表达式中谓词变元不同元组演算以元组为变元,域演算以元组的分量为变元,由于元组分量是在相应属性域内变化,所以也将元组变元视为域变元,相应的谓词公式就表示了属性域间关系,也就是域关系的由来;其次在于元组变元的变化范围为整个关系,域变元的变化范围是某个属性域。30关系数据模型(28)3.关系运算——关系演算②域演算

域演算表达式的一般形式为:R={t1,t2,…,tk|P(t1,t2,…,tk)}其中,t1,t2,…,tk是域变量,P(t1,t2,…,tk)是域演算表达式。31关系数据模型(29)4.完整性约束(1)实体完整性约束

当实体模型转化为关系模型时,一个实体类型对应一个关系模式,此模式下任意一个具体关系中的一个元组对应此实体类型的一个实体,从而为组织该关系所选择的主键就唯一标识一个实体。实体完整性约束(EntityIntegrity)要求组成主键的属性不能为空值,否则就无从区分和识别元组(实体)。32关系数据模型(30)4.完整性约束(2)参照完整性约束

实体完整性约束主要考虑一个关系内部的制约,而参照完整性约束(ReferentialIntegrity)则考虑不同关系之间或同一关系的不同元组之间的制约。具体而言,参照关系的外键或者取空值,或者取被参照关系中相应的主键值。33关系数据模型(31)4.完整性约束(3)用户完整性约束

数据库设计者根据数据的具体内容定义自己的语义约束并提供检验机制,即是用户定义完整性约束(User-definedIntegrity)。34关系模式设计(01)1.数据冗余及其分析

数据冗余(DataRedundancy)是指同一数据在一个或者多个数据文件中重复存储。系统中如果出现数据冗余,不仅会大量占用消耗系统资源,造成不必要开销,更严重的是会带来各种数据操作异常,对数据库性能正常发挥造成极大影响。。35关系模式设计(02)1.数据冗余及其分析

数据操作异常(DataOperationAnomalies)是指由于存在数据冗余,就可能导致数据更新异常(UpdateAnomalies)。常见的几种异常有:修改异常(ModificationAnomalies),插入异常(InsertAnomalies):删除异常(DeletionAnomalies)。。36关系模式设计(03)1.数据冗余及其分析

为什么会产生数据冗余呢?其产生有着较为复杂的原因。从数据结构的角度考察,如果对多个文件之间和同一个文件中数据之间的联系考虑不周或者处理不当,就有可能导致数据冗余。这里有两个层面上的问题:●多个文件之间的联系。●同一个文件中数据之间的联系。。。37关系模式设计(04)1.数据冗余及其分析

对于第一个层面问题,主要出现在数据管理的文件系统阶段。由于文件系统没有考虑和体现相关多个文件之间的联系,同一数据经常在不同的文件中反复出现,数据冗余现象突出。数据库系统,特别是关系数据库系统,相比于文件系统的重要区别就是充分考虑到了文件间的相互关联并且采取相应的处理措施,有效地处理了第一层面问题,从而在很大程度上减少了冗余的产生。关系数据库较好地处理了文件层面的联系,但并不意味着数据层面上的联系可以自动解决。恰恰相反,此时,第二个层面上问题反而会凸现出来。38关系模式设计(05)1.数据冗余及其分析

在关系数据库中,同一关系模式中各个属性子集之间的依赖关系,通常称为数据依赖(DataIndependence)。关系系统当中数据冗余产生的重要原因就在于对数据依赖处理不当,也就是在于关系模式本身的结构设计可能存在缺陷。39关系模式设计(06)1.数据冗余及其分析

在关系数据库中,数据冗余之所以和数据依赖密切相关,就在于一个关系中各个属性子集可能相互关联,这种关联有“强”有“弱”,有直接关联,也有间接关联。如果在设计和构造关系模式时,不从语义上考虑和研究属性子集间的这种关联,简单地将有关联和无关联的、关联密切的和关联松散的、具有这类关联的和有另一类关联的属性随意编排在一起,就可能产生较大的数据冗余,产生“排它”现象,引发各种冲突和异常。解决问题的根本方法就是将关系模式进一步分解,即将模式中属性按照一定规范重新“分组”,将简单的“只要有关联就放在一起”方式变为依据规范的“一对一关联”方式,使得逻辑上独立的信息放在关系上也独立的模式当中,即进行所谓的关系规范化。40关系模式设计(07)1.函数依赖(1)基本概念

设R(U)是属性集U上的关系模式,X和Y分别是U的属性子集。r是R(U)中任意给定的一个关系实例。若对于r中任意两个元组s和t,当s[X]=t[X]时,就有s[Y]=t[Y],则称属性子集X函数决定属性子集Y或者称Y函数依赖X(FunctionalDependence),否则就称X不函数决定Y或者称Y不函数依赖于X。当Y函数依赖于X时,则记为X→Y。如果X→Y,也称X为决定因素(Determinantfactor),Y为依赖因素(Dependentfactor)。当Y不函数依赖于X,则记为X/→Y41关系模式设计(08)1.函数依赖(1)基本类型

①平凡与非平凡函数依赖如果X→Y,但Y不是X的子集,则称X→Y是非平凡函数依赖(NontrivialFunctionalDependence),否则称为平凡函数依赖(TrivialFunctionalDependence)。当Y函数依赖于X时,则记为X→Y。如果X→Y,也称X为决定因素(Determinantfactor),Y为依赖因素(Dependentfactor)。当Y不函数依赖于X,则记为X/→Y42关系模式设计(09)1.函数依赖(1)基本类型

①平凡与非平凡函数依赖如果X→Y,但Y不是X的子集,则称X→Y是非平凡函数依赖(NontrivialFunctionalDependence),否则称为平凡函数依赖(TrivialFunctionalDependence)。当Y函数依赖于X时,则记为X→Y。如果X→Y,也称X为决定因素(Determinantfactor),Y为依赖因素(Dependentfactor)。当Y不函数依赖于X,则记为X/→Y43关系模式设计(10)1.函数依赖(1)基本类型

①平凡与非平凡函数依赖如果X→Y,但Y不是X的子集,则称X→Y是非平凡函数依赖(NontrivialFunctionalDependence),否则称为平凡函数依赖(TrivialFunctionalDependence)。②部分与完全函数依赖如果X→Y,但对于X中的任意一个真子集X',都有Y不依赖于X',则称Y完全依赖(FullFunctionalalDependency)于X,。当Y完全依赖于X时,记为XY。如果X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖(PartialFunctionalDependency),记为XY。44关系模式设计(11)1.函数依赖(1)基本类型

①平凡与非平凡函数依赖如果X→Y,但Y不是X的子集,则称X→Y是非平凡函数依赖(NontrivialFunctionalDependence),否则称为平凡函数依赖(TrivialFunctionalDependence)。②部分与完全函数依赖如果X→Y,但对于X中的任意一个真子集X',都有Y不依赖于X',则称Y完全依赖(FullFunctionalalDependency)于X。45关系模式设计(12)1.函数依赖(1)基本类型

③传递与直接函数依赖设有两个非平凡函数依赖X→Y和Y→Z,并且X不函数依赖于Y,则称Z传递函数(TransitiveFunctionalDependency)依赖于X。46关系模式设计(13)3.函数依赖集合计算

考虑属性子集间的相互依赖关系,需要计算给定关系模式的所有函数依赖构成的集合。但函数依赖是基于语义的,需要有基于语法的形式系统来完成相应计算,这就是Armstrong公理系统。人们证明了公理系统的的完备性,从而建立了最小依赖集的算法,完成了所需要的计算。47关系模式设计(14)4.数据依赖与关系模式范式(1)第一范式

如果一个关系模式R中每个属性值都是一个不可分解的数据量,则称该关系模式满足第一范式(FirstNormalForm),记为R∈1NF。48关系模式设计(15)4.数据依赖与关系模式范式(2)第二范式

如果关系模式R(U)∈1NF,并且R(U)中的每一个非主属性完全函数依赖于R(U)的候选键,则称该关系模式R(U)满足第二范式,记为R(U)∈2NF。49关系模式设计(16)4.数据依赖与关系模式范式(3)第三范式

如果关系模式R(U)∈1NF,且R(U)中的每一个非主属性都不传递依赖于R的候选键,则称关系模式R(U)属于第三范式,记为R(U)∈3NF。50关系模式设计(17)4.数据依赖与关系模式范式(4)BC范式

设关系模式R(U)∈1NF,如果R(U)中每一个属性都不传递依赖于R(U)的候选键,则称关系模式R(U)满足Boyce-Codd范式,简称BC范式,记为R(U)∈BCNF。51关系模式设计(18)4.数据依赖与关系模式范式(5)多值依赖和第四范式

设有关系模式R(U),X、Y是属性集U中的两个子集,而r是R(U)中任意给定的一个关系实例r。如果有下述条件成立,则称Y多值依赖(MultivaluedDependency)于X,记为X→→Y:①对于r在X上的一个确定的值(元组),都有r在Y中一组值与之对应。②Y的这组对应值与r在Z=U-X-Y中的属性值无关。此时,如果X→→Y,但Z=U-X-Y≠Φ,则称其为非平凡多值依赖,否则称为平凡多值依赖。

52关系模式设计(19)4.数据依赖与关系模式范式(5)多值依赖和第四范式

对于R(U)中的任意两个属性子集X和Y,如果对于任意非平凡多值依赖X→→Y,X都为超键,则称R(U)满足第四范式,记为R(U)∈4NF。53关系模式设计(20)4.数据依赖与关系模式范式(6)连接依赖和第五范式

设有关系模式R(U),{U1,U2,…,Un}是属性集合U的一个覆盖,关系模式集合ρ={R1,R2,…,Rn}是R的一个模式分解,其中Ri是对应于Ui的关系模式(i=1,2,…,n)。如果对于R的每一个关系实例r,都成立:r=ΠR1(r)ΠR2(r)…ΠRn(r)则称连接依赖(joindependence)在关系模式R上成立,记为(R1,R2,…,Rn)。如果连接依赖中每一个Ri(i=1,2,…,n)都不等于R,则称此时连接依赖是非平凡的,否则称为是平凡的。。54关系模式设计(01)4.数据依赖与关系模式范式(6)连接依赖和第五范式

假设关系模式R(U)上任意一个非平凡连接依赖(R1,R2,…,Rn)都由R的某个候选键所蕴含,则称关系模式R满足第五范式,记为R(U)∈5NF。第五范式在有些文献中也称为投影连接范式(Project-JoinNormalForm),简记为PJNF。55事务处理(01)1.事务及其基本性质

事务(Transaction)是数据库所提供的一种手段,通过这种手段可以将一系列的数据库操作组合在一起形成一个整体序列,由数据库系统提供一组保证。一条或一组SQL语句构成一个事务,运行过程中整个程序也是一个事务。序列中的操作可以全部执行或者全部不执行,但不能只执行一部分,因为整个序列是一个不可分割的操作单位。56事务处理(02)1.事务及其基本性质

●原子性(Atomicity)一个事务对于数据库的所有操作是一个不可分割的操作整体,这些操作要么全部执行,要么全部不执行,而不能部分地完成。●一致性(Consistency)数据库中数据不因事务的执行而受到破坏,事务执行的结果应当使得数据库由一种一致性达到另一种新的一致性。数据一致性保证数据库的完整性。57事务处理(03)1.事务及其基本性质

●隔离性(Isolation)事务的并发执行与这些事务单独执行的结果一样。也就是说,在多个事务并发执行时,各个事务不必关心其它事务的执行,如同在单个用户环境下执行一样。事务的隔离性是事务并发控制技术的基础。对隔离性的另一种称法是可串行性。58事务处理(04)1.事务及其基本性质

●持久性(Durability)事务对数据库的更新应永久地反映在数据库中。也就是说,一个事务一旦完成其全部操作之后,它对数据库所有更新操作的结果将在数据库中永久存在,即使以后发生故障也应保留这个事务的执行结果。持久性意义在于保证数据库可恢复。59事务处理(05)2.事务基本基本操作

事务操作可以看作由若干个部分组成。●事务开始(BeginTransaction):事务开始执行。●事务读写(Read/WriteTransaction):事务进行数据操作。●事务提交(CommitTransaction):事务完成所有数据操作,同时保存操作结果,它标志着事务的成功完成。●事务回滚(RollbackTransaction):事务未完成所有数据操作,重新返回到事务开始,它标志着事务的撤销。60事务处理(06)3.并发控制(1)封锁概念

封锁是系统对事务并发执行的一种调度和控制技术,是保证系统对数据项的访问以互斥方式进行的一种手段。●当一个事务T需要对某些数据对象进行操作(读/写)时,必须向系统提出申请,对其加以封锁;在获得加锁成功之后,即具有对此类数据的一定操作权限与控制权限,此时,其他事务不能对加锁的数据随意操作。●当事务T操作完成之后即释放锁,此后数据即可为其他事务操作服务。61事务处理(07)3.并发控制(2)封锁类型

排它锁排它锁(exclusiveLock)又称为写锁或X锁,其含义是:事务T对数据A加X锁后,T可以对加X锁的A进行读写,而其它事务只有等到T解除X锁之后,才能对A进行封锁和操作(包括读写)。62事务处理(08)3.并发控制(2)封锁类型

共享锁(SharingLock)又称为读锁或S锁。其含义是:事务T对数据A加S锁之后,T可以读A但不能写A;同时其它事务可以对A加S锁但不能加X锁。。63事务处理(09)3.并发控制(3)封锁粒度

实行事务封锁的数据目标的大小称为该封锁的封锁粒度(Granularity)。在关系数据库中封锁粒度一般有如下几种。●属性(值)。●属性(值)集合。●元组。●关系表。●物理页面。●索引。●关系数据库642.2面向对象数据库技术面向对象基本概念2.2.2面向对象数据模型2.2.3基于ODMG数据操作2.2.4面向对象数据库系统652.2面向对象数据库技术(01)面向对象基本概念1.对象对象(Object)是由一组数据结构以及其上的一组方法即程序代码封装起来的基本单位。由属性集合、方法集合和消息集合三部分加上对象标识组成的对象封装体称为对象结构。对象重要特性:封装性、隐蔽性与稳定性等662.2面向对象数据库技术(02)面向对象基本概念1.对象(1)封装性封装(encapsulation)是使对象的外部界面与内部实现之间实行清晰隔离的一种技术,是OO模型的主要特征之一。封装使得用户只能看到对象外在的界面信息(正如规格说明等),而看不到对象内部的信息(如方法实现细节),对象内部信息对于用户是屏蔽的。672.2面向对象数据库技术(03)面向对象基本概念1.对象(2)隐蔽性与界面对象表示分为内部和外部两种,一种是内部的属性与行为的捆绑,封装之后,对外部用户透明,这就需要一种适当的对象外部表示即对象界面,外部用户通过界面认识对象并且与对象实施通信联系。对象界面实际上就是若干个外部接口,它对外部开放并为外部所见,而对象封装屏蔽了外界对内部细节的了解,这种屏蔽就称为隐蔽。682.2面向对象数据库技术(04)面向对象基本概念1.对象(3)稳定性对象内部的对象行为建立在对象属性之上,即行为服务于属性或行为依赖于属性,这就在对象内部建立起以属性为核心并以行为为附属的稳定实体特性称为对象的稳定性(stationary)。692.2面向对象数据库技术(05)面向对象基本概念2.消息消息(message)是对象与对象之间的联系信息。由于对象的封装性和隐蔽性,对象的消息仅仅作用于对象界面,然后再通过界面进一步作用于对象内部。①消息的作用请求对象为其服务;向对象传递消息并对对象操作;反馈服务结果。702.2面向对象数据库技术(06)面向对象基本概念2.消息②消息的组成接收者:表示消息所施加作用的对象;操作要求:消息对对象的造作要求;操作参数:消息行使操作时作需的外部数据。③消息发送与接收每个对象都可以发送和接收若干消息。面向对象数据模型中的“消息”与计算机网络中传输的消息含义不同。它是指对象间操作请求的传递,而不考虑操作实现细节。712.2面向对象数据库技术(07)面向对象基本概念3.类类(Class)是对具有共同属性和方法的对象全体的概括描述,它相当于关系模型中的关系模式。类给出了属于其全部对象属性与行为的抽象定义,类中对象仅是类定义中的一个实体,即对象实例。学生是一个类,一个具体学生,例如John就是学生类中一个对象实例。面向对象数据模式与关系模式类似,首先抽象描述具有共同属性的对象的类,按照类来定义属性和方法,从而避免了给每个对象一一重复定义。查询操作等方法也定义在类上。。722.2面向对象数据库技术(08)面向对象基本概念3.类类继承:类与类之间的层次结构重要特点之一就是继承(inheritance)。继承反映一个类能够自动继承其它某些类所具有的属性和方法。这是面向对象数据模型中避免重复定义的一个重要机制。继承性比较自然地体现了类之间的“is-a”联系。类Ais-a类B表示A中对象也是B中对象,但A中对象也具有B中对象所不具有的某些属性或方法。此时,称类A是类B的子类(subclass),称类B是类A的超类(superclass).732.2面向对象数据库技术(09)面向对象基本概念3.类类继承通常具有下面的四个基本性质。●传递性设有A,B,C三个类,其种类C继承类B,而类B继承类A,此时必有类C继承类A,继承的此种性质就称为类继承的传递性。例如动物、哺乳动物与灵长类动物均为类,而其中灵长类动物继承哺乳动物,哺乳动物继承动物,此时必有灵长类动物继承动物。742.2面向对象数据库技术(10)面向对象基本概念3.类●单向性设有类B继承类A,则此时一定不能有类A继承类B,如研究生类继承学生类,但学生类必不继承研究生类。传递性和单向性说明了类继承具有单向层次性。.752.2面向对象数据库技术(11)面向对象基本概念3.类●可重用性可重用性(reuse)指得是子类可以重用超类的全部资源,同时根据继承的传递性,它还可以重用继承链上所有超类资源。762.2面向对象数据库技术(12)面向对象基本概念3.类●包含性继承除了具有类之间一般与特殊关系之外,还可以有包含关系,即灵长类继承哺乳动物类,此时灵长类必包含在哺乳动物中,即是说,任一个对象如它属于灵长类动物则它必属于哺乳动物,而且类中继承的包含关系一般而言是真包含关系。.772.2面向对象数据库技术(13)面向对象基本概念3.类●包含性继承除了具有类之间一般与特殊关系之外,还可以有包含关系,即灵长类继承哺乳动物类,此时灵长类必包含在哺乳动物中,即是说,任一个对象如它属于灵长类动物则它必属于哺乳动物,而且类中继承的包含关系一般而言是真包含关系。.782.2面向对象数据库技术(14)面向对象基本概念3.类继承的多态性①多态性在类的继承过程中,超类属性与方法在子类中可以允许有不同的实现形式、方法与语义,这种情形就称为多态性(polymophic)。792.2面向对象数据库技术(15)面向对象基本概念3.类②联编多态性为对象与属性、方法之间的复杂关系提供了处理上的方便与灵活性,在计算机软件中为实现多态性需要有联编(binding)等功能的支撑。联编也称为绑定。将一个程序经过编译到成为可以运行的目标代码过程,就是将执行代码聚束在一起的联编过程。

802.2面向对象数据库技术(16)面向对象数据模型1.数据模型①数据模式由对象结构以及类间继承和组合关系建立起来的数据间的组织结构关系,这种模式结构的语义表示能力远比ER方法与EER方法要强。812.2面向对象数据库技术(17)面向对象数据模型1.基本概念②数据操作由对象与类中方法建构对象数据模式上的数据操作,这种操作语义强于传统数据模型,如可以构做一个圆形类,它的操作可以除查询、修改外,还可以有图形的放大/缩小,图形的移动、图形的拼接等。在面向对象数据操作分为两个部分,一个部分封装在类之中称之为方法,另一部分是类之间相互沟通的操作称之为消息。822.2面向对象数据库技术(18)面向对象数据模型1.基本概念③数据约束数据约束也是一种方法,即是一种逻辑表示式,可以用类中方法表示模式约束。面向对象数据一般使用方法或消息表示完整性约束条件,称为完整性约束方法与完整性约束消息,并在其之前标有特殊标识。832.2面向对象数据库技术(19)面向对象数据模型2.数据类型(1)基本类型①基础类型通常意义下的整型、字符串和布尔型等。②“类”类型一个类本身就是一种下述的构造型,是一种复杂类型。但仍然可以将其作为一个整体看成一个基础的型,从而可以像上述基础型一样对待和使用。842.2面向对象数据库技术(20)面向对象数据模型1.数据类型(2)构造类型基础型和“类”型是基本型,通过它们,可以使用下述构造器形成各种复杂型(构造型)。①ARRAY如果T是一个型,i是一个正整数,则ARRAY<T,i>j就是一个型,其对象为T的i个对象的一个数组,例如,ARRAY<char,10>就是长度为10的字符串。852.2面向对象数据库技术(21)面向对象数据模型2.数据类型(2)构造类型②LIST如果T是任意型,则LIST<T>也是一种型,其对象是T的零个或多个对象的一个862.2面向对象数据库技术(22)面向对象数据模型2.数据类型(2)构造类型③BAG如果T是任意型,则BAG<T>也是一种型,其对象是型T的对象的一个“可重复”集合即一个元素可重用的集合,称为一个“袋”或“包”。包与集合的区别就是其中的元素可以重复。例如{1,4,1,6}是一个包而不是一个集合。872.2面向对象数据库技术(23)面向对象数据模型2.数据类型(2)构造类型④SET如果T是任意型,则SET<T>也是一种型,其对象是T的对象的一个有限集合。⑤序列表,例如,字符串型char实际上是表LIST<char>型的一个速记特例。882.2面向对象数据库技术(24)面向对象数据模型2.数据类型(2)构造类型⑥RECORD设Ti和Fi(i=1,2,……,n)分别为任意的一个型和该型的一个域(field)的名字,则RECORD(F1:T1;F2:T·,…,Fn:Tn)也为一种型,其对象为分别具有名字Fi和型Ti(i=1,2,……,n)的域所组成的记录。892.2面向对象数据库技术(25)面向对象数据模型2.数据类型(2)构造类型⑥RECORD设Ti和Fi(i=1,2,……,n)分别为任意的一个型和该型的一个域(field)的名字,则RECORD(F1:T1;F2:T·,…,Fn:Tn)也为一种型,其对象为分别具有名字Fi和型Ti(i=1,2,……,n)的域所组成的记录。902.2面向对象数据库技术(26)面向对象数据模型3.与关系模型比较912.2面向对象数据库技术(27)2.2.3基于ODMG数据操作1.ODMG标准ODMG工业标准对C++的扩展主要包括C++对象定义语言(objectdefinitionlanguage,ODL)和C++对象操作语言(objectManipulatelanguage,OML),其中,OML又分为对象查询语言(OQL)和对象控制语言(OCL)。ODMG工业标准中的对象数据模型主要包括有下述5个核心概念:922.2面向对象数据库技术(28)基于ODMG数据操作1.ODMG标准①对象和文字对象和文字是面向对象数据建模的基本原语。每个对象有一个唯一标识符,文字(literal)没有标识符。对象标识符在对象整个生命周期中都有效,即无论对象是存储在外存中还是在内存中,标识符都始终有效。对象作为基本数据结构,是存储和操作的基础单元。932.2面向对象数据库技术(29)2.2.3基于ODMG数据操作1.ODMG标准②类型对象和文字都可以被划分为类型,同一类型(type)的对象或文字具有相同的状态,对象可以称为类型的实例。③状态对象的状态可以通过一组性质定义。性质(property)可以分为两种:对象属性(attribute)和对象之间联系(relationship)。942.2面向对象数据库技术(30)基于ODMG数据操作1.ODMG标准④操作对象行为可以通过一组操作来定义。操作(operation)具有输入和输出参数,并且可以返回特定类型的结果。⑤ODL利用ODL定义对象数据管理系统的模式,它所存储的对象都是模式中定义类型的实例,即对象,这些对象可以供多个应用程序共享。952.2面向对象数据库技术(31)基于ODMG数据操作2.ODMG数据操作1.数据定义2.数据查询有关实例见教材962.2面向对象数据库技术(32)2.2.4面向对象数据库系统1.面向对象数据库管理系统数据库管理系统是任何一个数据库的中枢系统,面向对象数据库管理系通常需要:支持面向对象的数据模型;提供面向对象的数据库语言;提供面向对象数据库管理机制;同时具有传统数据库的管理能力。面向对象数据库管理系统由类管理、对象管理和对象控制等三个部分组成。972.2面向对象数据库技术(33)2.2.4面向对象数据库系统1.面向对象数据库管理系统①类管理用于对类定义和类操作进行管理,利用类来描述复杂的对象。②对象管理对象管理又称为实例管理,主要完成对类中对象的操作管理,利用类中的封装的方法来模拟对象的复杂行为。982.2面向对象数据库技术(34)2.2.4面向对象数据库系统1.面向对象数据库管理系统③对象控制对象控制具有传统数据库中数据控制功能,但也补充了一些新的内容。整体上来说,对象控制包括如下一些基本点:完整性约束条件及检验,安全性表示与检查,并发控制与事务处理,故障恢复,利用继承性来实现对象的结构和方法的重用等。992.2面向对象数据库技术(35)2.2.4面向对象数据库系统1.面向对象数据库管理系统正是由于OODBMS上述特性,使得其在一些特定应用领域(如CAD、GIS等),能较好地满足其应用需求。当然,这种纯粹的面向对象数据库系统并不支持SQL语言,在通用性方面失去了优势,因此其应用领域受到了一定限制。1002.2面向对象数据库技术(36)2.2.4面向对象数据库系统2.面向对象数据库系统一个数据库系统要成为OODBS,基本标准是:①首先是一个面向对象系统其出发点是针对面向对象程序设计语言的持久性对象存储管理,其核心是充分支持完整地面向对象概念和机制,例如用户自定义数据类型、自定义函数、对象封装等必不可少的OO方法特征,与当前流行的OO程序设计语言取得一致。1012.2面向对象数据库技术(37)2.2.4面向对象数据库系统2.面向对象数据库系统②其次是一个数据库系统,借助扩充传统数据库语义,使之与核心OO数据模型协调,以支持传统数据库系统中的所有数据库特征和功能,例如持久性、辅存管理、数据共享、事务管理、一致性控制及恢复等。1022.2面向对象数据库技术(38)2.2.4面向对象数据库系统2.面向对象数据库系统按照上述标准,可以将一个OODBS表达为“面向对象系统+数据库能力”这样,OODBS就是一个将面向对象的程序设计语言中所建立的对象自动保存在磁盘上的文件系统。一旦程序终止,可以自动按另一个程序要求取出已经存入的对象。OODBS作为一种系统数据库,主要用户是计算机应用软件和计算机系统软件的开发人员,即专业程序员,而不是终端用户。1032.3对象关系数据库技术对象关系数据模型2.3.2对象关系数据操作2.3.3对象关系数据库系统1042.3对象关系数据库技术(01)对象关系数据模型1.关系模型扩充传统关系模型中的基本数据结构由三个层面组成:关系——元组——属性。其联系为:●属性为一些基本的数据类型所规定,例如整型、实型、字符串型等。●元组是属性值的有序集合。●关系是元组的无序集合。1052.3对象关系数据库技术(02)对象关系数据模型1.关系模型扩充所有关系模式都要满足1NF基本要求,因此传统关系模型是一种平面关系模型(PlatRelationalModel)。如果在关系模式中突破1NF即规定属性值是不可分解的限制,则得到扩充的关系模型,即复杂关系类型(Completerelationaltype)。复杂关系类型主要有结构(行)、聚集和引用数据类型三种。1062.3

温馨提示

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

评论

0/150

提交评论