1第5章关系代数第5章关系代数2关系模型中的运算在关系模式设计已确定的前提下,在这些关系上可进行哪些运算?得到怎样的新关系?关系操作有两种不同的表示方式:代数的和逻辑的。关系代数不仅可以表示运算,也可以表示对数据库的约束。关系操作可在无重复元组的集合set上运算,也能在有重复元组的包bag上运算。第5章关系代数35.1关系代数操作第5章关系代数4什么是关系代数RelationalAlgebra在关系模型上定义的一组标准运算,可由已知的关系计算得到新的关系。注意:结果关系的属性是什么?结果关系中的元组是什么?考虑各种运算的特征。第5章关系代数5关系代数有哪些运算四大类共九种:一般集合运算:并、交、差(在两个相同模式的关系上进行)删减运算:在一个关系上进行投影:删去某些属性(列)选择:删去某些元组(行)合并运算:在两个关系之间进行笛卡尔积:两个关系中所有元组的所有可能的组合(无条件)。连接:两个关系中元组有选择条件的组合。自然连接笛卡尔积加投影和选择运算θ连接笛卡尔积加选择运算改名:在一个关系上进行,改变关系或属性的名字,而不影响其中的元组。第5章关系代数6关系中的集合运算对于两个关系R和S,有哪些集合运算?R∪S={t|t∈RORt∈S}:并,由R或S中的元组构成的集合,同一元组只出现一次。R∩S={t|t∈RANDt∈S}:交,由属于R且属于S的元组构成的集合。R-S={t|t∈RANDNOTt∈S}:差,由属于R且不属于S的元组构成的集合。注意:前两者可交换,差运算不能交换。第5章关系代数7集合运算需要什么条件R和S的模式具有相同的属性集;计算之前可能需调整属性次序,先保证R和S具有相同的属性次序。第5章关系代数8例子设有关系R与S如下:ABa1b1a1b2ABa1b2a2b2ABa1b1a2b2a1b2ABa1b2ABa1b1RSR∪SR∩SR-S第5章关系代数9投影(projection)对于一个关系R,投影产生一个新关系,只包含R属性集的一个子集。表示为:∏A1,A2,…,An(R)结果:属性为{A1,A2,…,An};其中元组由R中元组在属性{A1,A2,…,An}上的分量构成,元组不重复。关系分解时使用。第5章关系代数10例子titleyearlengthinColorstudioNameProducerC#StarWarsMightyDucksWaynes’sWorld19771991199212410495TrueTrueTrueFoxDisneyParamount123456789099999titleyearLengthStarWarsMightyDucksWaynes’sWorld19771991199212410495MoviesinColorTrue∏title,year,length(Movie)∏inColor(Movie)第5章关系代数11选择(selection)对于一个关系R,选择产生一个新关系,只包含满足特定条件的元组。表示为:σc(R)其中c是结果关系中每个元组都要满足的条件。结果:保持R属性集且属性次序也相同;元组是R中满足条件c的元组集合。第5章关系代数12如何表示条件运算对象:属性名和常量算术比较运算:=≠>≥<≤逻辑运算:NOTANDOR第5章关系代数13例子TitleyearlengthinColorstudioNameProducerC#StarWarsMightyDucks19771991124104TrueTrueFoxDisney1234567890titleyearlengthinColorstudioNameProducerC#StarWars1977124TrueFox12345MightyDucks1991104TrueDisney67890Waynes’sWorld199295TrueParamount99999Moviesσlength≥100(Movies)σlength≥100ANDstudioName=‘FOX’(Movies)titleyearlengthinColorstudioNameProducerC#StarWars1977124TrueFox12345第5章关系代数14笛卡尔积对于关系R和S,笛卡尔积表示为:R×S。结果:属性集是R和S属性集合的并集;区别R和S中的同名属性:“关系名.属性名”。元组是R中的每个元组与S中每个元组的组合。元组数量是MR×NS。第5章关系代数15例子BCD25647891011AB1234RSR×SAR.BS.BCD1225612478129101134256344783491011第5章关系代数16自然连接对于两个关系R和S,自然连接表示为RS结果:⑴属性是R和S中的属性的并集,去掉同名的属性;⑵其元组是R和S在同名属性上一致的元组的所有组合。确切说,设A1,A2,…,An是R和S的公共属性,当且仅当R的元组r与S的元组s在A1,A2,…,An上都一致时,元组s和r组合成为RS的一个元组,称为一个连接元组。第5章关系代数17例子BCD25647891011AB1234RSRSABCD12563478注意:若R和S没有同名的公共属性,则自然连接是无效运算(并非空元组)。第5章关系代数18例子BCD2342357810ABC123678978UVUVABCD123412356781097810第5章关系代数19悬挂元组若R中元组与S中任何元组均不匹配,则在RS中没有该元组出现,这种元组称为悬挂元组。悬挂元组在R中有,在S中也有。例如:σ姓名=’张平’(学生选修)或σ姓名=’张平’(学生)选修第5章关系代数20θ连接在笛卡尔积的基础上,增加条件以限制元组。对于两个关系R和S,基于条件c的θ连接表示为RcS,计算步骤:⑴计算R×S,即笛卡尔积;⑵用条件c做选择运算:σc(R×S)。第5章关系代数21例子BCD2342357810ABC123678978UVUADVAU.BU.CV.BV.CD123234123235123781067878109787810第5章关系代数22复合运算什么是复合运算?把两种以上运算组合起来构成一个表达式,以完成较复杂的计算。为何需要它?当单一运算不能满足要求时,需要复合运算。如何组合关系表达式?括号表示计算优先级。第5章关系代数23例子Movie(title,year,length,inColor,studioName)计算“Fox制作的至少100分钟长的影片的片名及其年份”∏title,year(σlength≥100ANDstudioName=‘FOX’(Movie))另一种等价计算:∏title,year(σlength≥100(Movie)∩σstudioName=‘FOX’(Movie))注意:完成相同的计算可能有多种方式。第5章关系代数24关系代数表达式的语法树Movieσlength≥100ANDstudioName=‘FOX’∏Title,yearMovieσlength≥100∏∩MovieσstudioName=‘FOX’Title,year第5章关系代数25例子Movie(title,year,length,inColor,studioName)StarsIn(title,year,starName)求“主演过影片至少100分钟长的影星的名字”。∏starName(σlength≥100(MovieStarsIn))连接可重组被分解的关系。你能给出另一种等价计算吗?第5章关系代数26例子的语法树Movieσ∏σStarIn∏Movie.title=StarIN.titleANDMovie.year=StarIN.yearStarName×Length≥100Movie.title,Movie.year,length,InColor,StudioName,StarName第5章关系代数27改名把一个关系R改名为关系S,且属性也按次序改名为A1A2…An,表示为ρS(A1,A2,…,An)(R),若仅关系改名为S而属性不改名,则表示为ρS(R)第5章关系代数28例子BCD25647891011AB1234RS注意区分同名属性。若作改名,可表示为R×ρS(X,C,D)(S)ABXCD1225612478129101134256344783491011另一种等价计算:ρRS(A,B,X,C,D)(R×S)第5章关系代数29例子Salesman(empid,idno,name,gender,phone,deptid)求“所有重名的销售员的员工号及其姓名”∏s1.empid,s1.name(ρS1(Salesman)s1.name=s2.nameANDs1.empid≠s2.empidρS2(Salesman))思考题:不用改名运算,能完成计算吗?第5章关系代数30基本运算和派生运算上述九种运算,彼此之间是否独立?1R∩S=R-(R-S)2θ连接:RcS=σc(R×S)3自然连接:RS=∏L(σc(R×S))其中:设A1A2…An是R和S的同名属性。C为R.A1=S.A1ANDR.A2=S.A2AND…ANDR.An=S.AnL为R和S属性集合的并集,只保留一个同名公共属性。所以这三种运算为派生运算,可由其它运算导出,其它六种运算为基本运算。第5章关系代数31还有一种派生运算-除法设有关系R和S的元素分别为r和s(设rs0),那么R÷S是一个(r-s)元的元组集合。R÷S是满足下列条件的关系:其中每个元组t与S中的每个元组u组成的新元组(t,u)必须在关系R中。R÷S的具体计算过程:⑴T=∏1,2,…r-s(R)⑵W=(T×S)-R⑶V=∏1,2,…r-s(W)⑷R÷S=T-V即R÷S=∏1,2,…r-s(R)-∏1,2,…r-s((∏1,2,…r-s(R)×S)-R)第5章关系代数32例子ABCDabcdabefabdebcefedcdedefCDcdefABabedRSR÷S即(R÷S)×SR第5章关系代数33综合例子设有关系:学生(学号,姓名,性别,年龄)选修(学号,课号,成绩)课程(课号,课名,教师)求:1.选修‘c2’的学生学号∏学号(σ课号='c2'(选修))2.选修‘c2’的学生学号和姓名∏学号,姓名(σ课号='c2'(学生选修))第5章关系代数34综合例子3.既选修课名为’Maths’的学生学号和姓名∏学号,姓名(σ课名=‘Maths’(学生选修课程))4.选修’c1’或选修’c2’的学生学号∏学号(σ课号='c1'(选修))∪∏学号(σ课号='c2'(选修))5.既选修’c1’,亦选修’c2’的学生学号∏学号(σ课号='c1'(选修))∩∏学号(σ课号='c2'(选修))第5章关系代数35综合例子6.没选修’c1’的学生学号∏学号(选修)-∏学号(σ课号='c1'(选修))7.学习全部课程的学生姓名∏姓名(学生(∏学号,课号(选修)÷∏课号(课程)))8.所学课程包含S3所学课程的学生学号∏学号,课号(选修)÷∏课号(σ学号=‘S3'(选修))第5章关系代数36思考在销售系统的情况Customer(custid,name,prov,city,phone,unit)Salesman(empid,idno,name,gender,phone,deptid)Product(prodid,factory,type,spec,price,desc)Department(deptid,name,headerid)Salesitem(orderno,lineno,prodid,singlecost,quantity)Salesorder(orderno,signdate,empid,custid)第5章关系代数37思考在销售系统的情况1.计算名为“张三”的销售员的员工号及其电话号码。2.计算员工号为“A0043”的销售员所经办的客户的姓名及