关系数据库的基本理论关系代数.ppt
关系数据库与SQL语言目录第1章数据库基础第2章关系库的基本理论第3章数据库设计第4章Transact-SQL语言和SQLSERVER2008第5章数据库和表的创建第6章数据库的查询和视图第7章存储过程和触发器第8章数据库应用实战上堂课内容回顾上堂课内容回顾关系模型的基本术语:关系模型的基本术语:关系、元组、属性、域、分量关系、元组、属性、域、分量关系模式关系模式候选码、主码、外码(重点)候选码、主码、外码(重点)关系完整性:关系完整性:实体完整性(重点)实体完整性(重点)参照完整性(重点参照完整性(重点)用户自定义完整性用户自定义完整性本堂课内容本堂课内容2.3 关系代数关系代数2.3.1 传统的集合运算(重点传统的集合运算(重点)2.3.2 专门的关系运算专门的关系运算(重点,难点重点,难点)2.3 关系代数关系代数关系代数关系代数关系代数是一种抽象的查询语言,是关系数关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式。据操纵语言的一种传统表达方式。关系代数以一个或两个关系为输入,产生一关系代数以一个或两个关系为输入,产生一个新的关系作为其操作结果个新的关系作为其操作结果 关系操作关系操作关系操作关系操作关系的基本数据操作包括四种:关系的基本数据操作包括四种:数据查询数据查询 数据更新数据更新(数据插入,数据删除,数据修改)(数据插入,数据删除,数据修改)如用关系代数来表示关系的操作,可以有选择、如用关系代数来表示关系的操作,可以有选择、投影、连接、除、交、差、并、积等。投影、连接、除、交、差、并、积等。关系代数的运算符关系代数的运算符选择选择投影投影连接连接除除非非与与或或 逻辑运算逻辑运算符符选择选择投影投影连接连接除除专门的关专门的关系运算符系运算符含义含义运算符运算符含义含义运算符运算符含义含义运算符运算符含义含义运算符运算符大于大于大于等于大于等于小于小于小于等于小于等于等于等于不等于不等于比比较较运运算算符符交交笛卡尔积笛卡尔积大于大于小于小于等于等于并并差差-集集合合运运算算符符含义含义运算符运算符含义含义运算符运算符含义含义运算符运算符含义含义运算符运算符2.3.1 基本关系运算基本关系运算-合并运算合并运算设有两个关系设有两个关系R和和S,它们具有相同的结构。,它们具有相同的结构。合并运算:合并运算:R SR和和S的并是由属于的并是由属于R或属于或属于S的元组组成的集合,的元组组成的集合,运算符为运算符为。记为记为TRS。2.3.1 基本关系运算基本关系运算-合并运算合并运算ABCa1a1a2b2b3b2c2c2c1ABCa1a1a2b1b2b2c1c2c1 R SABCa1a1a2a1b1b2b2b3c1c2c1c2 RS 基本关系运算基本关系运算-交集运算交集运算交运算:交运算:RSR和和S的交是由既属于的交是由既属于R又属于又属于S的元组组成的元组组成的集合,运算符为的集合,运算符为。记为记为TRS。2.3.1 基本关系运算基本关系运算-交集运算交集运算ABCa1a1a2b2b3b2c2c2c1ABCa1a1a2b1b2b2c1c2c1 R SABCa1a2b2b2c2c1 R S 2.3.1 基本关系运算基本关系运算-求差运算求差运算求差运算:求差运算:R SR和和S的差是由属于的差是由属于R但不属于但不属于S的元组组成的元组组成的集合,运算符为的集合,运算符为.记为记为TRS。RSR(R S)。)。2.3.1 基本关系运算基本关系运算-求差运算求差运算ABCa1a1a2b2b3b2c2c2c1ABCa1a1a2b1b2b2c1c2c1 R SABCa1b1c1 R S 2.3.1 基本关系运算基本关系运算-乘积运算乘积运算乘积运算:乘积运算:R1R2两个关系的乘积运算是两个关系框架的合并,两个关系的乘积运算是两个关系框架的合并,是两个关系元祖的连串,运算符为是两个关系元祖的连串,运算符为。记为记为TRS。2.3.1 基本关系运算基本关系运算-乘积运算乘积运算ABCa1 a1a2b2 b3 b2c2c2c1ABCa1 a1a2b1 b2 b2c1c2c1 R SABCABCa1 a1 a1 a1 a1 a1a2 a2 a2b1 b1 b1 b2 b2 b2 b2 b2 b2 c1 c1 c1c2c2c2c1 c1 c1 a1 a1a2 a1 a1a2 a1 a1a2b2 b3 b2b2 b3 b2b2 b3 b2c2c2c1 c2c2c1 c2c2c1 RS 2.3.2专门的关系运算选择(selection)投影(projection)连接(join)除(division)(选学)以下为了叙述方便,先引入几个记号2.3.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称为属性列或域列例如:存在关系模式教师(编号,姓名,职称)编号姓名职称001肖正教授002李玲副教授2.3.2专门的关系运算(3)元组的连接R为n目关系,S为m目关系。设trR,tsS,则trts称为元组的连接(Concatenation)。它是一个(n+m)列的元组,前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。编号姓名职称001肖正教授002李玲副教授编号电话办公室0012199210B-1010022199201B_102RS2.3.2专门的关系运算(4)象集给定一个关系R(X,Z),X和Z为属性组.当tX=x时,x在R中的象集(Images Set)为:Zx=tZ|tR,tX=x它表示R中属性组X上值为x的元组在Z上分量如右例所示:a1的象集为(b1,c2),(b2,c3),(b2,c1)例如R:ABCa1b1c2a2b3c7a3b4c6a1b2c3a4b6c6a2b2c3a1b2c12.3.2 基本关系运算基本关系运算-选择运算选择运算选择运算:选择运算:F(R)从一个表中选出所有满足给定条件的记录从一个表中选出所有满足给定条件的记录(行行),选出选出的记录构成一个新表的记录构成一个新表,其关系模式与原表相同其关系模式与原表相同.选选择择运运算算是是从从关关系系R中中选选取取使使逻逻辑辑表表达达式式F为为真真的的元组,元组,是从行的角度进行的运算是从行的角度进行的运算学学 号号Sno姓姓 名名Sname性性 别别Ssex年年 龄龄Sage所所 在在 系系Sdept95001李勇李勇男男20CS95002刘晨刘晨女女19IS95003王敏王敏女女18MA95004张立张立男男19IS课程号课程号课程名课程名先行课先行课学分学分CnoCnameCpnoCT1数据库数据库542数学数学23信息系统信息系统144操作系统操作系统635数据结构数据结构746数据处理数据处理27PASCAL语言语言64学学 号号课课 程程 号号成成 绩绩SnoCnoScore9500119295001285950013889500229095002380图2-3 学生-课程数据库SCSC例2-3查询信息系(IS系)全体学生Sdept=IS(S)或5=IS(S)结果:SnoSnameSsexSageSdept95002刘晨刘晨女女19IS95004张立张立男男19IS例2-4查询年龄大于19岁的学生Sage19(S)结果:snosnamesexsageSdept200801张民男20CS2.3.2 基本关系运算基本关系运算-投影运算投影运算投影运算:投影运算:A1,A2,An(R)从给定的属性集中选择若干属性构成新表的属性从给定的属性集中选择若干属性构成新表的属性,而给定表的记录在这些属性上的值保持不变而给定表的记录在这些属性上的值保持不变.新表的属性集是原表属性集的真子集新表的属性集是原表属性集的真子集.这这是从列的角度进行的运算是从列的角度进行的运算,相当于对关系进行垂,相当于对关系进行垂直分解。直分解。例查询学生的姓名和所在系即求Student关系上学生姓名和所在系两个属性上的投影Sname,Sdept(Student)或2,5(Student)结果:2.3.2 基本关系运算基本关系运算-自然连接自然连接自然连接运算:自然连接运算:R1R2 自然连接是一种特殊的等值连接,它要求两个关系中进自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。复的属性列去掉。例例:Student SC SELECT Student.Sno,Sname,Ssex,Sage,Sdept,Cno,SCORE FROM S,SC WHERE Student.Sno=SC.Sno2.3.2 基本关系运算基本关系运算-自然连接自然连接CDEc1c2c3d2 d3 d2e2e2e1ABCa1 a2a3b1 b2 b2c1c2c1 R TABCDEa1 a2a3 b1 b2 b2 c1 c2 c1d2 d3d2 e2e2 e2 R T 一般的连接操作是从行的角度进行运算。自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。ABRS例关系R和关系S如下所示:一般连接的结果如下:例关系R和关系S如下所示:例关系R和关系S如下所示:例关系R和关系S如下所示:自然连接R S的结果如下:等值连接R S 的结果如下:R.B=S.B 外连接如果把舍弃的元组舍弃的元组也保存在结果关系中,而在其他属性上填空值(Null),这种连接就叫做外连接(OUTERJOIN)。左外连接如果只把左边关系R中要舍弃的元组保留就叫做左外连接(LEFTOUTERJOIN或LEFTJOIN)右外连接如果只把右边关系S中要舍弃的元组保留就叫做右外连接(RIGHTOUTERJOIN或RIGHTJOIN)。例关系R和关系S 如下所示:除(Division)(选学内容)给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R 中的Y 与S 中的Y 可以有不同的属性名,但必须出自相同的域集。R 与S 的除运算得到一个新的关系P(X)P(X),P 是R R 中满足下列条件的元组在中满足下列条件的元组在X X 属性列上的属性列上的投影投影:元组在X上分量值x的象集Yx包含S在Y上投影的集合,记作:R S=tr X|tr R Y(S)Yx Yx:x在R 中的象集,x=trX除操作是同时从行和列角度进行运算RS例设关系R、S分别为下图的(a)和(b),RS的结果为图(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)属性组上的投影所以RS=a1“除”的实际含义:有一个现实意义的集合,希望在另一个集合中找出“包含”该集合的元组集例,找出选修了所有课程的学生“所有课程”“学生”“学生”“所有课程”例,找出选修了所有张三所选课的学生“张三所选课”“学生”“学生”“张三所选课”综合举例以学生以学生-课程数据库为例课程数据库为例例查询至少选修1号课程和3号课程的学生号码首先建立一个临时关系K:然后求:Sno,Cno(SC)KCno13先对先对SC关系在关系在Sno和和Cno属性上投影,然后对其中每个元组属性上投影,然后对其中每个元组逐一求出每一学生的象集,并依次检查这些象集是否包含逐一求出每一学生的象集,并依次检查这些象集是否包含K。例 查询选修了全部课程的学生号码和姓名。Sno,Cno(SC)Cno(Course)Sno,Sname(Student)例查询至少选修了一门其直接先行课为5号课程的学生姓名Sname(Cpno=5(CourseSCStudent)或或Sname(Cpno=5(Course)SCSno,Sname(Student)或或Sname(Sno(Cpno=5(Course)SC)Sno,Sname(Student)本章小结关系代数关系代数交、差、并、积交、差、并、积选择、投影、连接、除选择、投影、连接、除