数据库系统笔记7:关系代数

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中所有课程的学生

综合练习:

\delta \pi_{SN}(S natural-join SC natural-join \sigma _{PC=C1}(C))

\pi _{S, SN}(S natural-join (\pi _{S, C}(SC) \div C))

 插入:新表并旧表

更新:先-再并

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值