《数据库系统原理关系数据模型.ppt》由会员分享,可在线阅读,更多相关《数据库系统原理关系数据模型.ppt(39页珍藏版)》请在金锄头文库上搜索。
1、第2章 数据模型 2.1 E-R数据模型 2.2 层次数据模型 2.3 网状数据模型 2.4 关系数据模型 2.5 面向对象数据模型* 2.4 关系数据模型I.基本概念和定义 关系模型是以集合论中的关系(relation)概念为基础发展起来的数据模型。1. 关系的数学定义域域(domain): 域是一组具有相同数据类型的原子值的集合。记为D,D1,D2,Dn。例:Integer,Real,char10,0,1,M,Fn-元组元组(n-tuple):设D1,D2,Dn为一组域(其中允许重复),则称(d1,d2,dn)(di Di,i=1,2,n)为一个n-元组,并称di为(d1,d2,dn)的第
2、i个分量。笛卡儿乘积笛卡儿乘积(Cartsian product):设D1,D2,Dn为一组域(其中允许重复),则称定义在D1,D2,Dn上的所有n-元组构成的集合为D1,D2,Dn的笛卡儿乘积,记为: D1D2Dn(d1,d2,dn)diDj,j1,2,n2.4 关系数据模型1.关系的数学定义(续) 定义定义1(关系关系):设D1,D2,Dn为一组域(其中允许重复),则称D1,D2,Dn的笛卡儿乘积的任意一个子集R为定义在D1,D2,Dn上的一个(n-元)关系。记为:R(D1,D2,Dn),这里R表示关系名,n是关系的目或度(Degree)。 由于上述定义中的D1,D2,Dn允许出现重复,为
3、避免二义性引入下列定义: 定义定义2(关系模式关系模式):关系的描述称为关系模式(Relation Schema)。一个关系模式是一个五元组。它可以形式化地表示为:R(U, D, DOM, F)。其中R为关系名,U为组成该关系的属性名集合,D为属性组U中属性所来自的域,DOM为属性向域的映象集合,F为属性间数据的依赖关系集合。 定义定义3 (关系关系) :给定一个(n-元)关系模式R(A1/Dom(A1),A2/Dom(A2),An/Dom(An),则称Dom(A1), Dom(A2),Dom(An)的笛卡儿乘积上的任意一个子集r(R)为定义在关系模式R(A1,An)上的一个(n-元)具体关系
4、。2.4 关系数据模型关系实际上就是关系模式在某一时刻的状态或内容。也就是说,关系模式是型,关系是它的值。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。但在实际当中,常常把关系模式和关系统称为关系,读者可以从上下文中加以区别。 例: ifcustomer-name = Jones, Smith, Curry, Lindsaycustomer-street = Main, North, Parkcustomer-city = Harrison, Rye, PittsfieldThen r = (Jones, Main, Harrison),
5、 (Smith, North, Rye), (Curry, North, Rye), (Lindsay, Park, Pittsfield) 其中,r是基于上述三个域上的一个具体关系。2.4 关系数据模型2. 关系的直观描述直观的看,关系是一个由若干“行”(row)和“列”(column)构成的“二维表”,例如:JonesSmithCurryLindsaycustomer-nameMainNorthNorthParkcustomer-streetHarrisonRyeRyePittsfieldcustomer-citycustomer属性attributes元组tuples2.4 关系数据模型
6、3.键超键(super key):如果一组属性K可以唯一标识R中的每一个元组,则称K是R的超键。候选键(candidate key):如果一组属性K是最小的超键,则称K是R的候选键。主键(primary key):若一个关系有多个候选键,则选定其中一个为主键。次键(alternate key):主键以外的其他候选键称为次键全键(all key):在最简单的情况下, 侯选码只包含一个属性。 在最极端的情况下,关系模式的所有属性组是这个关系模式的侯选码,称为全键(All-key)。 2.4 关系数据模型3.键(续)主属性(prime attribute):包含在主码中的诸属性称为主属性 。非主属性
7、(non-prime attribute):不包含在任何侯选码中的属性称为非码属性。 外键(foreign key):设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外键(Foreign key)。4.关系的类型基本关系(通常又称为基本表或基表):是实际存在的表,它是实际存储数据的逻辑表示。 查询表:是查询结果对应的表。 视图表:是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据 。2.4 关系数据模型5.基本关系的性质列是同质的(Homogeneous),即每一列中的分量是同一类型的数据,来自同一个域。不同的列可出自同一个
8、域,称其中的每一列为一个属性,不同的属性要给予不同的属性名。列的顺序无关紧要,即列的次序可以任意交换。任意两个元组不能完全相同。但在大多数实际关系数据库产品中,例如ORACLE、FoxPro等,如果用户没有定义有关的约束条件,它们都允许关系表中存在两个完全相同的元组。行的顺序无关紧要,即行的次序可以任意交换。分量必须取原子值,即每一个分量都必须是不可分的数据项。 2.4 关系数据模型II.约束1. 域完整性约束(domain integrity constraint)规则2.1(域完整性约束规则) :任何属性只能取其域中的值。2. 实体完整性约束(entity integrity constr
9、aint) 规则2.2( 实体完整性规则):若属性A是基本关系R的主属性,则属性A不能取空值。说明: 一个基本关系通常对应现实世界的一个实体集。例如学生关系对应于学生的集合。现实世界中的实体是可区分的,即它们具有某种唯一性标识。相应地,关系模型中以主码作为唯一性标识。主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“无意义”的值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与现实世界的应用环境相矛盾,因此这个实体一定不是一个完整的实体。 2.4 关系数据模型II.约束(续)3.参照完整性约束(referential integrity constraint)
10、 规则2.3( 参照完整性规则):若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须: 或者取空值(F的每个属性值均为空值); 或者等于S中某个元组的主码值。 4.用户定义的完整性约束(user defined integrity constraint) 用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。2.4 关系数据模型III.关系运算关系运算采
11、用集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一集合的方式 。关系模型中常用的关系操作包括二类:1)查询操作-选择、投影、连接、除、并、交、差等。 2)增、删、改操作。 表达(或描述)关系操作的关系数据语言可以分为三类:1)关系代数:是用对关系的运算来表达查询要求的方式。2)关系演算:是用谓词来表达查询要求的方式。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。关系代数、元组关系演算和域关系演算三种语言在表达能力上是完全等价的。 3)介于关系代数和关系演算之间的语言SQL(Standard Query Language)2.4 关系数据模型
12、IV.关系代数 关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。 关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符(, , )专门的关系运算符(, , , | 5 (r)ABCD123710选择操作示例(2)设有一个学生-课程关系数据库,包括学生关系Student、课程关系Course和选修关系SC。下面的许多例子将对这三个关系进行运算。例1 查询信息系(IS系)全体学生 Sdept=IS(Student) 或 5=IS(Student) 例2 查询年龄小于20岁的元组 Sage20(Student) 或420(Stu
13、dent) 2.4 关系数据模型2)投影(Projection)关系R上的投影是从R中选择出若干属性列组成新的关系。记作: A(R) = tA | tR 其中A为R中的属性列。投影举例(1)例3 查询学生关系Student在学生姓名和所在系两个属性上的投影 Sname,Sdept(Student) 或 2,5(Student) 例4 查询学生关系Student中都有哪些系,即查询学生关系Student在所在系属性上的投影 Sdept(Student) 投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行。投影操作示例(2)
14、Relation r:ABC102030401112AC1112=AC112A,C (r)2.4 关系数据模型3)连接(Join) 连接也称为连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作: 其中A和B分别为R和S上度数相等且可比的属性组。是比较运算符。连接运算从R和S的笛卡尔积RS中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组。 连接运算中有两种最为重要也最为常用的连接,一种是等值连接(equi-join),另一种是自然连接(Natural join)。 为“”的连接运算称为等值连接。它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组
15、。即等值连接为:2.4 关系数据模型3)连接(Join)自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。即若R和S具有相同的属性组B,则自然连接可记作: 一般的连接操作是从行的角度进行运算。但自然连接还需要取消了重复列,所以是同时从行和列的角度进行运算。自然连接操作示例Relations r, s:AB12412CDaababB13123DaaabbErAB11112CDaaaabEsr s2.4 关系数据模型4) 除(Division)给定关系R(X,Y)和S(Y,Z),其中X, Y, Z为属性组。R
16、中的Y与S中的Y;可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作: RS = tX|tR Yx Y(S) 其中Yx为x在R中的象集,x=tX。除操作示例Relations r, s:r s:BA12AB12311134612rs另一除操作示例ABaaaaaaaaCDaabababbE11113111Relations r, s:r s:DabE11ABaaCrs除操作(续)特性:设 q =r s则q是满足q x s r 的最大关系。按照基本代数操作的定义,令
17、r(R)和s(S)为关系,且S R 。则有:r s = R-S (r) R-S ( (R-S (r) x s) R-S,S(r)原因是:R-S,S(r)只是对r的属性重排序。R-S(R-S (r) x s) R-S,S(r) 所指的是R-S (r)中的元组t,其中有些元组u s, tu r 。组合操作使用多个操作构成表达式。Can build expressions using multiple operations示例:Example: A=C(r x s)r x sA=C(r x s)AB11112222CD 1019201010102010EaabbaabbABCDE122102020a
18、ab外连接(outer join)连接操作的扩展,可以避免信息的丢失。按正常方式作连接,只有符合连接条件的所谓匹配元组才出现在在结果中;而不满足连接条件的非匹配元组则不出现在结果中。外连接与普通连接的区别在于保留非匹配元组,而在其空缺部分填以NULL。共有三种外连接:左外连接: 在连接结果中保留左关系的所有元组右外连接 在连接结果中保留右关系的所有元组全外连接 在连接结果中保留左右两个关系的所有元组外连接示例Relation loanloan-numberamountL-170L-230L-260300040001700nRelation borrowercustomer-nameloan-n
19、umberJonesSmithHayesL-170L-230L-155branch-nameDowntownRedwoodPerryridge外连接示例内连接内连接loan Borrowerloan borrower 左外连接左外连接loan-numberamountL-170L-23030004000customer-nameJonesSmithbranch-nameDowntownRedwoodloan-numberamountL-170L-230L-260300040001700customer-nameJonesSmithnullbranch-nameDowntownRedwoodPe
20、rryridge2.4 关系数据模型V.元组关系演算非过程化查询语言,其查询形式如下: t | P (t) 元组t的集合,条件是对于所有元组t,都满足谓词P。t是元组变量,tA表示元组t在属性A上的值。t r 表示元组t在关系r中。P 是与谓词演算相似的公式。2.4 关系数据模型VI.谓词演算公式1.属性和常量集合2.比较运算符集合(e.g., , , , , , )3.逻辑连接符集合(e.g., and (), or (v) not ()4.蕴含(): x y,如果x为真,则y为真 x y x v y 5.量词集合:6.t r (Q(t) 关系r中“存在”着元组t,使得谓词Q(t)为真。7.
21、t r (Q(t) 关系r中的所有元组t都使Q为真。2.4 关系数据模型VIII.元组演算表达式的安全性可以得到产生无限关系的元组演算表达式。例如, t | t r 在关系r的属性域无限的情况下,就是无限的关系。为防止这一问题,要对允许的表达式集合进行限制,使其任命安全表达式的要求。要使表达式t | P(t)在元组关系演算下为安全的,则必须使t的各组成部分都在P的某个关系中、元组中,或者常量中。2.4 关系数据模型VII.域关系演算1.非过程化查询语言,与元组关系演算等效。2.查询的表达形式如下: x1, x2, , xn | P(x1, x2, , xn)vx1, x2, , xn 表示域变量。vP 表示与谓词演算相似的公式。