Basic Set Operations 基础集合运算
前提:参与集合运算的两个集合应该有相同的模式
- Union:并,R1∪R2
- intersection:交,R1∩R2
- difference:差集,R1-R2,表示在R1中但不在R2中的元素集合
Product
- R1×R2:笛卡尔积
- 注意对R1、R2中相同的属性名作区分
Selection
- 选择运算:R1是R2上满足C条件的元组的集合
Projection
- 投影运算:在R2上找出L中的属性,用这些属性组成新的元组,放到R1里
- 若结果关系中存在重复元组,需要消除重复原则
Theta-Join
- 计算R1、R2的笛卡尔积
- 在得到的结果关系中,寻找满足条件C的元组
Natual Join
- 自然连接:根据两表中的(所有)相同属性列等值进行配对
- 条件:属性名和类型都一模一样
Renaming
- 把R2重命名为R1
- 把R2的n个列重命名为A1, A2, ... , An(有可能不是所有的列)
因此,theta-join可以表示为:
Operator Precedence 运算优先级
优先级从高到低:
- 一元运算:选择、投影、重命名
- 笛卡尔积、连接
- 交集
- 并集、差集
Expression Trees 表达式树
- 叶节点:操作数
- 非叶节点:运算符
Schema-Defining Rules
- 对于并、交、差集,结果和原来的表模式相同
- 对于选择,结果和原来的表模式相同
- 对于投影和重命名,结果的属性是投影语句中的属性
- 对于笛卡尔积和theta-join,结果的属性是两个表的所有属性
- 对于自然连接:结果的属性是两个表的所有属性,相同的属性会被结合
Extended Algebra
Delta
- 在包 (bag) 中去重
- 集合里不能有重复的元素,包可以
- 类似SQL中的distinct关键字
Tau
- 排序操作:按照L中的属性排序
- 如果L中有多个属性,按顺序排
- 不是集合运算,不去重
Extended projection
- 扩展的投影操作:投影出原来没有的属性
- 可以在属性间进行运算,如投影出一个新的属性X=A+B
- 一个属性可以多次出现
Gamma
- 分组、聚合
- L中可以有要分组的属性和聚合运算
Outerjoin
- dangling tuple(悬挂元组):无法自然连接的元组
- 悬挂元组也被保存下来,其他属性,用NULL填充
Division 除法
- R ÷ S
- 模式由在R中出现但没有在S中出现的属性组成
- 找出模式中每个属性的项集,即每个属性对应的被除掉的属性的取值
- 如果某个属性的项集覆盖了S表中被除掉的属性的所有取值可能,则该属性为一个结果
- 适用于For all的情况,如找出选修了计算机学院所有课的学生
结果的模式为(S#)
S#的取值及其对应的项集
1: C1, C2, C3, C4
2: C1, C2
3: C2
4: C2, C3, C4
5: C4
本实例的实际意义:S÷CC代表了选修CC中所有课程的学生
综合练习:
(S natural-join SC natural-join )
(S natural-join )
插入:新表并旧表
更新:先-再并