数据库-02-关系模型.ppt_第1页
数据库-02-关系模型.ppt_第2页
数据库-02-关系模型.ppt_第3页
数据库-02-关系模型.ppt_第4页
数据库-02-关系模型.ppt_第5页
已阅读5页,还剩100页未读 继续免费阅读

下载本文档

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

文档简介

1、第二章 关系模型和关系运算理论,关系数据库系统大事记 1970年6月,E.F.Code在Communication of the ACM上发表题为“A Relational Model of Data for Large Shared Data Banks”一文,首次明确而清晰地为数据库系统提出了一种崭新的模型,即关系模型。随后他又连续发表了多篇论文,奠定了关系数据库的理论基础。 1973年IBM 研究中心启动关系数据库实验系统System R 项目,并于70年代末在IBM370系列机上获得成功。 1977 年,美国加州大学柏克利分校开始研制INGRES关系数据库实验系统,于1985获得成功。

2、 三十多年来涌现出许多关系数据库管理系统(RDBMS),著名的有:DB2,Oracle,Informix, Sybase,SQL Server,PostGreSQL等。,关系模型概述,关系模型的数据结构关系(二维表),关系数据结构的特点:实体和联系都用关系这种单一的数据结构来实现。,表2-1 学生表(S),关系数据结构,关系数据结构非常简单,在关系数据模型中,现实世界中的实体及实体与实体之间的联系均用关系来表示。从逻辑或用户的观点来看,关系就是二维表。,关系模型概述,并(Union) 交(Intersection) 差(Difference) 广义笛卡尔积 选择(Select) 投影(Proj

3、ect) 连接(Join) 除(Divide),插入(Insert) 删除(Delete) 修改(Update),关系模型的数据结构关系(二维表) 关系的操纵:,关系操作的特点: 操作对象和操作结果都是集合。,关系是以集合的方式操作的,即操作的对象是元组的集合,操作的结果也是元组的集合。这和非关系模型的操作结果是一条记录有着重要区别。 关系的操作能力可以用代数方式和逻辑方式来表示:,代数方式是通过关系代数对关系的运算来表达查询要求的方式。 逻辑方式是通过关系演算、用谓词表达对关系查询要求的方式。 现在关系数据库已经有了标准语言SQL(Structured Query Language),它是一

4、种介于关系代数和关系演算的语言。,关系模型概述,关系语言 关系代数 元组演算 域演算 SQL 关系语言特点: 关系语言是一种高度非过程化的语言 关系语言是完备的 关系代数、元组关系演算和域关系演算三种语言在表达能力上完全等价,关系查询语言,关系代数语言:查询操作是以集合操作作为基础的语言 关系演算语言:查询操作是以谓词演算作为基础的语言,关系查询语言是一种比Pascal、C等程序设计语言更高级的语言。 Pascal、C一类语言属于过程性语言,在编程时必须给出获得结果的操作步骤。 而关系查询语言属于非过程性语言,编程时只需要指出需要什么信息,不必给出具体的操作步骤。,干什么? 怎么干?,干什么?

5、,关系查询语言和关系运算,关系完整性约束,在数据库中数据完整性是指保证数据正确的特性。它包括两方面的内容: 与现实世界中应用需求的数据的相容性和正确性; 数据库内数据之间的相容性和正确性。 在关系数据模型中一般将数据完整性分为三类 实体完整性 参照完整性 用户定义完整性,关系的形式化定义,关系的定义 域(Domain):一组具有相同数据类型的值的集合。如整数、字符串等。 笛卡尔积(Cartesian Product):给定一组域D1,D2,Dn(可相同), D1,D2,Dn上的笛卡尔积为: D1 D2 Dn(d1,d2,dn)|di=1,2,n (d1,d2,dn)称为一个元组(Tuple)

6、di叫作元组(d1,d2,dn)的第i 个分量(component) 关系(Relation): D1 D2 Dn的一个子集叫做域D1,D2,Dn上的关系。 定义在n个域上的关系称为n元关系。,域中所包含的值的个数称域的基数(用m表示),例:D1=A , 2 , 3 , , Q , k M1= 13 M2= 4,D3=数据库原理,面向对象数据库技术 M3=2,设有域,,则笛卡尔积,D1= A , 2 , 3 , , Q , k ,,关系的数学定义,基数 : 134 = 52,笛卡尔积可表示为一个二维表. 表中的每行对应一个元组,表中的每列对应一个域。,例,关系的形式化定义,给定域name=王小

7、明 ,李莉,sex=男、女,则name sex=(王小明,男),(王小明,女),(李莉,男)(李莉,女)。 笛卡尔积的结果中有许多元组是无意义的,可以认为其中有意义的元组构成关系,为实际的二维表。,关系数学定义,例,例:设 D1=男人集合(MAN) = 王强、李东、张兵 D2 =女人集合(WOMAN) = 赵红、吴芳 D3=儿童集合(CHILD) = 王一、李一、李二 (1)求上面三个集合的笛卡儿积,(2)构造一个家庭关系,可表示为: FAMILY(MAN,WOMAN,CHILD),关系的形式化定义,几个概念: 候选码(Candidate Key):能唯一标识元组的最小属性(组)。 主码(Pr

8、imary Key):多个候选码中选定一个作主码。 主属性(Prime Attribute):候选码中的诸属性。 非主属性(Non-Key Attribute):不出现在任何候选码中的属性。,关系模型的基本术语,关系的形式化定义,关系的型与值 关系(表)的型:关系的结构(字段名、字段个数、域等) 关系(表)的值:关系中具体的元组,也称关系的实例(Instance)。 关系模式(Relation Schema)即关系的型的定义,关系模式通常简记为:R(U),关系的完整性约束,关系的完整性约束是对关系的正确性限定,通常是与关系所表达的实际数据约束相对应。 关系的完整性分为实体完整性、参照完整性和用

9、户定义完整性。 实体完整性规则(Entity Integrity) 若属性A是基本关系R的主属性,则属性A不能取空值。 关系模型必须遵守实体完整性规则的原因 (1) 实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界的一个实体集或多对多联系。 (2) 现实世界中的实体和实体间的联系都是可区分的,即它们具有某种唯一性标识。相应地,关系模型中以主码作为唯一性标识。 (3) 空值就是“不知道”或“无意义”的值。主属性取空值,就说明存在某个不可标识的实体,这与第(2)矛盾。,关系的完整性约束,几个概念 设F是基本关系R的一个或一组属性但不是关系R的码。如果F与基本关系S的主码Ks相对应,则

10、称F是基本关系R的外码。基本关系R称为参照关系(Referencing Relation),基本关系S称为被参照关系(Referenced Relation)或目标关系(Target Relation)。 例:S(sno,sname,sex,age,sdep)被参照关系 C(cno,cname,credit,Pno) 参照关系,被参照关系 SC(sno,cno,grade)参照关系 说明 关系R和S不一定是不同的关系 目标关系S的主码Ks 和参照关系的外码F必须定义在同一个(或一组)域上 外码并不一定要与相应的主码同名,当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别,关系的完整

11、性约束,参照完整性规则(Referential Integrity) 若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: 或者取空值(F的每个属性值均为空值) 或者等于S中某个元组的主码值。 例:课程关系C(cno,cname,credit,Pno)中的Pno表示先修课程的课程号,应该取下面两类值: (1)空值(NULL),表示该课程没有先修课 (2)非空值,这时该值必须课程表中已有的课程的课程号,而不能是一个不存在的课程 在CS表中,Sno只能取S表中存在的学号,Cno也只能取已存在的课程号,但两者

12、都不能取空值。,关系的完整性约束,用户定义完整性(User-defined Integrity) 用户定义的完整性是针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求。如性别只能取“男”、“女”值,成绩必须在0100分之间。 关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。通常由RDBMS的Check约束提供这类检查。,完整性约束的作用,执行插入操作时检查完整性 执行插入操作时需要分别检查实体完整性规则、参照完整性规则和用户定义完整性规则。 执行删除操作时检查完整性 执行删除操作时一般只需要检查参照完整性规则

13、。 执行更新操作时检查完整性 执行更新操作可以看作是先删除旧的元组,然后再插入新的元组。所以执行更新操作时的完整性检查综合了上述两种情况。,例:,关系的数学定义,学生:S(S#,SNAME,SA,SD) 课程:C(C#,CNAME,PC#) 选课:SC(S#,C#,GR) S: 候选码:S#,SNAME;主码:S# C: 候选码:C#; 主码:C# SC: 候选码:(S#,C#); 主 码:(S#,C#); 外部码: S#,C#,关系代数,关系代数(Relational Algebra):以集合为基础,定义一组运算,由已知关系经过一列运算,得到需要的查询结果。 关系代数是过程化的查询语言。 关

14、系代数继承传统的集合运算:并()、交()、差()、广义笛卡尔积()。其中并、交、差要求参与运算的两个关系要有相同的结构。 将关系看成元组的集合 运算是从关系的“水平”方向即行的角度来进行,关系代数,相关表述记号, 设关系模式为R(A1, A2, , An)。它的一个关系设为R。 tR表示t是R的一个元组。tAi则表示元组t中相应于属性Ai的一个分量 。, 若A=Ai1, Ai2, , Aik,其中Ai1, Ai2, , Aik是A1, A2, , An中的一部分, 则A称为属性列或域列。 tA=(tAi1, tAi2, , tAik)表示元组 t 在属性 列A上诸分量的集合。则 表示A1, A

15、2, , An中去掉 Ai1, Ai2, , Aik 后剩余的属性组。,关系代数,相关表述记号, 给定一个关系R(X,Z),X和Z为属性组。我们定义,当tX=x时,x在R中 的象集(Images Set)为: Zx= tZ|tR, tX=x 它表示R中属性组X上值为x的诸元组在Z上分量的集合。,关系代数,关系上的传统集合运算 并:RS = t | t Rt S 差:R S = t | tRtS 交:RS = t | t Rt S RS = R ( R S ) 广义笛卡尔积:RS (其中R为k1行n列,S为k2行m列) 列:(n+m)列的元组的集合 元组的前n列是关系R的一个元组 后m列是关系S

16、的一个元组 行:k1k2个元组,关系代数,传统的集合运算举例,RS,RS,传统的集合运算,关系代数,交运算,R1R2,设关系R和关系S具有相同的目n,且相应的属性取自同一个域, 则关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍 为n目关系。记作: RS=t|tRtS,关系代数-广义笛卡尔积,R S,关系代数,专门的关系运算 选择() 含义:在关系R中选择满足给定条件的诸元组 F(R) = t | tRF(t)= 真 其中: F:选择条件,是一个逻辑表达式,基本形式为: ( X1Y1 ) ( X2Y2 ) :比较运算符(,或) X1,Y1等:属性名、常量、简单函数;属性名也可以用它

17、的序号来代替; :逻辑运算符(或) :表示任选项 :表示上述格式可以重复下去,关系代数,选择运算的直观意义:,选择运算是从关系中选取使公式为真的元组。这是从行的角度进行的运算。,在关系R中选择满足给定条件的元组,记做: F (R) = t | t R F(t)=真 F是一个公式,表示形式为由逻辑运算符(,)连接各算术表达式组成。 算术表达式的基本形式为:XY. =, , ,=, 。,例1 求计算机科学系CS的学生, SD=CS (S), SD=CS (S),选择运算,在关系R中选择满足给定条件的元组,记做: F (R) = t | t R F(t)=真 ,例2 求计算机科学系CS,年龄不超过2

18、1岁的学生。, SD=CS SA21 (S),选择运算,关系代数,投影() 含意:从R中选择出若干属性列组成新的关系 A(R) = tA | t R A:R中的属性列的集合 投影操作主要是从列的角度进行运算 投影运算的直观意义:,注:但投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组(避免重复行),投影运算,这是从列的角度进行的运算。,例3 SN,SD (S) 即求得学生关系S在学生姓名和所在系这两个属性上的投影结果。,SN,SD (S),关系R上的投影是从R中选择若干属性列组成新的关系。记做: A (R) = tA | t R 投影之后不仅取消了某些列,还可能取消某些元组。,关系代

19、数,投影举例,关系代数,例:学生表Student如下,(1) 查询信息系(IS系)全体学生 Sdept = IS (Student) 或 5 =IS (Student) (2) 查询年龄小于20岁的学生 Sage 20(Student) 或 4 20(Student),关系代数,(3) 查询学生的姓名和所在系 即求Student关系上学生姓名和所在系两个属性上的投影 Sname,Sdept(Student) 或 2,5(Student) (4)查询学生关系Student中都有哪些系 Sdept(Student) 或 5(Student),例:学生表Student如下,关系代数,连接( ),含义

20、: 从两个关系的笛卡尔积中选取属性间满足一定条件的元组。,A和B:分别为R和S上度数相等且可比的属性组 :比较运算符 连接运算从R和S的广义笛卡尔积RS中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组。 带有比较运算符的连接运算称为连接。,关系代数,连接操作是从行和列的角度进行运算,自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。,关系代数,例:, 连接解题思路: 确定结果中的属性列 确定参与比较的属性列 逐一取R中的元组分别和S中与其符合比较关系的元组进行拼接。,关系代数,两类常用连接运算 等值连接(equi-join) 什么是等值连接 为“”的连接运

21、算称为等值连接 等值连接的含义 从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:,等值连接,例5 设关系R、S如下图:,连接运算中有两种最为重要也最为常用的连接,,为“”的连接运算称为等值连接:,关系代数,等值连接解题思路: 确定结果中的属性列 确定参与运算的关系的公共属性列(同名属性区分) 逐一取R中的元组分别和S中与其公共属性组取值相同的元组拼接。,例:,关系代数,自然连接(Natural join) 什么是自然连接 自然连接是一种特殊的等值连接 两个关系中进行比较的分量必须是同名的属性(组) 在结果中把重复的属性列去掉 自然连接的含义 R和S具有相同的属性组B,

22、关系代数,例:,自然连接解题思路: 确定结果中的属性列 确定参与运算的关系的公共属性列(同名属性取其一) 逐一取R中的元组分别和S中与其公共属性组取值相同的元组拼接。,关系代数,S:,D:,意义:将两个有关联的表合成为一张有意义的表。,半连接,在R、S自然连结后仅保留对R的属性的投影,记为:,例7 关系R、S的半连结:,左外连结: 对R中任意元组,若S中找不到匹配的元组, 则S用空元组与之对应。R的信息在左外连结的结果中都得到保留。,左外连接,在R、S自然连结时对不匹配的元组用空值来匹配。有左外连结、右外连结和全外连结,例8 关系EMP、SAL的左外连结:,右外连结: 对S中任意元组,若R中找

23、不到匹配的元组, 则R用空元组与之对应。S的信息在右外连结的结果中都得到保留。,右外连接,例9 关系EMP、SAL的右外连结:,全外连结: 对R或S中所有不匹配的元组,均用空元组分 别匹配。R、S的信息在全外连结的结果中都得到保留。,全外连接,例10 关系EMP、SAL的全外连结:,关系代数,象集Z:给定一个关系R(X,Z),X和Z为属性组。当 tX = x 时,x在R中的象集(Images Set)为:Zx= tZ | t R,tX = x,它表示R中属性组X上值为x的诸元组在属性组Z上分量的集合。 例:,关系代数,除(Division) 给定关系R (X,Y) 和S (Y,Z),其中X,Y

24、,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集(在没有特别指定属性组Y的情况下, Y通常是指公共属性组)。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。 RS = tr X | tr RY (S) Yx Yx:x在R中的象集,x = trX,Z,X,关系代数,除操作是同时从行和列角度进行运算,理解除法运算,R(X,Y)是被除关系 S(Y)是除关系 商关系由R中某些X属性值构成,其中的任一X值所对应的一组Y值都包含除关系S。 除运算常用于至少查询或运算,如何理解除运算?,除运算的

25、例子,它的含义是:至少向WH1、WH3、WH5供货的供应商号。,除运算,S在B、C上的投影,(b1,c2),(b2,c3),(b2,c1),RS = tX | tR Yx Y(S) ,RS a1,除运算,给定关系R(X,Y)和S(Y,Z),其中X, Y, Z为属性组。 RS = tX | tR Yx Y(S) 其中Yx为x在R中的象集,x=tX,T= x ( R ),P= y ( S ),Q= (TP)R,W= x ( Q ),RS = TW,RS = x ( R ) x ((Ty ( S ))R ),除运算,T= x ( R ),P= y ( S ),Q= (TP)R,W= x ( Q ),

26、RS = TW,R,S,关系代数,例:,RS,a1,关系代数,关系代数中所用到的各类符号:,关系代数表达式: 由关系的运算经过有限次的复合后形成的式子。,关系代数,关系代数综合举例: (本小节的所有查询均用到以下关系实例),关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade),关系代数,关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade),(SC),cno=c2,sno,grade,(1) 查询选

27、修了C2课程的学生学号和成绩。,关系代数,关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade),(1) 查询选修了C2课程的学生学号和成绩。,cno=c2, sno,sname,(3) 查询选修了数据库课程的学生学号、姓名和成绩。,(2) 查询选修了C2课程的学生学号和姓名。,cname=数据库( ),sno,sname,grade( ),关系代数,关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grad

28、e),(5) 查询选修了C2和C4课程的学生学号。,sno(cno=c2cno=c4 (SC),原因:没有哪一条记录会在一个属性列上取两个不同的值!,(4) 查询选修了C2或C4课程的学生学号。,cno=c2cno=c4 (SC),sno( ),关系代数,关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade),(4) 查询选修了C2或C4课程的学生学号。,(5) 查询选修了C2和C4课程的学生学号。,sno(cno=c2cno=c4 (SC),1(1=42=c2 5=c4 (SC SC),关系代数

29、,关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade),(6) 查询不学C2课的学生学号。,sno(S) sno(cno=c2 (SC),原因:如果该学生选c2课外还选了别的课,则非c2课的记录是符合条件的,此时会将该记录的学号置入结果集。 解决方法:先求出所有选c2课的学生,再从全体学生集合中减去这些学生。,Sno(SC)Sno (Cno =C2 (SC),关系代数,关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sn

30、o,cno,grade),(7) 查询c5课的先修课的先修课(课程号)。,4=5 (SC SC),1,8 (4=5 (SC SC),关系代数,关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade),(8) 查询选修全部课程的学生学号。,关系代数,关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade),(8) 查询选修全部课程的学生学号。, 运算的运算思路: 确定XYZ属性组 确定关系R、S,sno,c

31、no(SC), cno(C),关系代数,关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade),(9) 查询选修学号为“802”的学生所选全部课程的学生学号和姓名。,cno(sno=802 (SC),sno,cno(SC) ,sno,csname(S),( ),关系代数综合示例,设教学数据库中有三个关系: 学生关系S(S#,SNAME,SD, AGE ) 课程关系C(C#,CN, CP#) 学习关系SC(S#,C#,GRADE),例1 检索学习课程号为C2的学生学号与成绩,S# ,GRADE( C

32、# =C2 (SC), C# =C2 (SC),例2 检索学习课程号为C2的学生学号和姓名,例3 求选修数据库原理这门课程的学生名和所在系。,( S、C、SC ),例4 检索学习课程号为C2或C3的学生学号和所在系,例5 求至少选修C2和C3这两门课程的学生名。,解法2,解法3,K C# (S#=S2(SC),( S、C、SC ),例7 求选修全部课程的学生名。,例8 求至少选修了S2 所选课程的学生名。,S#(SC)S# (C# =C2 (SC),例6 求不学C2这门课程的学生名。,S#(S)S# (C# =C2 (SC), ,关系代数,关系代数总结 关系代数是在关系上定义一组运算,由已知关

33、系经过有限次地运算可以得到目标关系(查询)。,传统的集合运算: 并(Union) 交(Intersection) 差(Difference) 广义笛卡尔积 (Extended Cartesian Product),专门的关系运算: 选择(Select) 投影(Project) 连接(Join) 除(Divide),关系代数表达式应该建立在关系模式上,而不是某一特定的关系实例上满足。,关系代数,关系代数的五个基本运算: (完备的、全功能的) 、 、 关系代数的四个组合运算: (由基本运算复合而成) : RS = R (R S),: RS = tr X | tr RY (S) Yx x=trX R

34、S = X(R) X(X(R) Y(S) R ),关系代数,水平方向的运算: 、 、 垂直方向的运算: 混合运算:,关系代数表达式: 由关系的运算经过有限次的复合后形成的式子。,关系数据库,练习 已知关系R、W、D如下所示:,R:,W:,D:,给出下列关系的运算结果: 1) R1=Y, T (R) 2) R2= P5 T=e (R) 3) R3=R W 4) R4= 2, 1, 6 (3-5(R D) 5) R5=RD,关系演算,关系演算就是用谓词来描述关系的构成(查询的结果)。按照谓词变元的不同分为元组关系演算和域关系演算,分别简称为元组演算和域演算。 元组演算 t | ( t ) 称为元组

35、演算表达式。 其中:t 称为元组变量, ( t ) 称为元组演算公式,简称公式。 原子公式: (1). R( t ) R是关系名,t 是元组变量。 表示:t 是R中的元组。 (2). tiuj t,u为元组变量,为比较运算符。 表示:元组t的第i个分量与元组u的第j个分量之满足比较关系。 (3). tic 或 cti 其中c为常量。,关系演算,关系运算的安全性和等价性 安全运算:不产生无限关系和无穷验证的运算。 1.关系代数中无集合的补运算,是安全的。 2.形如uP(u)是无穷验证,在只涉及到关系的域上进行的关系演算是安全的。 等价性:关系代数、元组演算和域演算在表达和操作能力上是等价的。 几

36、种代表性语言 ISBL关系代数表达式(语言) QUEL元组演算表达式(语言) QBE域演算表达式(语言),小结,关系数据库系统是目前使用最广泛的数据库系统 关系数据库系统与非关系数据库系统的区别: 关系系统只有“表”这一种数据结构; 非关系数据库系统还有其他数据结构,以及对这些数据结构的操作,小结(续),关系数据结构 关系 域 笛卡尔积 关系 关系,属性,元组 候选码,主码,主属性 基本关系的性质 关系模式 关系数据库,小结(续),关系操作 查询 选择、投影、连接、除、并、交、差 数据更新 插入、删除、修改,小结(续),关系的完整性约束 实体完整性 参照完整性 外码 用户定义的完整性,小结(续

37、),关系数据语言 关系代数语言 关系演算语言 元组关系演算语言 ALPHA 域关系演算语言 QBE,下课了。,休息一会儿。,追 求,关系演算,元组演算公式( t ) )的归纳定义: 原子公式是公式; 1, 2 是公式,则1 , 12,12 ,12 是公式; 是公式,则t (),t () 是公式; 当且仅当有限次地运用以上规则构成的式子称为元组演算公式。 例:,R1= t | S(t) t12,关系演算,R2= t | R(t)S(t),R3= t | S(t)u(R(u)t3u2),R3= t | R(t)u(S(u) t3u1),关系演算,R5= t | u v(R(u)S(v)u1 v2t

38、1= u2t2= v3 t3= u1),解题步骤: 1.确定结果集的结构表, 2.根据元组演算公式中的限定条件构造元组填入表中。,关系演算,元组演算的等价规则: P1 P2 ( P1 P2 ) P1 P2 ( P1 P2 ) x ( P(x) x( P(x) x ( P(x) x( P(x) P1 P2 P1 P2,关系演算,元组演算综合举例: (本小节的所有查询均用到以下关系),关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade),关系演算,查询选修了C2课程的学生学号和成绩。,关系模式: S

39、(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade), t | ,u2=c2,u(SC(u) ),t1=u1t2=u3,(2) 查询选修了C2课程的学生学号和姓名。, t | uv(S(u) SC(v) ),t1=u1 t2=u2,u1=v1v2=c2,关系演算,(3) 查询选修了数据库课程的学生学号、姓名和成绩。,关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade),t | uvw(S(u)SC(v)C(w)

40、u1=v1 v2=w1 w2=“数据库“t1=u1t2=u2t3=v3),(4)查询选修了C2或C4课程的学生学号。,t | u (SC(u)(u2=c2u2=c4 ) t1=u1),关系演算,(5) 查询选修了C2和C4课程的学生学号。,关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade),t | u v (SC(u)SC(v)u1=v1u2=c2v2=c4 t1=u1),(6) 查询不学C2课的学生学号。,t |uv (S (u)SC(v)(u1=v1)v2c2) t1=u1),t |u v (S (u)SC(v)(u1=v1)v2=c2) t1=u1),关系演算,关系模式: S(sno,sname,ssex,sdep,sage) C(cno,cname,credit,cpno) SC(sno,cno,grade),(7) 查询选修了全部课程的学生姓名。,t|u(S(u)v(C(v)w(SC(w)w1=u1w2=v1) t1=u2),(8)查询选修学号为“802”的学生所选全部课程的学生学号。,t|u(SC(u)v(SC(v) v1=801 w(SC(w)w1=u1w2=v1) t1=u1),t|u v w(S(u)C(v)SC(w)w1=u1w2=v1)

温馨提示

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

评论

0/150

提交评论