StanfordDB class自学笔记 (6) 关系代数

对一个relation的集合做查询操作会产生相应的集合!

下面用一个大学申请系统做示例

下面要做的是利用不同操作选取出我们想要的结果!

select 选择操作

select操作选出满足条件对应的行 格式为\large \sigma _{condition} table

Project操作

project操作用于选出符号条件的列的列  格式为\large \Pi _{condition}table

当我们又要选出指定row和指定column的时候,我们可以对操作符进行组合

例如选出 ID and name of students with gpa>3.7用上述操作符表示为   \large \Pi _{SID,SName}(\sigma _{gpa>3.7} Student)

Duplicate

在关系代数中,duplicate的值是会被删除的,和SQL不同,SQL允许multisets的存在

Cross-Product操作

cross-prudct操作是讲若干个表联合 如有相同的attribute,操作会区分不同table的attribute

  

利用cross-product进行下图中操作选取满足条件的学生name和gpa

Natural Join操作

natural join 操作是和cross-product类似 但是略有不同

  • 组合相同的attribute中相同的value称为一个tuple
  • 会删除多余相同的attribute

Cross-Product和Natural Join的关系

Theta Join操作

theta join操作可以看成是对某两个表达式进行cross-product再选出对应的tuple

 

Union操作

union可以看成是将数据垂直的放在一起,比如我想把stanford和susan(学生的名字)作为两行数据

这时候就需要union操作

Difference操作

difference 相当于从集合中删去某些元素,如下图,从所有的学生中找出没有申请的学生的ID和name

下面这个首先用了difference操作找出ID,然后join back,再对得到的table进行project sName操作。

Intersection操作

intersection操作就是取两个table的共同值,见下图例子

严格来说 左边两边要有同样的schema,这个之后的课会提到如何改进。

并且intersection可以通过其他的操作来实现!

Rename操作

rename有些时候是必须的,对我们非常有帮助!其中rename操作的格式如下

在之前讲的union intersect difference操作,我们希望两边的schema是相同的,rename操作让我们fix这个问题!例子如下

rename还可以用来消除歧义

解决重复问题 可以用 \large \sigma _{n1<n2}

Expression Tree

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值