【纯复习用】数据库笔记(4)Relational Algebra

目录

Projection

Selection 

 Slection example

 Set Operations

Union

 Set difference

 Intersection

 Cartesian Product笛卡儿积

 Join

 Natural Join Example

 θ-Join Example

 Renaming ρ

 Division

 Outer Join

Example


查询语言(Query languages)是用于提出问题或查询的专门语言,涉及数据库中的数据.

Relational Algebra:以操作符表示的查询

        关系代数中的每一个操作符都接收(一个或两个)关系实例作为参数,并返回一个关系实例作为结果

  • 一个关系代数表达式递归地定义为一个关系。
  • 关系代数是一种程序查询语言,定义计算答案的一步步过程。

Projection \pi _L(R)

  • 删除不在投影列表L中的属性。
  • 结果的schema包含投影列表中的字段,具有和input relation一样的名称
  • (不知道上面在说什么,反正投影运算符消除重复的内容,并只保留当前的schema)

Selection \sigma _c(R)

  • 选择一行(记录/元组),这一行满足选择条件c.
  • 结果的schema与input relation的相同
  • c的形式:Term Op Term
    • Term 是一个属性名或者常数
    • Op 是 <, >, =, ≠ 等符号
  • 不同的条件可以用布尔表达式连接在一起

 Slection example

         得到的关系可以是另一个关系代数操作的输入!(Operator composition)

 Set Operations

  • Union(并集), Intersection, Set-difference(集合差)
  • 这三个运算符都接收两个input relations, which一定是union-compatible(联合兼容的):
    • 字段的数量相同
    • 对应的字段具有相同的类型。
  • 输出是一个single relation(不包含重复的东西)

Union

 Set difference

 Intersection

 Cartesian Product笛卡儿积

        将一个表的一行与另一个表的每一行结合起来

 Join

  • 通常所有元组的可能结合并不总是有意义的
  • 在之前的例子中,将Can_Fly的每个元组与Plane的相应记录结合起来更有意义
  • Join就是附带selection的笛卡尔积(如两个表中有相同的schema,则不对其做笛卡尔积)

 Natural Join Example

 θ-Join Example

  • 我们有一个航班表,里面记录了Flight Number, Origin, Destination, Departure TimeArrival Time
  • 我们让这个表self-join,同时有着下面的条件
  • Flight1.Dest = Flight2.Origin ^ Flight1.Arr_Time < Flight2.Dept_Time
  • what should we get?

 Renaming ρ

  • 如果属性或者关系有着相同的名字,重命名一个可能比较方便

  •  新的关系R'和R有着相同的实例,但是它的schema有着属性N'i,而不是Ni

  •  如果我们需要做一个笛卡尔积或者self-join的时候,是很有必要的

 Division

        假设A有两个属性x和y

        假设B有一个属性y

        A/B包含了所有的x元组,使得对于每一个B中的y元组,有一个xy元组在A中

  •  在课程表中查找所有修完所有课程的学生的学生证(sid)

  •  查找参加CSE提供的所有课程的学生的学生证(sid)

 Outer Join

  • Join操作的一种延申,可以防止信息的损失
  • 计算Join,然后将一个关系中的与另一个关系中的元组不匹配的元组添加到连接的结果中。

Example

  •  Join只返回匹配的(或" good ")元组
  • L-260贷款没有借款人的事实在结果中不明确
  • Hayes借了一笔不存在的贷款L-155也未被发现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值