
数据库系统原理关系数据模型.ppt
39页第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,char[10],{0,1},{M,F}•n-元组元组(n-tuple):设D1,D2,…,Dn为一组域(其中允许重复),则称(d1,d2,…,dn)(di∈ Di,i=1,2,…,n)为一个n-元组,并称di为(d1,d2,…,dn)的第i个分量•笛卡儿乘积笛卡儿乘积(Cartsian product):设D1,D2,…,Dn为一组域(其中允许重复),则称定义在D1,D2,…,Dn上的所有n-元组构成的集合为D1,D2,…,Dn的笛卡儿乘积,记为: D1×D2×…×Dn={(d1,d2,…,dn)|di∈Dj,j=1,2,…,n}2.4 关系数据模型1.关系的数学定义(续)• 定义定义1(关系关系):设D1,D2,…,Dn为一组域(其中允许重复),则称D1,D2,…,Dn的笛卡儿乘积的任意一个子集R为定义在D1,D2,…,Dn上的一个(n-元)关系。
记为:R(D1,D2,…,Dn),这里R表示关系名,n是关系的目或度(Degree) 由于上述定义中的D1,D2,…,Dn允许出现重复,为避免二义性引入下列定义:• 定义定义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-元)具体关系2.4 关系数据模型•关系实际上就是关系模式在某一时刻的状态或内容也就是说,关系模式是型,关系是它的值关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据但在实际当中,常常把关系模式和关系统称为关系,读者可以从上下文中加以区别。
•例: ifcustomer-name = {Jones, Smith, Curry, Lindsay}customer-street = {Main, North, Park}customer-city = {Harrison, Rye, Pittsfield}Then r = { (Jones, Main, Harrison), (Smith, North, Rye), (Curry, North, Rye), (Lindsay, Park, Pittsfield)} 其中,r是基于上述三个域上的一个具体关系2.4 关系数据模型2. 关系的直观描述直观的看,关系是一个由若干“行”(row)和“列”(column)构成的“二维表”,例如:JonesSmithCurryLindsaycustomer-nameMainNorthNorthParkcustomer-streetHarrisonRyeRyePittsfieldcustomer-citycustomer属性attributes元组tuples2.4 关系数据模型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):包含在主码中的诸属性称为主属性 –非主属性(non-prime attribute):不包含在任何侯选码中的属性称为非码属性 –外键(foreign key):设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外键(Foreign key)4.关系的类型–基本关系(通常又称为基本表或基表):是实际存在的表,它是实际存储数据的逻辑表示 –查询表:是查询结果对应的表 –视图表:是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据 2.4 关系数据模型5.基本关系的性质①列是同质的(Homogeneous),即每一列中的分量是同一类型的数据,来自同一个域。
②不同的列可出自同一个域,称其中的每一列为一个属性,不同的属性要给予不同的属性名③列的顺序无关紧要,即列的次序可以任意交换④任意两个元组不能完全相同但在大多数实际关系数据库产品中,例如ORACLE、FoxPro等,如果用户没有定义有关的约束条件,它们都允许关系表中存在两个完全相同的元组⑤行的顺序无关紧要,即行的次序可以任意交换⑥分量必须取原子值,即每一个分量都必须是不可分的数据项 2.4 关系数据模型II.约束1. 域完整性约束(domain integrity constraint)规则2.1(域完整性约束规则) :任何属性只能取其域中的值2. 实体完整性约束(entity integrity constraint) 规则2.2( 实体完整性规则):若属性A是基本关系R的主属性,则属性A不能取空值•说明: 一个基本关系通常对应现实世界的一个实体集例如学生关系对应于学生的集合现实世界中的实体是可区分的,即它们具有某种唯一性标识相应地,关系模型中以主码作为唯一性标识主码中的属性即主属性不能取空值所谓空值就是“不知道”或“无意义”的值如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与现实世界的应用环境相矛盾,因此这个实体一定不是一个完整的实体。
2.4 关系数据模型II.约束(续)3.参照完整性约束(referential integrity constraint) 规则2.3( 参照完整性规则):若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须: •或者取空值(F的每个属性值均为空值); •或者等于S中某个元组的主码值 4.用户定义的完整性约束(user defined integrity constraint) 用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能2.4 关系数据模型III.关系运算•关系运算采用集合操作方式,即操作的对象和结果都是集合这种操作方式也称为一次一集合的方式 •关系模型中常用的关系操作包括二类:1)查询操作--选择、投影、连接、除、并、交、差等 2)增、删、改操作 •表达(或描述)关系操作的关系数据语言可以分为三类:1)关系代数:是用对关系的运算来表达查询要求的方式。
2)关系演算:是用谓词来表达查询要求的方式关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算关系代数、元组关系演算和域关系演算三种语言在表达能力上是完全等价的 3)介于关系代数和关系演算之间的语言SQL(Standard Query Language)2.4 关系数据模型IV.关系代数 –关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具 –关系代数的运算对象是关系,运算结果亦为关系关系代数用到的运算符包括四类:•集合运算符(∪, -, ∩)•专门的关系运算符(×, σ, Π, |><|,÷,)•算术比较符•逻辑运算符–比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的,所以关系代数的运算按运算符的不同主要分为传统的集合运算和专门的关系运算两类2.4 关系数据模型IV.关系代数(续) 为了叙述上的方便,我们先引入几个记号 1.设关系模式为R(A1, A2, …, An)它的一个关系设为Rt∈R表示t是R的一个元组t[Ai]则表示元组t中相应于属性Ai的一个分量 2.若A={Ai1, Ai2, …, Aik},其中Ai1, Ai2, …, Aik是A1, A2, …, An中的一部分,则A称为属性列或域列。
フA则表示{A1, A2, …, An}中去掉{Ai1, Ai2, …, Aik}后剩余的属性组t[A]=(t[Ai1], t[Ai2], …, t[Aik])表示元组t在属性列A上诸分量的集合3.R为n目关系,S为m目关系 称为元组的连接(Concatenation)它是一个(n+m)列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组 4.给定一个关系R(X,Z),X和Z为属性组我们定义,当t[X]=x时,x在R中的象集(Images Set)为:Zx={t[Z]|t∈R, t[X]=x} 它表示R中属性组X上值为x的诸元组在Z上分量的集合 2.4 关系数据模型4.传统的集合运算1) 并(Union)设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,则关系R与关系S的并由属于R或属于S的元组组成其结果关系仍为n目关系记作: R∪S={t|t∈R∨t∈S} 2)差(Difference)设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S的差由属于R而不属于S的所有元组组成。
其结果关系仍为n目关系记作: R-S={t|t∈R∧フt∈S}3)交(Intersection Referential integrity)设关系R和关系S具有相同的目n,且相应的属性取自同一个域,则关系R与关系S&127;的交由既属于R又属于S的元组组成其结果关系仍为n目关系记作: R∩S={t|t∈R∧t∈S}并操作示例•Relations r, s: r s:AB121AB23rsAB1213集合差操作示例•Relations r, s:r – s:AB121AB23rsAB11集合交操作示例•Relation r, s:•r sA B121A B23rsA B 22.4 关系数据模型4.传统的集合运算4) 广义笛卡尔积(Extended cartesian product)两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合元组的前n列是关系R的一个元组,后m列是关系S的一个元组。
若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1×k2个元组记作: 笛卡尔积操作示例Relations r, s:r x s:AB12CD10102010EaabbAB11112222CD 1019201010102010Eaabbaabbrs2.4 关系数据模型5.专门的关系运算1)选择(Selection)选择又称为限制(Restriction)它是在关系R中选择满足给定条件的元组,记作: σF(R) = {t|t∈R ∧ F(t)='真'} 其中F表示选择条件,它是一个逻辑表达式,取逻辑值‘真’或‘假’ 逻辑表达式F的基本形式为: X1 θ Y1 [ φ X2 θ Y2 ]θ表示比较运算符,它可以是>、≥、<、≤、=或≠X1、Y1等是属性名或常量或简单函数属性名也可以用它的序号来代替φ表示逻辑运算符,它可以是フ、∧或∨[ ]表示任选项,即[ ]中的部分可以要也可以不要,...表示上述格式可以重复下去 因此选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。
这是从行的角度进行的运算 选择操作示例(1)•Relation rABCD15122377310•A=B ^ D > 5 (r)ABCD123710选择操作示例(2)•设有一个学生-课程关系数据库,包括学生关系Student、课程关系Course和选修关系SC下面的许多例子将对这三个关系进行运算•例1 查询信息系(IS系)全体学生 σSdept='IS'(Student) 或 σ[5]='IS'(Student) •例2 查询年龄小于20岁的元组 σSage<20(Student) 或σ[4]<20(Student) 2.4 关系数据模型2)投影(Projection)关系R上的投影是从R中选择出若干属性列组成新的关系记作: ΠA(R) = { t[A] | t∈R } 其中A为R中的属性列•投影举例(1)例3 查询学生关系Student在学生姓名和所在系两个属性上的投影 ΠSname,Sdept(Student) 或 Π2,5(Student) 例4 查询学生关系Student中都有哪些系,即查询学生关系Student在所在系属性上的投影 ΠSdept(Student) •投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行。
投影操作示例(2)•Relation r:ABC102030401112AC1112=AC112•A,C (r)2.4 关系数据模型3)连接(Join)• 连接也称为θ连接它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组记作: 其中A和B分别为R和S上度数相等且可比的属性组θ是比较运算符连接运算从R和S的笛卡尔积R×S中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系θ的元组 • 连接运算中有两种最为重要也最为常用的连接,一种是等值连接(equi-join),另一种是自然连接(Natural join) θ为“=”的连接运算称为等值连接它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组即等值连接为: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中的Y与S中的Y;可以有不同的属性名,但必须出自相同的域集R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合记作: R÷S = {tr[X]|tr∈R ∧ Yx ΠY(S) } 其中Yx为x在R中的象集,x=tr[X]除操作示例Relations r, s:r s:BA12AB12311134612rs另一除操作示例ABaaaaaaaaCDaabababbE11113111Relations r, s:r s:DabE11ABaaCrs除操作(续)•特性:–设 q =r s–则q是满足q x s r 的最大关系。
–按照基本代数操作的定义,令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 s•A=C(r x s)AB11112222CD 1019201010102010EaabbaabbABCDE122102020aab外连接(outer join)•连接操作的扩展,可以避免信息的丢失•按正常方式作连接,只有符合连接条件的所谓匹配元组才出现在在结果中;而不满足连接条件的非匹配元组则不出现在结果中•外连接与普通连接的区别在于保留非匹配元组,而在其空缺部分填以NULL共有三种外连接:–左外连接: 在连接结果中保留左关系的所有元组–右外连接 在连接结果中保留右关系的所有元组–全外连接 在连接结果中保留左右两个关系的所有元组外连接示例§Relation loanloan-numberamountL-170L-230L-260300040001700nRelation borrowercustomer-nameloan-numberJonesSmithHayesL-170L-230L-155branch-nameDowntownRedwoodPerryridge外连接示例•内连接内连接loan Borrowerloan borrower• 左外连接左外连接loan-numberamountL-170L-23030004000customer-nameJonesSmithbranch-nameDowntownRedwoodloan-numberamountL-170L-230L-260300040001700customer-nameJonesSmithnullbranch-nameDowntownRedwoodPerryridge2.4 关系数据模型V.元组关系演算•非过程化查询语言,其查询形式如下: {t | P (t) }•元组t的集合,条件是对于所有元组t,都满足谓词P。
•t是元组变量,t[A]表示元组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.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 表示与谓词演算相似的公式。
