1、1高级数据库技术与应用(2)-第2章 数据库系统基础汤汤 庸庸 叶小平叶小平 计算机科学系计算机科学系协同软件研究开发中心协同软件研究开发中心 协同软件研究开发中心2/26数据库系统基础目录n2.1 关系数据库基础关系数据库基础n2.2 面向对象数据库技术面向对象数据库技术n2.3 对象关系数据库技术对象关系数据库技术 协同软件研究开发中心3/262.1关系数据库基础关系数据库基础n2.1.1 关系数据模型关系数据模型n2.1.2 关系模式设计关系模式设计n2.1.3 事务处理技术事务处理技术 协同软件研究开发中心4/262.1.1关系数据模型(关系数据模型(01)n1.关系数据模型基本概念关
2、系数据模型基本概念n(1)关系描述(从技术直观层面)关系描述(从技术直观层面)n关系基本描述:关系基本描述:n一个关系就是一张二维平面表格,每个关系都有一个关系名。一个关系就是一张二维平面表格,每个关系都有一个关系名。n对关系的描述称为关系模式,不同关系模式对应不同关系结构。对关系的描述称为关系模式,不同关系模式对应不同关系结构。n关系表示形式为:关系表示形式为:n 关系名(属性名关系名(属性名1 1,属性名,属性名2 2,.,属性名,属性名n n)协同软件研究开发中心5/262.1.1关系数据模型(关系数据模型(02)n1.关系数据模型基本概念关系数据模型基本概念n(1)关系描述(从技术直观
3、层面)关系描述(从技术直观层面)n关系相关概念:关系相关概念:n元组:在一个二维表中,水平方向的行称为元组,每一行是一个元组:在一个二维表中,水平方向的行称为元组,每一行是一个 元组。元组对应存储文件中的一个具体的记录。元组。元组对应存储文件中的一个具体的记录。n属性列:二维表中垂直方向的列称为属性列,每一列有一个属性属性列:二维表中垂直方向的列称为属性列,每一列有一个属性 名。名。n域:域:属性的取值范围,即对同一属性的取值所限定的范围。属性的取值范围,即对同一属性的取值所限定的范围。协同软件研究开发中心6/262.1.1关系数据模型(关系数据模型(03)n1.关系数据模型基本概念关系数据模
4、型基本概念n(2)关系概念(从数学形式层面)关系概念(从数学形式层面)n笛卡尔乘积:笛卡尔乘积:n给定一组域给定一组域D1D1,D2D2,DnDn(其中允许有相同的其中允许有相同的),则笛卡儿积定义为:,则笛卡儿积定义为:n D1D1D2D2DnDn=(d1,d2,=(d1,d2,dn)|diDi,idn)|diDi,i=1,2,n=1,2,nn其中每个其中每个(d1,d2,(d1,d2,dndn)叫作元组;元组中的每个叫作元组;元组中的每个didi叫作分量,叫作分量,didi必是必是DiDi中的一个值;当中的一个值;当n=1n=1时称单元组,时称单元组,n=2n=2时,称二元组,时,称二元组
5、,。协同软件研究开发中心7/262.1.1关系数据模型(关系数据模型(04)n1.关系数据模型基本概念关系数据模型基本概念n(2)关系概念(从数学形式层面)关系概念(从数学形式层面)n关系的数学定义:关系的数学定义:n当且仅当当且仅当R是是D1D2Dn的一个子集,则称的一个子集,则称R是是D1D2Dn上的一个关系,上的一个关系,记为:记为:R(D1,D2,Dn),n其中其中 R为关系名,为关系名,n为关系的度,为关系的度,Di为第为第i个域名。在关个域名。在关系对应的二维表中,行对应元组,列对应域。系对应的二维表中,行对应元组,列对应域。协同软件研究开发中心8/262.1.1关系数据模型(关系
6、数据模型(05)n元组标识由主键描述元组标识由主键描述n超 键:在给定关系R中,能够唯一标识各个元组的属性集合称 为关系R的超键(Super Key)。n候选键:不含多余属性的超键称为候选键(Candidate Key),或者说候选键是其中任何真子集均不是超键的 超键。候选键有时也称作键(Key)。n主 键:选定了用于标识的候选键称为主键(Prime Key)。1.关系数据模型基本概念关系数据模型基本概念(3)元组标识与关系间关联元组标识与关系间关联 协同软件研究开发中心9/262.1.1关系数据模型(关系数据模型(06)关系间相互关联由外键描述。关系间相互关联由外键描述。外外 键:如果一个关
7、系键:如果一个关系R1R1的一个属性子集的一个属性子集S S是另一个是另一个关系关系R2R2的主键,但不是的主键,但不是R1R1本身的主键,则称本身的主键,则称S S是关系是关系R1R1的外键(的外键(Foreign Foreign KeyKey)。其中,)。其中,R1R1称为依赖关系,称为依赖关系,R2R2称为参照关系。称为参照关系。1.关系数据模型基本概念关系数据模型基本概念(3)元组标识与关系间关联元组标识与关系间关联 协同软件研究开发中心10/262.1.1关系数据模型(关系数据模型(07)n列的同质性列的同质性 关系表中每一列的属性值都必须关系表中每一列的属性值都必须为同一类型数据,
8、来自同一个属性域。为同一类型数据,来自同一个属性域。n异列同域性异列同域性 关系中不同的属性列可以出自同关系中不同的属性列可以出自同一个域,但不同属性列应当有不同属性名称。一个域,但不同属性列应当有不同属性名称。n列的无序性列的无序性 关系中属性是无序的,即列的次关系中属性是无序的,即列的次序可以任意交换。由于列的顺序无关紧要,列序可以任意交换。由于列的顺序无关紧要,列顺序不同的关系在逻辑上是同一集合。顺序不同的关系在逻辑上是同一集合。2.关系结构基本性质关系结构基本性质 协同软件研究开发中心11/262.1.1关系数据模型(关系数据模型(08)n元组相异性元组相异性 关系的主体中不允许出现相
9、同的关系的主体中不允许出现相同的元组。元组。n行的无序性行的无序性 关系中不考虑元组之间的顺序,关系中不考虑元组之间的顺序,元组在关系中应是无序的,即没有行序,这是元组在关系中应是无序的,即没有行序,这是因为关系是元组的集合,按集合的定义,集合因为关系是元组的集合,按集合的定义,集合中的元素无序。中的元素无序。n属性值原子性属性值原子性 关系中的每一个属性值都是不关系中的每一个属性值都是不可分解的,不允许出现组合数据,更不允许可分解的,不允许出现组合数据,更不允许“表中有表表中有表”。2.关系结构基本性质关系结构基本性质 协同软件研究开发中心12/262.1.1关系数据模型(关系数据模型(09
10、)n基于更新的代数运算建立在传统集合运算之上基于更新的代数运算建立在传统集合运算之上n插入插入集合的并运算集合的并运算 n设有同类关系R、S(即R、S具有相同的关系模式),则二者的并运算定义为:n式中“”为并运算符,t为元组变量,结果RS为一个新的与R、S同类的关系,该关系是由属于R或属于S的元组构成的集合。3.关系运算关系运算关系代数关系代数 基于更新的代数运算基于更新的代数运算|StRttSR 协同软件研究开发中心13/262.1.1关系数据模型(关系数据模型(10)n删除删除集合的差运算集合的差运算n设有同类关系R、S,则二者的差(Difference)运算定义为:n式中“”为差运算符,
11、t为元组变量,结果R-S为一个新的与R、S同类的关系,该关系是由属于R而且不属于S的元组构成的集合,即在R中减去与S中相同的那些元组。|StRttSR3.关系运算关系运算关系代数关系代数 基于更新的代数运算基于更新的代数运算 协同软件研究开发中心14/262.1.1关系数据运算(关系数据运算(11)n基于查询需要建立不同于传统情形的新的集合运算基于查询需要建立不同于传统情形的新的集合运算n关系属性的指定关系属性的指定投影运算投影运算n设有设有k k元关系元关系R R,其元组变量为,其元组变量为tktk=t1,t2,=,那么关系那么关系R R在其分量在其分量Ai1,Ai2,Ai1,Ai2,Ain
12、Ain(nknk,i1,i2,in i1,i2,in 为为1 1到到k k之间互不相同的整数之间互不相同的整数)上的上的投影定义为:投影定义为:,|)(2121,2,1RttttttttRkiniiinii3.关系运算关系运算关系代数关系代数 基于查询的代数运算基于查询的代数运算 协同软件研究开发中心15/262.1.1关系数据模型(关系数据模型(12)n关系元组的选定关系元组的选定选择运算选择运算 n设有设有k元关系元关系R,条件用一命题公式,条件用一命题公式F表示,则从关系表示,则从关系R中选择出满足条件中选择出满足条件F的行定义为的行定义为:)(|)(truetFRttRF3.关系运算关
13、系运算关系代数关系代数 基于查询的代数运算基于查询的代数运算 协同软件研究开发中心16/262.1.1关系数据模型(关系数据模型(13)n 关系的集成关系的集成广义笛卡尔乘积运算广义笛卡尔乘积运算 n设有关系R、S,其中关系R有r个属性分量、m个元组,关系S有s个属性分量、n个元组,则二者的广义笛卡尔乘积(Cartesian Product)运算定义为:,|StRtttttSRsrsr3.关系运算关系运算关系代数关系代数 基于查询的代数运算基于查询的代数运算 协同软件研究开发中心17/262.1.1关系数据模型(关系数据模型(14)n 交 运 算交 运 算 设 有 同 类 关 系设 有 同 类
14、 关 系 R、S,则 二 者 的 交,则 二 者 的 交(Intersection)运算定义为)运算定义为n 除法运算除法运算 设有两个关系设有两个关系T和和R,其元数分别为,其元数分别为n和和m(nm0),则),则T和和R进行进行“除法除法”运算的结果记运算的结果记P=TR,其中,其中P是一个元数为是一个元数为n-m的满足下述性质的最大关的满足下述性质的最大关系:系:P中的每个元组中的每个元组u与与R中每个元组中每个元组v所组成的元组所组成的元组(u,v)必在关系)必在关系T中。在这里,为了叙述方便,假中。在这里,为了叙述方便,假设设R的属性为的属性为T中的后中的后m个属性。个属性。|StR
15、ttSR3.关系运算关系运算关系代数关系代数 组合代数运算组合代数运算 协同软件研究开发中心18/262.1.1关系数据模型(关系数据模型(15)n 连接运算连接运算 n设有关系R、S,为算术比较符,i为R中某一属性列的编号,j为S中某一属性列的编号,ij为一个算术比较式。关系R,S在域i,j上的-连接(-Join)就是从R和S的笛卡尔乘积中选取满足条件“ij”的元组,其定义为:)(SRSRjiji3.关系运算关系运算关系代数关系代数 组合代数运算组合代数运算 协同软件研究开发中心19/262.1.1关系数据模型(关系数据模型(16)n如果在一阶谓词演算表达式中,变量是以元组为演算单位,就称其
16、为元组关系演算(Tuple Relation Calculus),其中元组变量表示关系中的元组,变量取值范围是整个关系。n 关系的元组演算表示关系的元组演算表示 为了得到关系操作的元组关系演算表达式,需要考虑关系与谓词的联系。3.关系运算关系运算关系演算关系演算元组演算元组演算 协同软件研究开发中心20/262.1.1关系数据模型(关系数据模型(17)nA.由关系由关系R确定的谓词确定的谓词P 在数理逻辑中我们知道,关系可用谓词表示,n元关系可以由n元谓词表示。n设有关系R,它有元组(r1,r2,rm),定义关系R对应如下一个谓词nP(x1,x2,xn)。n当t=(r1,r2,rm)属于R时,
17、t为P的成真指派,而其他不在R中的任意元组t则是P的成假指派。即是说,由关系R定义一个谓词P具有如下性质:nP(t)=T (当t在R中);nP(t)=F (当t不在R中)。3.关系运算关系运算关系演算关系演算元组演算元组演算 协同软件研究开发中心21/262.1.1关系数据模型(关系数据模型(18)nB.由谓词由谓词P表示关系表示关系R 由于关系代数中R是元组集合,一般而言,集合是可以用满足它的某种特殊性质来刻画与表示。如果谓词P表述了关系R中元组的本质特性,就可以将关系R写为:nR=t|P(t)n这个公式就建立了关系(元组集合)的谓词表示,称之为关系演算表达式。3.关系运算关系运算关系演算关
18、系演算元组演算元组演算 协同软件研究开发中心22/262.1.1关系数据模型(关系数据模型(19)n元组关系演算的语法元组关系演算的语法 元组关系演算表达式的严格数学描述是由“归纳定义”方式完成的。按照通常的思路,元组演算表达式是由“关系演算公式”组成;“关系演算公式”是由“原子公式”组成。3.关系运算关系运算关系演算关系演算元组演算元组演算 协同软件研究开发中心23/262.1.1关系数据模型(关系数据模型(20)n下述三类称为元组演算原子公式,简称原子公式:nA.R(t)是原子公式 这里,R是关系名,t=(r1,r2,rm)是元组变量,并且是P的成真指派,此时R(t)表示命题“t是关系R中
19、元组”。nB.u(i)v(j)是原子公式 这里,u(i)表示元组u的第i个分量,v(j)表示元组v的第j个分量,u(i)v(j)表示命题:“表示u的第i个分量与u的第j个分量有关系”。nC.u(i)a是原子公式 这里,a是常量,u(i)a表示命题“u的第i个分量与常量a有关系”。3.关系运算关系运算关系演算关系演算元组演算元组演算 协同软件研究开发中心24/262.1.1关系数据模型(关系数据模型(21)n利用原子公式可以递归定义关系演算公式:利用原子公式可以递归定义关系演算公式:nA.原子公式是公式。原子公式是公式。nB.如果如果1,2是公式,则是公式,则12,12,12和和1均是公式。均是
20、公式。nC.如果如果是公式,是公式,r是是中自由变元,则中自由变元,则r(),),r()是公式。)是公式。nD.所有公式由且仅由上述三种方式经过有限次所有公式由且仅由上述三种方式经过有限次操作生成。操作生成。3.关系运算关系运算关系演算关系演算元组演算元组演算 协同软件研究开发中心25/262.1.1关系数据模型(关系数据模型(22)n有了公式有了公式的概念,以公式的概念,以公式作为特性就构成作为特性就构成一个有若干元组组成的集合,即关系一个有若干元组组成的集合,即关系R,这种,这种形式的元组集合就称其为关系演算表达式。关形式的元组集合就称其为关系演算表达式。关系演算表达式的一般形式为:系演算
21、表达式的一般形式为:nt|(t)n其中,其中,(t)为公式,)为公式,t为为中出现的自由变元。中出现的自由变元。关系演算表达式也简称为关系表达式或者表达关系演算表达式也简称为关系表达式或者表达式。式。3.关系运算关系运算关系演算关系演算元组演算元组演算 协同软件研究开发中心26/262.1.1关系数据模型(关系数据模型(23)n关系操作的元组演算表示关系操作的元组演算表示 关系操作有五种基关系操作有五种基本操作,它们在关系代数中分别对应五种基本本操作,它们在关系代数中分别对应五种基本运算,这五种基本运算可以用一阶谓词演算中运算,这五种基本运算可以用一阶谓词演算中的公式表示。的公式表示。3.关系
22、运算关系运算关系演算关系演算元组演算元组演算 协同软件研究开发中心27/262.1.1关系数据模型(关系数据模型(24)n设有关系设有关系R、S,其谓词表示为,其谓词表示为R(t)和)和S(t),),此时有此时有nRS=t|R(t)S(t);nR S=(t|R(t)S(t););n F(R)=t|R(t)F,其中,其中F是一个是一个谓词公式;谓词公式;3.关系运算关系运算关系演算关系演算元组演算元组演算 协同软件研究开发中心28/262.1.1关系数据模型(关系数据模型(25)3.关系运算关系运算关系演算关系演算元组演算元组演算)()(|)()(,.,2,1uRutRkuikuiui)()(.
23、)2()2()1()1(ikuktiutiut其中t(k)所表示的元组有k个分量,而t(i)表示t的第i个分量,u(j)表示u第j个分量。协同软件研究开发中心29/262.1.1关系数据模型(关系数据模型(26)3.关系运算关系运算关系演算关系演算域演算域演算n域关系演算(Domain Relation Calculus)简称为域演算,它是关系演算的另外一种形式。域关系和元组关系演算都建立在谓词演算之上,同属于关系演算范畴。n域关系和元组关系演算的不同之处首先在于,谓词表达式中谓词变元不同 元组演算以元组为变元,域演算以元组的分量为变元,由于元组分量是在相应属性域内变化,所以也将元组变元视为域
24、变元,相应的谓词公式就表示了属性域间关系,也就是域关系的由来;其次在于元组变元的变化范围为整个关系,域变元的变化范围是某个属性域。协同软件研究开发中心30/262.1.1关系数据模型(关系数据模型(27)3.关系运算关系运算关系演算关系演算域演算域演算n域关系演算(Domain Relation Calculus)简称为域演算,它是关系演算的另外一种形式。域关系和元组关系演算都建立在谓词演算之上,同属于关系演算范畴。n域关系和元组关系演算的不同之处首先在于,谓词表达式中谓词变元不同 元组演算以元组为变元,域演算以元组的分量为变元,由于元组分量是在相应属性域内变化,所以也将元组变元视为域变元,相
25、应的谓词公式就表示了属性域间关系,也就是域关系的由来;其次在于元组变元的变化范围为整个关系,域变元的变化范围是某个属性域。协同软件研究开发中心31/262.1.1关系数据模型(关系数据模型(28)3.关系运算关系运算关系演算关系演算域演算域演算n域演算表达式的一般形式为:域演算表达式的一般形式为:nR=t1,t2,tk|P(t1,t2,tk)n其中,其中,t1,t2,tk是域变量,是域变量,P(t1,t2,tk)是域演算表达式。)是域演算表达式。协同软件研究开发中心32/262.1.1关系数据模型(关系数据模型(29)4.完整性约束完整性约束(1)实体完整性约束实体完整性约束n当实体模型转化为
26、关系模型时,一个实体类型对应一个关系模式,此模式下任意一个具体关系中的一个元组对应此实体类型的一个实体,从而为组织该关系所选择的主键就唯一标识一个实体。实体完整性约束(Entity Integrity)要求组成主键的属性不能为空值,否则就无从区分和识别元组(实体)。协同软件研究开发中心33/262.1.1关系数据模型(关系数据模型(30)4.完整性约束完整性约束(2)参照完整性约束参照完整性约束n实体完整性约束主要考虑一个关系内部的制约,而参照完整性约束(Referential Integrity)则考虑不同关系之间或同一关系的不同元组之间的制约。具体而言,参照关系的外键或者取空值,或者取被参
27、照关系中相应的主键值。协同软件研究开发中心34/262.1.1关系数据模型(关系数据模型(31)4.完整性约束完整性约束(3)用户完整性约束用户完整性约束n数据库设计者根据数据的具体内容定义自己的语义约束并提供检验机制,即是用户定 义 完 整 性 约 束(U s e r-d e f i n e d Integrity)。协同软件研究开发中心35/262.1.2关系模式设计(关系模式设计(01)1.数据冗余及其分析数据冗余及其分析n数据冗余(数据冗余(Data Redundancy)是指同一数据在一个或者多个数据文件中重复存储。系统中如果出现数据冗余,不仅会大量占用消耗系统资源,造成不必要开销,
28、更严重的是会带来各种数据操作异常,对数据库性能正常发挥造成极大影响。协同软件研究开发中心36/262.1.2关系模式设计(关系模式设计(02)1.数据冗余及其分析数据冗余及其分析n数据操作异常(数据操作异常(Data Operation Anomalies)是指由于存在数据冗余,就可能导致数据更新异常(Update Anomalies)。常见的几种异常有:修改异常(Modification Anomalies),插入异常(Insert Anomalies):删除异常(Deletion Anomalies)。协同软件研究开发中心37/262.1.2关系模式设计(关系模式设计(03)1.数据冗余及
29、其分析数据冗余及其分析n为什么会产生数据冗余呢?其产生有着较为复杂的原因。从数据结构的角度考察,如果对多个文件之间和同一个文件中数据之间的联系考虑不周或者处理不当,就有可能导致数据冗余。这里有两个层面上的问题:n 多个文件之间的联系。n 同一个文件中数据之间的联系。协同软件研究开发中心38/262.1.2关系模式设计(关系模式设计(04)1.数据冗余及其分析数据冗余及其分析n对于第一个层面问题,主要出现在数据管理的文件系统阶段。由于文件系统没有考虑和体现相关多个文件之间的联系,同一数据经常在不同的文件中反复出现,数据冗余现象突出。数据库系统,特别是关系数据库系统,相比于文件系统的重要区别就是充
30、分考虑到了文件间的相互关联并且采取相应的处理措施,有效地处理了第一层面问题,从而在很大程度上减少了冗余的产生。n关系数据库较好地处理了文件层面的联系,但并不意味着数据层面上的联系可以自动解决。恰恰相反,此时,第二个层面上问题反而会凸现出来。协同软件研究开发中心39/262.1.2关系模式设计(关系模式设计(05)1.数据冗余及其分析数据冗余及其分析n在关系数据库中,同一关系模式中各个属性子集之间的依赖关系,通常称为数据依赖(Data Independence)。关系系统当中数据冗余产生的重要原因就在于对数据依赖处理不当,也就是在于关系模式本身的结构设计可能存在缺陷。协同软件研究开发中心40/2
31、62.1.2关系模式设计(关系模式设计(06)1.数据冗余及其分析数据冗余及其分析n在关系数据库中,数据冗余之所以和数据依赖密切相关,在关系数据库中,数据冗余之所以和数据依赖密切相关,就在于一个关系中各个属性子集可能相互关联,这种关就在于一个关系中各个属性子集可能相互关联,这种关联有联有“强强”有有“弱弱”,有直接关联,也有间接关联。如,有直接关联,也有间接关联。如果在设计和构造关系模式时,不从语义上考虑和研究属果在设计和构造关系模式时,不从语义上考虑和研究属性子集间的这种关联,简单地将有关联和无关联的、关性子集间的这种关联,简单地将有关联和无关联的、关联密切的和关联松散的、具有这类关联的和有
32、另一类关联密切的和关联松散的、具有这类关联的和有另一类关联的属性随意编排在一起,就可能产生较大的数据冗余,联的属性随意编排在一起,就可能产生较大的数据冗余,产生产生“排它排它”现象,引发各种冲突和异常。解决问题的现象,引发各种冲突和异常。解决问题的根本方法就是将关系模式进一步分解,即将模式中属性根本方法就是将关系模式进一步分解,即将模式中属性按照一定规范重新按照一定规范重新“分组分组”,将简单的,将简单的“只要有关联就只要有关联就放在一起放在一起”方式变为依据规范的方式变为依据规范的“一对一关联一对一关联”方式,方式,使得逻辑上独立的信息放在关系上也独立的模式当中,使得逻辑上独立的信息放在关系
33、上也独立的模式当中,即进行所谓的关系规范化。即进行所谓的关系规范化。协同软件研究开发中心41/262.1.2关系模式设计(关系模式设计(07)1.函数依赖函数依赖(1)基本概念)基本概念n设设R(U)是属性集)是属性集U上的关系模式,上的关系模式,X和和Y分别是分别是U的的属性子集。属性子集。r是是R(U)中任意给定的一个关系实例。若)中任意给定的一个关系实例。若对于对于r中任意两个元组中任意两个元组s和和t,当,当sX=tX时,就有时,就有sY=tY,则称属性子集,则称属性子集X函数决定属性子集函数决定属性子集Y或者或者称称Y函数依赖函数依赖X(Functional Dependence),
34、否则就),否则就称称X不函数决定不函数决定Y或者称或者称Y不函数依赖于不函数依赖于X。n当当Y函数依赖于函数依赖于X时,则记为时,则记为XY。如果。如果XY,也称,也称X为决定因素(为决定因素(Determinant factor),),Y为依赖因为依赖因素(素(Dependent factor)。当)。当Y不函数依赖于不函数依赖于X,则,则记为记为XY 协同软件研究开发中心42/262.1.2关系模式设计(关系模式设计(08)1.函数依赖函数依赖(1)基本类型)基本类型n平凡与非平凡函数依赖平凡与非平凡函数依赖 如果如果XY,但,但Y不是不是X 的 子 集,则 称的 子 集,则 称 X Y
35、是 非 平 凡 函 数 依 赖是 非 平 凡 函 数 依 赖(Nontrivial Functional Dependence),),否则称为平凡函数依赖(否则称为平凡函数依赖(Trivial Functional Dependence)。当)。当Y函数依赖于函数依赖于X时,则记为时,则记为X Y。如 果。如 果 X Y,也 称,也 称 X 为 决 定 因 素为 决 定 因 素(Determinant factor),),Y为依赖因素为依赖因素(Dependent factor)。当)。当Y不函数依赖于不函数依赖于X,则记为则记为XY 协同软件研究开发中心43/262.1.2关系模式设计(关系
36、模式设计(09)1.函数依赖函数依赖(1)基本类型)基本类型n平凡与非平凡函数依赖平凡与非平凡函数依赖 如果如果XY,但,但Y不是不是X 的 子 集,则 称的 子 集,则 称 X Y 是 非 平 凡 函 数 依 赖是 非 平 凡 函 数 依 赖(Nontrivial Functional Dependence),),否则称为平凡函数依赖(否则称为平凡函数依赖(Trivial Functional Dependence)。当)。当Y函数依赖于函数依赖于X时,则记为时,则记为X Y。如 果。如 果 X Y,也 称,也 称 X 为 决 定 因 素为 决 定 因 素(Determinant facto
37、r),),Y为依赖因素为依赖因素(Dependent factor)。当)。当Y不函数依赖于不函数依赖于X,则记为则记为XY 协同软件研究开发中心44/262.1.2关系模式设计(关系模式设计(10)1.函数依赖函数依赖(1)基本类型)基本类型n平凡与非平凡函数依赖平凡与非平凡函数依赖 如果如果XY,但,但Y不是不是X的子集,的子集,则称则称XY是非平凡函数依赖(是非平凡函数依赖(Nontrivial Functional Dependence),否则称为平凡函数依赖(),否则称为平凡函数依赖(Trivial Functional Dependence)。)。n部分与完全函数依赖部分与完全函数
38、依赖 如果如果XY,但对于,但对于X中的任意中的任意一个真子集一个真子集X,都有,都有Y不依赖于不依赖于X,则称,则称Y完全依赖完全依赖(Full Functionalal Dependency)于)于X,。当,。当Y完全完全依赖于依赖于X时,记为时,记为XY。如果。如果XY,但,但Y不完全函数依赖不完全函数依赖于于X,则称,则称Y对对X部分函数依赖(部分函数依赖(Partial Functional Dependency),记为),记为 XY。协同软件研究开发中心45/262.1.2关系模式设计(关系模式设计(11)1.函数依赖函数依赖(1)基本类型)基本类型n平凡与非平凡函数依赖平凡与非平
39、凡函数依赖 如果如果XY,但,但Y不是不是X 的 子 集,则 称的 子 集,则 称 X Y 是 非 平 凡 函 数 依 赖是 非 平 凡 函 数 依 赖(Nontrivial Functional Dependence),),否则称为平凡函数依赖(否则称为平凡函数依赖(Trivial Functional Dependence)。)。n部分与完全函数依赖部分与完全函数依赖 如果如果XY,但对于,但对于X中中的任意一个真子集的任意一个真子集X,都有,都有Y不依赖于不依赖于X,则 称则 称 Y完 全 依 赖(完 全 依 赖(Full Functionalal Dependency)于)于X。协同软
40、件研究开发中心46/262.1.2关系模式设计(关系模式设计(12)1.函数依赖函数依赖(1)基本类型)基本类型n传递与直接函数依赖传递与直接函数依赖 设有两个非平凡设有两个非平凡函数依赖函数依赖XY和和YZ,并且,并且X不函数依不函数依赖于赖于Y,则称,则称Z传递函数(传递函数(Transitive Functional Dependency)依赖于)依赖于X。协同软件研究开发中心47/262.1.2关系模式设计(关系模式设计(13)3.函数依赖集合计算函数依赖集合计算n考虑属性子集间的相互依赖关系,需要计考虑属性子集间的相互依赖关系,需要计算给定关系模式的所有函数依赖构成的集算给定关系模式
41、的所有函数依赖构成的集合。但函数依赖是基于语义的,需要有基合。但函数依赖是基于语义的,需要有基于语法的形式系统来完成相应计算,这就于语法的形式系统来完成相应计算,这就是是Armstrong公理系统。人们证明了公公理系统。人们证明了公理系统的的完备性,从而建立了最小依赖理系统的的完备性,从而建立了最小依赖集的算法,完成了所需要的计算。集的算法,完成了所需要的计算。协同软件研究开发中心48/262.1.2关系模式设计(关系模式设计(14)4.数据依赖与关系模式范式数据依赖与关系模式范式(1)第一范式)第一范式n如果一个关系模式如果一个关系模式R中每个属性值都是一中每个属性值都是一个不可分解的数据量
42、,则称该关系模式满个不可分解的数据量,则称该关系模式满足第一范式(足第一范式(First Normal Form),),记为记为R1NF。协同软件研究开发中心49/262.1.2关系模式设计(关系模式设计(15)4.数据依赖与关系模式范式数据依赖与关系模式范式(2)第二范式)第二范式n如果关系模式如果关系模式R(U)1NF,并且,并且R(U)中的每一个非主属性完全函数依赖于中的每一个非主属性完全函数依赖于R(U)的候选键,则称该关系模式)的候选键,则称该关系模式R(U)满足第二范式,记为满足第二范式,记为R(U)NF。协同软件研究开发中心50/262.1.2关系模式设计(关系模式设计(16)4
43、.数据依赖与关系模式范式数据依赖与关系模式范式(3)第三范式)第三范式n如果关系模式如果关系模式R(U)1NF,且,且R(U)中的每一个非主属性都不传递依赖于中的每一个非主属性都不传递依赖于R的的候选键,则称关系模式候选键,则称关系模式R(U)属于第三)属于第三范式,记为范式,记为R(U)NF。协同软件研究开发中心51/262.1.2关系模式设计(关系模式设计(17)4.数据依赖与关系模式范式数据依赖与关系模式范式(4)BC范式范式n设关系模式设关系模式R(U)1NF,如果,如果R(U)中每一个属性都不传递依赖于中每一个属性都不传递依赖于R(U)的)的候选键,则称关系模式候选键,则称关系模式R
44、(U)满足)满足Boyce-Codd范式,简称范式,简称BC范式,记为范式,记为R(U)BCNF。协同软件研究开发中心52/262.1.2关系模式设计(关系模式设计(18)4.数据依赖与关系模式范式数据依赖与关系模式范式(5)多值依赖和第四范式)多值依赖和第四范式n设有关系模式设有关系模式R(U),),X、Y是属性集是属性集U中的两个子集,中的两个子集,而而r是是R(U)中任意给定的一个关系实例)中任意给定的一个关系实例r。如果有下。如果有下述条件成立,则称述条件成立,则称Y多值依赖(多值依赖(Multivalued Dependency)于)于X,记为,记为XY:n 对于对于r在在X上的一个
45、确定的值(元组),都有上的一个确定的值(元组),都有r在在Y中中一组值与之对应。一组值与之对应。n Y的这组对应值与的这组对应值与r在在Z=U-X-Y中的属性值无关。中的属性值无关。n此时,如果此时,如果XY,但,但Z=U-X-Y,则称其为非平,则称其为非平凡多值依赖,否则称为平凡多值依赖。凡多值依赖,否则称为平凡多值依赖。协同软件研究开发中心53/262.1.2关系模式设计(关系模式设计(19)4.数据依赖与关系模式范式数据依赖与关系模式范式(5)多值依赖和第四范式)多值依赖和第四范式n对于对于R(U)中的任意两个属性子集)中的任意两个属性子集X和和Y,如果对于任意非平凡多值依赖如果对于任意
46、非平凡多值依赖XY,X都为超键,则称都为超键,则称R(U)满足第四范式,)满足第四范式,记为记为R(U)4NF。协同软件研究开发中心54/262.1.2关系模式设计(关系模式设计(20)4.数据依赖与关系模式范式数据依赖与关系模式范式(6)连接依赖和第五范式)连接依赖和第五范式n设有关系模式设有关系模式R(U),),U1,U2,Un是属性集合是属性集合U的一个覆盖,关系模式集合的一个覆盖,关系模式集合=R1,R2,,Rn是是R的一个模式分解,其中的一个模式分解,其中Ri是对应于是对应于Ui的关系模式的关系模式(i=1,2,n)。如果对于)。如果对于R的每一个关系实例的每一个关系实例r,都,都成
47、立:成立:nr=R1(r)R2(r)Rn(r)n则称连接依赖(则称连接依赖(join dependence)在关系模式)在关系模式R上成上成立,记为(立,记为(R1,R2,Rn)。)。n如果连接依赖中每一个如果连接依赖中每一个Ri(i=1,2,n)都不等于)都不等于R,则称此时连接依赖是非平凡的,否则称为是平凡的。则称此时连接依赖是非平凡的,否则称为是平凡的。协同软件研究开发中心55/262.1.2关系模式设计(关系模式设计(01)4.数据依赖与关系模式范式数据依赖与关系模式范式(6)连接依赖和第五范式)连接依赖和第五范式n假设关系模式假设关系模式R(U)上任意一个非平凡)上任意一个非平凡连接
48、依赖(连接依赖(R1,R2,Rn)都由)都由R的某个的某个候选键所蕴含,则称关系模式候选键所蕴含,则称关系模式R满足第五满足第五范式,记为范式,记为R(U)5NF。第五范式在。第五范式在有 些 文 献 中 也 称 为 投 影 连 接 范 式有 些 文 献 中 也 称 为 投 影 连 接 范 式(Project-Join Normal Form),简记),简记为为PJNF。协同软件研究开发中心56/262.1.3事务处理(事务处理(01)1.事务及其基本性质事务及其基本性质n事务(事务(Transaction)是数据库所提供的一种)是数据库所提供的一种手段,通过这种手段可以将一系列的数据库操手段
49、,通过这种手段可以将一系列的数据库操作组合在一起形成一个整体序列,由数据库系作组合在一起形成一个整体序列,由数据库系统提供一组保证。一条或一组统提供一组保证。一条或一组SQL语句构成一语句构成一个事务,运行过程中整个程序也是一个事务。个事务,运行过程中整个程序也是一个事务。序列中的操作可以全部执行或者全部不执行,序列中的操作可以全部执行或者全部不执行,但不能只执行一部分,因为整个序列是一个不但不能只执行一部分,因为整个序列是一个不可分割的操作单位。可分割的操作单位。协同软件研究开发中心57/262.1.3事务处理(事务处理(02)1.事务及其基本性质事务及其基本性质n 原子性(Atomicit
50、y)一个事务对于数据库的所有操作是一个不可分割的操作整体,这些操作要么全部执行,要么全部不执行,而不能部分地完成。n 一致性(Consistency)数据库中数据不因事务的执行而受到破坏,事务执行的结果应当使得数据库由一种一致性达到另一种新的一致性。数据一致性保证数据库的完整性。协同软件研究开发中心58/262.1.3事务处理(事务处理(03)1.事务及其基本性质事务及其基本性质n 隔离性隔离性(Isolation)事务的并发执行与这些事务单独执行的结果一样。也就是说,在多个事务并发执行时,各个事务不必关心其它事务的执行,如同在单个用户环境下执行一样。事务的隔离性是事务并发控制技术的基础。对隔