数据库第2章关系数据库课件.ppt
关系数据库系统是支持关系模型的数据库系统关系模型的组成关系数据结构关系操作集合关系完整性约束,2.3 关系操作,关系操作集合,常用的关系操作 关系操作的特点 关系数据语言的分类 关系数据语言的特点,常用的关系操作,关系模型中常用的关系操作的分类数据查询操作(Data Query)选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、差(Except)、交(Intersection)、笛卡尔积等。数据更新操作(Data Change)插入(Insert)、删除(Delete)、修改(Update)基本操作:选择、投影、并、差、笛卡尔积是5种基本操作,其他操作是可以用基本操作来定义和导出的。,关系操作的特点,集合操作方式,即操作的对象和结果都是集合“以集合为中心”,“一个集合,施加一个操作得到另一个集合,依次施加关系代数操作,进而得到所需结果”非关系数据模型的数据操作方式:一次一记录文件系统的数据操作方式:按文件名访问,按记录进行存取,关系数据语言的分类,关系代数语言(relational algebra)用对关系的运算来表达查询要求典型代表:ISBL关系演算语言(relational calculus)用谓词来表达查询要求元组关系演算语言谓词变元的基本对象是元组变量典型代表:APLHA、QUEL域关系演算语言 谓词变元的基本对象是域变量典型代表:QBE具有关系代数和关系演算双重特点的语言典型代表:SQL(Structured Query Language),关系数据语言的分类,关系数据语言的简介,ISBL语言(Information System Base Language)IBM公司英格兰底特律科学中心1979年研制的用在一个实验系统PRTV(Peterlee Relational Test Vehicle)上ISBL语言与关系代数非常接近,每个查询语言都近似于一个关系代数表达式QUEL语言(Query Language)是美国伯克利加州大学研制的关系数据库系统INGRES的查询语言1975年投入运行,并由美国关系技术公司研制成商品推向市场QUEL语言是一种基于元组关系演算的并具有完整性的数据定义、检索、更新等功能的数据语言,关系数据语言的简介(续),QBE语言(Query By Example,按例查询)QBE语言是一种特殊的屏幕编辑语言QBE语言是M.M.Zloof提出的,在约克镇IBM高级研究实验室为图形显示终端用户设计的一种域演算语言1978年在IBM370上实现QBE使用起来很方便,属于人机交互语言,用户可以是缺乏计算机知识和数学基础的非程序用户QBE的思想已经渗入到许多DBMS中SQL语言(Structured Query Language)SQL语言是介于关系代数和元组演算之间的一种查询语言现已成为关系数据库的标准语言,关系数据语言的特点,关系语言是一种高度非过程化的语言存取路径的选择由RDBMS的优化机制来完成用户不必用循环结构就可以完成数据操作能够嵌入高级语言中使用关系代数、元组关系演算和域关系演算三种语言在表达能力上完全等价,概述,关系代数是一种抽象的查询语言用对关系的运算来表达查询关系代数运算的三个要素运算对象:关系运算结果:关系运算符:四类关系代数运算符,2.4 关系代数,四类关系代数运算符,集合运算符将关系看成元组的集合运算是从关系的“水平”方向即行的角度来进行专门的关系运算符不仅涉及行而且涉及列比较运算符辅助专门的关系运算符进行操作的逻辑运算符辅助专门的关系运算符进行操作的,关系代数(续),四类关系代数运算符(续),集合运算符:(并)、(差)、(交)、(广义笛卡尔积)专门的关系运算符:(选择)、(投影)、(连接)、(除)比较运算符:(大于)、(大于等于)、(小于)、(小于等于)、=(等于)、(不等于)逻辑运算符:(与)、(或)、(非),关系代数(续),关系运算的分类:分为传统的集合运算和专门的关系运算,传统的集合运算是二目运算,是在两个关系中进行的。但是并不是任意的两个关系都能进行这种集合运算,而是要在两个满足一定条件的关系中进行运算。那么,对关系有什么要求呢?设给定两个关系R、S,若满足:(1)具有相同的目n(即两个关系都有n个属性);(2)R中第i个属性和S中第i个属性必须来自同一个域。则说关系R、S是相容的。除笛卡尔积外,要求参与集合运算的关系必须满足上述的相容性定义。,传统的集合运算,1.并(Union)基本运算,RS 仍为n目关系,由属于R或属于S的元组组成记作:RS=t|t Rt S,传统的集合运算(续),关系中元组的插入,2.差(Difference)基本运算,RS 仍为n目关系,由属于R而不属于S的元组组成记作:RS=t|t RtS,传统的集合运算(续),关系中元组的删除,3.交(Intersection)非基本运算,RS仍为n目关系,由既属于R又属于S的元组组成记作:RS=t|tRtS交运算可以用差运算来表示 RS=R(RS)=S(SR),传统的集合运算(续),分别求出关系R与关系S的并、差、交运算。,R,S,RS,RS,R S,4.广义笛卡尔积(Extended Cartesian Product)基本运算,两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1*k2个元组。记作:RS=|tr R tsS 广义笛卡尔积可用于两关系的连接操作。,传统的集合运算(续),两个关系的归并,R,S,R S,求出关系R与关系S的广义笛卡尔积。,广义笛卡尔积实例讲解,表示记号(1)R,tR,tAi 设关系模式为R(A1,A2,An),它的一个关系设为R。tR 表示t是R的一个元组;tAi则表示元组t中相应于属性Ai的一个分量。,专门的关系运算,表示记号(续)(2)A,tA,A 若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,则A称为属性列或域列。tA=(tAi1,tAi2,tAik)表示元组t在属性列A上诸分量的集合。A则表示A1,A2,An中去掉Ai1,Ai2,Aik后剩余的属性组。,专门的关系运算(续),表示记号(续)(3)tr ts R为n目关系,S为m目关系。tr R,tsS,tr ts称为元组的连接或元组的串接。它是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。,专门的关系运算(续),学号 姓名 年龄,例:t学号-R中学号上的值 t 学号,姓名-R中学号,姓名上的值,t,表示记号(续)(4)象集Zx给定一个关系R(X,Z),X和Z为属性组。当tX=x时,x在R中的象集(Images Set)定义为:Zx=tZ|tR,tX=x 它表示R中属性组X上值为x的诸元组在Z上分量的集合。,专门的关系运算(续),R,x1在R 中的象集Zx1=z1,z2,z3,x2在R 中的象集Zx2=z2,z3,x3在R 中的象集Zx3=z1,z3,象集举例,专门的关系运算(续),像集具体求解过程:从R 中选出在X上取值为x的元组;然后再在Z上投影形成的结果集合。,1.选择(Selection)基本运算,是行上的选择,即水平方向抽取元组,产生同类关系。选择运算符的含义在关系R中选择满足给定条件F的诸元组,记作:F(R)=t|tRF(t)=真F:选择条件,由属性名(值)、比较运算符、逻辑运算符组成。,专门的关系运算(续),【举例】设有一个学生-课程数据库,包括学生关系Student、课程关系Course和选修关系SC。,(a),学生关系 Student,例1,例2,例4,例3,例9,例10,(b),课程关系 Course,例9,例10,(c),选修关系 SC,例7,例9,例8,例10,Sdept=IS(Student)或 5=IS(Student),例1 查询信息系(IS系)全体学生。,Sage 20(Student)或 4 20(Student),例2 查询年龄小于20岁的学生。,2.投影(Projection)基本运算,是列上的选择,相当于对关系进行垂直分解,产生不同类关系。投影运算符的含义从R中选择出若干属性列组成新的关系。记作:A(R)=tA|t R 其中A为R中的一组属性名或属性序号组,并要消除重复元组。,专门的关系运算(续),Sname,Sdept(Student)或 2,5(Student),例3 查询学生的姓名和所在系。,Sdept(Student),例4 查询学生关系中都有哪些系。,3.连接(Join)非基本运算,连接也称为连接,涉及多个表之间的操作时使用 连接运算的含义从两个关系的笛卡尔积中选取属性间满足一定连接条件的元组。记作:R S=|tr Rts StrAtsB A和B:分别为R和S上度数相等且可比的属性组:比较运算符从RS中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系的元组。,专门的关系运算(续),是笛卡尔积、选择和投影操作的组合,两类常用连接运算等值连接(Equijoin)为“”的连接运算称为等值连接 等值连接的含义从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:R S=|tr Rts StrA=tsB,专门的关系运算(续),自然连接(Natural join)是一种特殊的等值连接,连接条件默认为两个关系的同名属性的值相等,并且在结果中去掉同名属性。自然连接的含义R和S具有相同的属性组B,则自然连接记作:R S=|tr Rts StrB=tsB,专门的关系运算(续),专门的关系运算(续),一般的连接操作是从行的角度进行运算。但自然连接还需要去掉重复列,所以是同时从行和列的角度进行运算。,【例5】已知关系R和关系S,分别求出下列的连接运算。,R,S,R S、,等值连接 R S、,自然连接 R S,R S,等值连接 R S,自然连接 R S,等值连接与自然连接的区别:(1)自然连接一定是等值连接,但等值连接不一定是自然连接。因为自然连接要求相等的分量必须是公共属性,而等值连接相等的分量不一定是公共属性。(2)等值连接不把重复的属性去掉,而自然连接要把重复属性去掉。,注意,若R、S无公共属性,R S=?,专门的关系运算(续),需要引入“外连接”!,外连接(Outer join)在做自然连接时,如果把舍弃的元组保存在结果关系中,而在其他属性上填空值(Null),那么这种连接就叫做外连接。与自然连接的区别是保留被运算量的关系中在另一关系中找不到匹配元组的元组,其空缺的另一关系属性的值用空值NULL填充。,专门的关系运算(续),外连接的分类 如果只把左边关系R中要舍弃的元组保留就叫做左外连接,即保留R中的所有元组。记为:R*S如果只把右边关系S中要舍弃的元组保留就叫做右外连接,即保留S中的所有元组。记为:R*S全外连接:左外连接右外连接,专门的关系运算(续),已知关系R和关系S,分别求出关系R和关系S的外连接、左外连接及右外连接运算。,R,S,全外连接R*S,左外连接R*S,右外连接R*S,全外连接 R*S,左外连接 R*S,右外连接 R*S,专门的关系运算(续),专门的关系运算(续),左外连接:查询所有老师的任课情况,专门的关系运算(续),右外连接:查询所有课程的任课老师情况,4.除运算(Division)非基本运算,除运算的含义:给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合。记作:RS=tr X|tr RY(S)Yx Yx:x在R中的象集,x=trX把R按X的值分组,若某一组中属性组Y的值包含S在Y上投影的全部元组,则该X的值作为商关系的一个元组。,专门的关系运算(续),除操作是同时从行和列角度进行运算。,专门的关系运算(续),专门的关系运算(续),RS=tr X|tr RY(S)Yx X(R)Yx为x在R中的象集:对于每个值x,x X(R),求:y(X=x(R)结果为:象集Yx包含了Y(S)的x。,R,S,S,除法运算的步骤,1)将被除关系的属性分为象集属性和结果属性两部分:与除关系相同的属性属于象集属性,不相同的属性属于结果属性。2)在除关系中,对与被除关系相同的属性(象集属性)进行投影,得到除目标数据集。3)将被除关系分组,分组原则是,结果属性值一样的元组为一组,求每个结果属性值的象集。4)逐一考察每个组,如果它的象集属性值中包括除目标数据集,则对应的结果属性值应属于该除法运算结果集。,例题(除法解析),在关系R中,A属性可以取a1,a2,a3,a4。a1的象集为(b1,c2),(b2,c3),(b2,c1)a2的象集为(b3,c7),(b2,c3)a3的象集为(b4,c6)a4的象集为(b6,c6)S在(B,C)上的投影为:(b1,c2),(b2,c1),(b2,c3)显然,只有a1的象集(B,C)a1包含了S在(B,C)属性组上的投影,所以RS=a1,关系R,关系S,RS,结果属性,象集属性,除法运算的步骤,设关系R(X,Y),S(Y,Z),X、Y、Z为属性集RS的计算过程如下:T=X(R)W=(T Y(S)R(计算TS中不在R出现的元组)V=X(W)RS=T V即RS=X(R)X(X(R)Y(S)R),综合举例:以学生课程数据库为例,首先建立一个临时关系K:k,例7 查询至少选修1号课程和3号课程的学生学号。,然后求:Sno,Cno(SC)K,结果为95001,分析:先对关系SC在Sno,Cno属性上投影Sno,Cno(SC),然后逐一求出每一个学生(Sno)的象集,并依次检查这些象集是否包含k。95001象集1,2,395002象集2,3Cno(K)=1,3 于是:Sno.Cno(SC)K=95001,Sno,Cno(SC),Sno(Cno=2(SC)95001,95002,例 8 查询选修了2号课程的学生的学号。,Sname(Cpno=5(Course SC Student),例9 查询至少选修了一门其直接先行课为5号课程的学生姓名。,Course SC Student,Course SC,Sname(Cpno=5(Course SC Student)或 Sname(Cpno=5(Course)SC Sno,Sname(Student)或 Sname(Sno(Cpno=5(Course)SC)Sno,Sname(Student),例9 查询至少选修了一门其直接先行课为5号课程的学生姓名。,Sno,Cno(SC)Cno(Course)Sno,Sname(Student),例10 查询选修了全部课程的学生学号和姓名。,思考题:查询选修了学号95001学生所学全部课程的同学的学号和姓名。,Sno,Cno(SC)Cno(Sno=95001(SC)Sno,Sname(Student),对于只涉及到选择、投影、连接的查询可用下列表达式表示:(RS)或者(R S)对于否定的操作,一般要用差操作表示。例如“检索不学C2课的学生姓名”。对于检索具有“全部”特征的操作,一般要用除法操作表示。例如“检索选修了全部课程的学生姓名”。,使用关系代数进行查询的规则,关系代数小结,关系代数运算关系代数运算并、差、交、笛卡尔积、选择、投影、连接、除基本运算并、差、笛卡尔积、选择、投影非基本运算交、连接、除它们可以用5种基本运算来表达引进它们并不增加语言的能力,但可以简化表达关系代数中,这些运算经有限次复合后形成的式子称为关系代数表达式。,关系代数小结(续),基本运算并:RS=t|t Rt S 作用:关系中元组的插入运算差:RS=t|t RtS t S 作用:关系中元组的删除运算笛卡尔积:RS=tr ts|tr R tsS 作用:两个关系的归并运算选择:F(R)=t|tRF(t)=真作用:关系中元组的选择运算投影:A(R)=tA|t R 作用:关系中属性的指定运算,关系代数小结(续),非基本运算交:RS=t|tRtS RS=R(RS)(用基本运算表达)连接:R S=|tr Rts StrAtsB R S=(RS)(用基本运算表达)除:RS=tr X|tr RY(S)Yx R(X,Y)S(Y,Z)=X(R)X(X(R)Y(S)R)(用基本运算表达),AB,下课了。,