对一个relation的集合做查询操作会产生相应的集合!
下面用一个大学申请系统做示例

下面要做的是利用不同操作选取出我们想要的结果!
select 选择操作
select操作选出满足条件对应的行 格式为

Project操作
project操作用于选出符号条件的列的列 格式为
当我们又要选出指定row和指定column的时候,我们可以对操作符进行组合
例如选出 ID and name of students with gpa>3.7用上述操作符表示为
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还可以用来消除歧义

或

解决重复问题 可以用

Expression Tree

关系代数查询操作详解

博客以大学申请系统为例,介绍关系代数的多种查询操作。包括select选行、project选列,还涉及duplicate、cross - product、natural join等操作,阐述了各操作的格式、用途及相互关系,如cross - product和natural join的异同,以及如何用操作符组合实现特定查询。

823

被折叠的 条评论
为什么被折叠?



