1、3 关系模型中的运算,同济大学,本章目标,本章以关系数据模型的数学基础关系代数,主要内容是基本的关系代数运算理论,要求熟练掌握关系代数的运算方法是,能够完成简单的关系运算。,数据库的核心应用是数据库的查询,查询语言是用户用来从数据库中请求获取信息的语言。关系代数是过程化的查询语言,关系代数是一种抽象的查询语言。,3.1 关系代数初步,关系代数的运算 普通的集合运算 并、交、差 删除部分关系的运算 选择、投影 合并两个关系元组的运算 连接、积 改名运算,3.1.1 并Union (),R和S的并,RS,是在R或S或两者中的元素的集合 一个元素在并集中只出现一次 R和S必须同类型(属性集相同、次序
2、相同,但属性名可以不同),3.1.2 交Intersect (),R和S的交,RS,是在R和S中都存在的元素的集合 一个元素在交集中只出现一次 R和S必须同类型(属性集相同、次序相同,但属性名可以不同),3.1.3 差Minus (-),R和S的差,R-S,是在R中而不在S中的元素的集合 R和S必须同类型(属性集相同、次序相同,但属性名可以不同),3.1.4 投影Projection(),从关系R中选择若干属性组成新的关系 A1,A2,An(R),表示从R中选择属性集A1,A2,An组成新的关系 列的运算 投影运算的结果中,也要去除可能的重复元组 例: ssex,sage (student)
3、?,3.1.5 笛卡儿积(),关系R、S的笛卡儿积是两个关系的元组对的集合所组成的新关系 RS: 属性是R和S的组合(有重复) 元组是R和S所有元组的可能组合 是R、S的无条件连接,使任意两个关系的信息能组合在一起 例:student sc,3.1.6 选择Selection(),从关系R中选择符合条件的元组构成新的关系 C(R),表示从R中选择满足条件(使逻辑表达式C为真)的元组 行的运算 例:sage = 23 AND sdep = CS(student) ? 例:列出CS系的学号及姓名 sno,sname (sdep = CS(student) ),应用举例:设有两个关系R和S分别如图所
4、示,求R和S的并、差、笛卡尔积、投影以及交。,关系 R,关系 S,RS,R,S,RS,R,S,R-S,R,S,C,A (R),R, B=b (R),R,RS,R,S,3.1.7 自然连接( ),从RS的结果集中,选取在某些公共属性上具有相同值的元组,组成新的关系,其计算步骤如下:,R,S,3.1.8 连接,从 RS 的结果集中,选取在指定的属性集上满足条件的元组,组成新的关系。是一个关于属性集的逻辑表达式。,R,S,3.1.9 F 连接,从关系 R 和 S 的笛卡尔积中选取属性间满足某一公式的元组。F是形如F1 F2 F3 Fn的公式,其中 Fk 为形如 ij 的公式。,R,S,3.1.10
5、除法,RS中的每个元组t与S中的每个元组组成的新元组 必然存在于R中,其计算过程为: (1)计算T= 1,2,r-s(R) (2)W=(T S )-R (3)V= 1,2,r-s(W) (4) RS=T-V,R,S1,RS,S2,S3,RS1,RS,RS2,RS3,(1)检索学习课程号为C2的学生学号和成绩s#, grade(S) (c#=c2 (SC) ),应用举例1:设教学数据库中有三个关系 学生关系:S (S#,SNAME,AGE,SEX) 学习关系:SC (S#,C#,CGRADE) 课程关系:C (C#,CNAME,TEACHER),(4)检索学习课程号为C2或C4的学生学号s#,
6、(c#=c2 V c#=c4 (SC) ),(8)检索所学课程包括S3所学课程的学生学号s#,c#(SC) c# (s#=s3 (SC) ),3.2 扩充操作,3.2.1 改名,在关系代数运算中,有时为了改变由运算构成的命名和属性,可以用改名运算符。,s(A1,A2An)(R),3.2.2 广义投影,广义投影操作允许在投影列表中使用算术函数对投影进行扩展。,s#,C#,GRADE*1.05(C#=C4(SC),3.2.3 赋值,通过临时变量赋值可以把关系代数表达式分开书写,以便把复杂的表达式简化。,TEMP1=s#,C#,GRADE*1.05(SC),3.2.4 外连接,外连接是连接运算的扩展
7、,可以处理缺失信息和保留非匹配元组,外连接包括左外连接、右外连接和全外连接,左外连接 取出左侧关系中所有与右侧关系的任一元组都不匹配的元组,用空值填充所有来自右侧关系的属性,再把产生的元组加到自然连接的结果上,右外连接 取出右侧关系中所有与右侧关系的任一元组都不匹配的元组,用空值填充所有来自左侧关系的属性,再把产生的元组加到自然连接的结果上。,外连接 保留两侧关系中的所有信息,新属性使用null值。,3.2.5 外部并,R和S的关系模式不同,构成新关系的属性由R和S的所有属性组成,新关系的元组由属于R或属于S的元组组成,同时元组在新增加的属性上填空值。,3.2.6 半连接,关系R和关系S的半连接操作定义为R和S的自然连接在关系R的属性集上的投影。,3.2.7 聚集操作,聚集操作是指输入一个值的集合,然后根据该值集合得到一个单一的值作为结果。常用的有max,min,avg,sum,count等。,count s#(age=18(S),作业:课本习题2的:6,7,8,17,本章小结,普通的集合运算删除部分关系的运算合并两个关系元组的运算,