数据库 第2章2.4关系代数

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第二章关系数据库2.1关系模型概述2.2关系数据结构2.3关系的完整性2.4关系代数2.5关系演算2.6小结2.4关系代数概述传统的集合运算专门的关系运算集合运算符∪-∩×并差交笛卡尔积比较运算符>≥<≤=大于大于等于小于小于等于等于不等于运算符含义运算符含义概述专门的关系运算符σπ÷选择投影连接除逻辑运算符∧∨非与或运算符含义运算符含义概述(续)2.4关系代数概述传统的集合运算专门的关系运算1.并(Union)R和S具有相同的目n(即两个关系都有n个属性)相应的属性取自同一个域R∪S仍为n目关系,由属于R或属于S的元组组成R∪S={t|tR∨tS}SR∪ABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1ABCa1b1c1a1b2c2a1b3c2a2b2c1RSR∪S2.差(Difference)R和S具有相同的目n相应的属性取自同一个域R-S仍为n目关系,由属于R而不属于S的所有元组组成R-S={t|tR∧tS}R-SABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RSABCa1b1c1R—S3.交(Intersection)R和S具有相同的目n,相应的属性取自同一个域R∩S仍为n目关系,由既属于R又属于S的元组组成R∩S={t|tR∧tS}R∩S=R–(R-S)R∩SABCa1b2c2a2b2c1R∩SABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RS4.笛卡尔积(CartesianProduct)严格地讲应该是广义的笛卡尔积R:n目关系,k1个元组S:m目关系,k2个元组R×S列:(n+m)列元组的集合元组的前n列是关系R的一个元组后m列是关系S的一个元组行:k1×k2个元组R×S={trts|trR∧tsS}R.AR.BR.CS.AS.BS.Ca1b1c1a1b2c2a1b1c1a1b3C2a1b1c1a2b2C1a1b2c2a1b2c2a1b2c2a1b3C2a1b2c2a2b2C1a2b2c1a1b2c2a2b2c1a1b3C2a2b2c1a2b2C1R×SABCa1b1c1a1b2c2a2b2c1ABCa1b2c2a1b3c2a2b2c1RS2.4关系代数概述传统的集合运算专门的关系运算2.4.2专门的关系运算几个特殊符号(1)R,tR,t[Ai]设关系模式为R(A1,A2,…,An),它的一个关系设为RtR表示t是R的一个元组t[Ai]则表示元组t中相应于属性Ai的一个分量(2)A,t[A],A若A={Ai1,Ai2,…,Aik},其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则A称为属性列或属性组。t[A]=(t[Ai1],t[Ai2],…,t[Aik])表示元组t在属性列A上诸分量的集合。A则表示{A1,A2,…,An}中去掉{Ai1,Ai2,…,Aik}后剩余的属性组。(3)trtsR为n目关系,S为m目关系。trR,tsS,trts称为元组的连接。trts是一个n+m列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。(4)象集Zx给定一个关系R(X,Z),X和Z为属性组。当t[X]=x时,x在R中的象集(ImagesSet)为:Zx={t[Z]|tR,t[X]=x}它表示R中属性组X上值为x的诸元组在Z上分量的集合x1在R中的象集Zx1={Z1,Z2,Z3},x2在R中的象集Zx2={Z2,Z3},x3在R中的象集Zx3={Z1,Z3}象集举例RABCa1a2a3a1a4a2a1b1b3b4b2b6b2b2c2c7c6c3c6c3c1则a1的象集为:{(b1,c2),(b2,c3),(b2,c1)}a2的象集为:{(b3,c7),(b2,c3)}a3的象集为:{(b4,c6)}a4的象集为:{(b6,c6)}Student学号Sno姓名Sname性别Ssex年龄Sage所在系Sdept200215121李勇男20CS200215122刘晨女19IS200215123王敏女18MA200215125张立男19IS课程号Cno课程名Cname先行课Cpno学分Ccredit1数据库542数学23信息系统144操作系统635数据结构746数据处理27PASCAL语言64CourseSC学号Sno课程号Cno成绩Grade200215121192200215121285200215121388200215122290200215122380学生-课程数据库:SCDB问题提出在SCDB数据库中如何用关系代数完成如下操作?查询年龄小于20岁的所有男生的基本信息;查询年龄小于20岁的所有男生姓名;查询选修了2号课程的学生姓名;查询至少选修了1号和2号课程的学生姓名。23142.4.2专门的关系运算选择投影连接除1.选择运算选择的含义根据一定的条件在给定的关系R中选择若干元组,组成一个新关系,记作:σF(R)σ:选择运算符F:条件表达式由运算对象(属性名、常数、简单函数)、算术比较运算符(>,≥,<,≤,=,)或逻辑运算符(∧,∨,┐)连接起来构成的逻辑表达式注:选择运算是从关系R中选取使条件表达式F为真的元组,是从行的角度进行的运算1.选择运算[问题1]查询年龄小于20岁的所有男生信息SnoSnameSsexSageSdept200215125张立男19计算机系关系代数表达式:σ(Sage20)∧(Ssex=‘男’)(Student)Student计算机系19男张立200215125电子系18女王敏200215123通信系19女刘晨200215122计算机系20男李勇200215121所在系Sdept年龄Sage性别Ssex姓名Sname学号Sno结果:2.投影运算投影的含义从R中选择出若干属性列,组成新的关系。记作:∏A1,A2,….An(R)A1,A2,….An为R中的属性列,∏是投影运算符注:(1)投影操作主要是从列的角度进行运算(2)投影之后不仅取消了原关系中的某些列,而且还可能取消某些行(?)[例1]查询Student中有哪些系.∏Sdept(Student)2.投影运算[问题2]查询年龄小于20岁的所有男生姓名Student计算机系19男张立200215125电子系18女王敏200215123通信系19女刘晨200215122计算机系20男李勇200215121所在系Sdept年龄Sage性别Ssex姓名Sname学号Sno关系代数表达式:∏Sname(σ(Sage20)∧(Ssex=‘男’)(Student))结果:Sname张立SnoSnameSsexSageSdept200215125张立男19计算机系3.连接运算连接的含义从两个关系的广义笛卡儿积中选取满足连接条件的元组,组成新的关系.记作::连接运算符A和B:分别为R和S上度数相等且可比的属性组θ:比较运算符(>,≥,<,≤,=,≠)θ为“=”的连接运算称为等值连接等价于:σAθB(R×S)RSAθB自然连接是一种特殊的等值连接,两个关系中进行比较的分量必须是相同的属性组,在结果中把重复的属性列去掉。记作:RS[例2]关系R和关系S如下所示:AB4b14b27b3AC434467RSR.A=S.A求:(1)RS(2)RS(3)RSR.A<S.CR.ABS.AC4b1434b1444b2434b244(2)RS结果:R.A=S.AR.ABS.AC4b1674b267(1)RS结果:R.A<S.CABC4b134b144b234b24(3)RS结果[问题3]查询选修了2号课程的学生姓名Student计算机系19男张立200215125电子系18女王敏200215123通信系19女刘晨200215122计算机系20男李勇200215121所在系Sdept年龄Sage性别Ssex姓名Sname学号SnoSC883200215121803200215122902200215122852200215121921200215121成绩Grade课程号Cno学号Sno关系代数表达式:πSname(σCno=‘2’(SCStudent)πSname(StudentσCno=‘2’(SC))Sname李勇刘晨[思考题】查询选修了“数据库”课程的学生姓名。结果: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∧πY(S)Yx}Yx:x在R中的象集,x=tr[X]2)除操作是同时从行和列角度进行运算÷RS[例6]设关系R、S分别为下图的(a)和(b),R÷S的结果为图(c)在关系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的象集包含了S在(B,C)属性组上的投影所以R÷S={a1}结果分析关系代数小结五种基本代数运算:并、差、笛卡尔积、选择、投影RUS、R-S、RXS、σF(R)、πA(R)组合运算连接(一般连接、等值连接、自然连接、外连接)、除RS、R÷S象集设R(X,Y)则Yx1=πy(σX=x1(R))除:R中满足下列条件的元组在X属性列上的投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:R÷S={tr[X]|trR∧πY(S)Yx}AθB练习设关系R、S分别如下:计算:(1)RXS(2)R∞S(3)R∞S(4)R÷S(5)R与S的外连接R.A=S.B5.综合举例以学生-课程数据库为例(P56)[例7]查询至少选修1号课程和3号课程的学生号码首先建立一个临时关系K:然后求:πSno,Cno(SC)÷KCno13例7续πSno,Cno(SC)200215121象集{1,2,3}200215122象集{2,3}K={1,3}于是:πSno,Cno(SC)÷K={200215121}SnoCno20021512112002151212200215121320021512222002151223[例8]查询选修了2号课程的学生的学号。πSno(σCno='2'(SC))={200215121,200215122}[例9]查询至少选修了一门其直接先行课为5号课程的的学生姓名πSname(σCpno='5'(CourseSCStudent))或πSname(σCpno='5'(Course)SCπSno,Sname(Student))或πSname(πSno(σCpno='5'(Course)SC)πSno,Sname(Student))[例10]查询选修了全部课程的学生号码和姓名。πSno,Cno(SC)÷πCno(Course)πSno,Sname(Student)练习1、查询至少选修了2号课程和3号课程的学生姓名首先建立一个临时关系K:πSname((πSno,Cno(SC)÷K)πSno,Sname(Student))Cno232.查询张立同学的年龄。3.查询王敏同学60分以下的课程名称。4.查询选修了“数据库”课程的学生姓名。5、查询李勇同学的信息系统课程的成绩。2.πSage(σSname=‘张立’(Student))3.πCname(σSname=‘王敏’∧Grade’60’(CourseSCStudent))4.πSname(σCname=‘数据库‘’(CourseSCStudent)或者π

1 / 38
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功