资源描述
1,1.传统的集合运算,传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积四种运算。设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域。1.并(Union)关系R与关系S的并由属于R或属于S的元组组成。其结果关系仍为n目关系。记作:RS=t|tRtS,2,R,S,RS,3,2.差(Difference)关系R与关系S的差由属于R而不属于S的所有元组组成。其结果关系仍为n目关系。记作:RS=t|tRtS,4,R,S,RS,SR,5,交(IntersectionReferentialintegrity)关系R与关系S的交由既属于R又属于S的元组组成。其结果关系仍为n目关系。记作:RS=t|tRtS交运算可以通过差运算来重写:RS=R-(R-S),6,R,S,RS,7,广义笛卡尔积(Extendedcartesianproduct)两个分别为n目和m目的关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1k2个元组。记作:,RS=t|t=tr,tstrRtsS,8,9,2.专门的关系运算,专门的关系运算包括选择、投影、连接、除等。几个记号:1.设关系模式为R(A1,A2,.,An)。它的一个关系设为R。tR表示t是R的一个元组。tAi则表示元组t中相应于属性Ai的一个分量。2.若A=Ai1,Ai2,.,Aik,其中Ai1,Ai2,.,Aik是A1,A2,.,An中的一部分,则A称为属性列或域列。A则表示A1,A2,.,An中去掉Ai1,Ai2,.,Aik后剩余的属性组。tA=(tAi1,tAi2,.,tAik)表示元组t在属性列A上诸分量的集合。,10,3.R为n目关系,S为m目关系。trR,tsS,trts称为元组的连接(Concatenation)。它是一个(n+m)列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。给定一个关系R(X,Z),X和Z为属性组。我们定义,当tX=x时,x在R中的象集(ImagesSet)为:Zx=tZ|tR,tX=x它表示R中属性组X上值为x的诸元组在Z上分量的集合。,XZ,张军同学所选修的全部课程,x=张军,Zx,11,更名运算(了解),定义给一个关系表达式赋予名字x(E)返回表达式E的结果,并把名字x赋给Ex(A1,A2,An)(E)返回表达式E的结果,并把名字x赋给E,同时将各属性更名为A1,A2,An关系被看作一个最小的关系代数表达式,可以将更名运算施加到关系上,得到具有不同名字的同一关系。这在同一关系多次参与同一运算时很有帮助,12,1.选择(Selection)选择又称为限制(Restriction)。它是在关系R中选择满足给定条件的诸元组,记作:F(R)=t|tRF(t)=真其中F表示选择条件,它是一个逻辑表达式,取逻辑值真或假。选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。选择是从行的角度进行的运算。,13,R,A5(R),A5C=7(R),14,例1查询信息系(IS系)全体学生Sdept=IS(Student)或5=IS(Student)例2查询年龄小于20岁的元组Sage20(Student)或420(Student)补充:查询年龄不小于20岁的男生AGE20SEX=男(S),15,2.投影(Projection)关系R上的投影是从R中选择出若干属性列组成新的关系。记作:A(R)=tA|tR其中A为R中的属性列。投影操作是从列的角度进行的运算。注意:投影结果中要去掉相同的行,R,B,C(R),16,例3查询学生关系Student在学生姓名和所在系两个属性上的投影Sname,Sdept(Student)或2,5(Student)例4查询学生关系Student中都有哪些系,即查询学生关系Student在所在系属性上的投影Sdept(Student)补充:Sname,Sage(S)Cno(Sno=95001(SC),给出所有学生的姓名和年龄,找001号学生所选修的课程号,17,广义投影(了解),定义在投影列表中使用算术表达式来对投影进行扩展F1,F2,Fn(E)F1,F2,Fn是算术表达式示例求教工应缴纳的所得税P#,SAL*5/100(PROF),18,3.连接(Join)连接也称为连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作:其中A和B分别为R和S上度数相等且可比的属性组。是比较运算符。连接运算从R和S的笛卡尔积RS中选取(R关系)在A属性组上的值与(S关系)在B属性组上值满足比较关系的元组。,19,连接运算中有两种最为重要也最为常用的连接:一种是等值连接(equi-join);另一种是自然连接(Naturaljoin)为“”的连接运算称为等值连接。它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组。即等值连接为:,20,R,S,21,自然连接(Naturaljoin)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。即若R和S具有相同的属性组B,则自然连接可记作:一般的连接操作是从行的角度进行运算。但自然连接还需要取消了重复列,所以是同时从行和列的角度进行运算。当R与S无相同属性时,RSRS,22,23,R,S,24,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上投影的集合。记作:其中,Yx为x在R中的象集,x=trX除操作是同时从行和列的角度进行运算。,RS=trX|trRY(S)Yx,RS=X(R)X(X(R)Y(S)R),25,AB(R),AB(R)CD(S),AB(R)CD(S)-R,RS=,-,=,R,S,26,例6设关系R,S分别为图2-9中的(a)和(b),求RS的结果在关系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,c3),(b2,c1)显然只有a1的象集(B,C)a1包含S在(B,C)属性组上的投影,所以RS=a1,27,选修了全部课程并且成绩都相同的学生,选修了全部课程的学生,28,习题,1.求选修了1号或2号课程的学生号,Sno(Cno=1Cno=2(SC),Sno(Cno=1(SC)Sno(Cno=2(SC),方案1:,方案2:,29,2.求选修了1号而没有选2号课程的学生号,Sno(Cno=1(SC)Sno(Cno=2(SC),30,3.求同时选修了1号和2号课程的学生号,Sno(Cno=1Cno=2(SC),Sno(Cno=1(SC)Sno(Cno=2(SC),Sno,Cno(SC)Cno=1Cno=2(C),Sno(SCCno=1Cno=2(C),31,4.求未选修1号课程的学生号,方案1:Sno(S)Sno(Cno=1(SC),方案2:Sno(Cno1(SC),哪一个正确?,32,5.求仅选修了1号课程的学生号,选修1号课程的学生仅选1号课程之外的学生,S#(C#=1(SC)S#(SCC#=1(SC),S#(SC)S#(C#1(SC),所有选课的学生仅选1号课程之外的学生,33,34,外连接(了解内容),外连接为避免自然连接时因失配而发生的信息丢失,可以假定往参与连接的一方表中附加一个取值全为空值的行,它和参与连接的另一方表中的任何一个未匹配上的元组都能匹配,称之为外连接外连接=自然连接+失配的元组外连接的形式:左外连接、右外连接、全外连接左外连接=自然连接+左侧表中失配的元组右外连接=自然连接+右侧表中失配的元组全外连接=自然连接+两侧表中失配的元组,35,外连接,所有老师的信息,36,外连接,所有课程的信息,37,外连接,所有老师和课程的信息,38,半连接,A()A是R中所有属性的集合,39,赋值运算(了解),定义为使查询表达简单、清晰,可以将一个复杂的关系代数表达式分成几个部分,每一部分都赋予一个临时关系变量,该变量可被看作关系而在后面的表达式中使用临时关系变量关系代数表达式赋值给临时关系变量只是一种结果的传递,而赋值给永久关系则意味着对数据库的修改,40,赋值运算,示例RS=X(R)X(X(R)Y(S)R)用赋值重写为:temp1X(R)temp2X(temp1Y(S)R)resulttemp1temp2,41,聚集函数(不讲),定义求一组值的统计信息,返回单一值使用聚集的集合可以是多重集,即一个值可以重复出现多次。如果想去除重复值,可以用连接符-将distinct附加在聚集函数名后,如sum-distinctsum:求和求全体教工的总工资sumSAL(PROF)求001号学生的总成绩sumSCORE(S#=001(SC),42,聚集函数,avg:求平均求001号同学选修课程的平均成绩。avgSCORE(S#=001(SC)count:计数求001号同学选修的课程数。countC#(S#=001(SC)求任课老师的总数。count-distinctP#(PC),43,聚集函数,max:求最大值min:求最小值求学生选修数学的最高成绩maxSCORE(CN=数学(C)SC)分组将一个元组集合分为若干个组,在每个分组上使用聚集函数。属性下标G聚集函数属性下标(关系),对此属性在每个分组上运用聚集函数,按此属性上的值对关系分组,44,聚集函数,分组运算G的一般形式G1,G2,.,GnGF1,A1,F2,A2,Fm,Am(E)Gi是用于分组的属性,Fi是聚集函数,Ai是属性名。G将E分为若干组,满足:1)同一组中所有元组在G1,G2,.,Gn上的值相同。2)不同组中元组在G1,G2,.,Gn上的值不同。示例求每位学生的总成绩和平均成绩S#GsumSCORE,avgSCORE(SC),45,数据库修改(不讲),删除将满足条件的元组从关系中删除rrE是对永久关系的赋值运算例:删除001号老师所担任的课程PCPCPC#=001(PC)删除没有选课的学生SS(S#(S)S#(SC)S,关系,关系代数表达式,46,数据库修改,插入插入一个指定的元组,或者插入一个查询结果rrE示例:新加入一个老师PCPC(P07,“周正”,750,D08)示例:加入计算机系学生选修“数学”的信息SCSCS#(SDN=计算机系(DEPT)C#(CN=数学(C),47,数据库修改,更新利用广义投影改变元组的某些属性上的值rF1,F2,Fn(r)示例:给每位老师上调10%的工资PCP#,PN,SALSAL*1.1,D#(PC)示例:对工资超过800的老师征收5%所得税PCP#,PN,SALSAL*0.95,D#(SAL800(PC)P#,PN,SAL,D#(SAL800(PC),48,视图(不讲),定义视图是命名的、从基本表中导出的虚表,它在物理上并不存在,存在的只是它的定义视图中的数据是从基本表中导出的,每次对视图查询都要重新计算createviewview_nameas视图之上可以再定义视图视图Vs临时关系变量,49,视图,视图的优点个性化服务简化了用户观点,使不同用户可以从不同角度观察同一数据安全性“知必所需”,限制用户数据的访问范围逻辑独立性视图作为基本表与外模式之间的映象,50,视图,示例给出老师所教授课程的信息createviewp_courseAsPN,CN(PROFPCC)给出李明老师所教授的课程名称PN=李明(p_course),51,视图,视图更新信息缺失createviewp_salaryasPN,SAL(PROF)在视图p_salary上执行:p_salaryp_salary(李明,800)在基本表PROF上执行:PROFPROF(李明,800)往PROF中加入元组(李明,800),缺主码P#信息,52,视图,createviews_deanasSN,DEAN(SDEPT)在视图s_dean上执行:s_deans_dean(叶开,伍魁)在基本表S上执行:SS(null,叶开,null,null)在基本表DEPT上执行:DEPTS(null,null,伍魁),null=null?,53,视图,连接属性,连接属性,视图定义中不包括连接属性D#因此SDEPT结果中不包括(叶开,伍魁),54,视图,信息歧义在视图s_dean上执行:s_deanSN,DEAN安然(SN=李四(s_dean),OR,55,视图,物化视图视图的计算结果被实际存储起来物化视图可以看成是数据库的cache查询物化视图比重新计算视图要快许多需要进行物化视图与基本表之间的一致性维护应用场合任何需要对派生数据的快速访问、或视图的重新计算非常昂贵、或查询需要耗费非常高的CPU和磁盘吞吐量的应用场合,都可以使用物化视图来提高效率,56,视图,如一个零售数据库,存储terabytes数量级的几个月的销售数据。而诸如某个商店的某件商品的销售总量这样的查询,每天可能要被零售商、仓库管理员、市场部人员执行若干次。这时可以将商品的销售总量查询结果定义为物化视图如一个处理定单与产品的事务系统,大量的查询需要连接定单与产品表,可以将定单与产品表的连接结果定义为物化视图,
展开阅读全文