关系代数分为:

  • 集合操作:交、并、差、笛卡尔积
  • 纯关系操作:投影、选择、连接、除。

并相容性

某些运算、如交、并、差,需要满足并相容性。
并相容性需要满足:

  • 关系R和关系S的属性数目必须相同;
  • 对于任意i,关系R的第i个属性的域必须和关系S的第i个属性的域相同

交、并、差都很简单、不再赘述。

广义笛卡尔积操作

形象地讲就是“拼接”。
笛卡尔积

选择操作

基本写法:
笛卡尔积

投影

符号:
即把某些属性单独拎出来。
笛卡尔积
投影后的相同元素注意去重。

theta-连接操作

查询数据结构成绩在90分以上的学生姓名(涉及Student, Course, SC):
题目信息
这就需要-连接操作
方法是:先进行笛卡尔积,再筛选。
连接
(注:形成笛卡尔积是方便理解,实际上这种做法会耗费算力)

有时候,-连接操作连接的是同一张表,为避免冲突,可以将表重命名(看成两张表)

等值连接:

等值连接

举例:
等值连接举例

自然连接:

概念:
给定关系R和关系S, R与S的自然连接运算结果也是一个关系,它由关系R和关系S的笛卡尔积中选取相同属性组B上值相等的元组所构成。

  • 自然连接是一种特殊的等值连接
  • 要求关系R和关系S必须有相同的属性组B(如R,S共有一个属性B1,则B是B1 , 如R, S共有一组属性B1, B2, …, Bn,则B是这些共有的所有属性)
  • R, S属性相同,值必须相等才能连接,即R.B1 = S.B1 and R.B2 = S.B2 … and R.Bn = S.Bn才能连接
  • 要在结果中去掉重复的属性列(因结果中R.Bi 始终是等于S.Bi 所以可只保留一列即可)

自然连接举例:
自然连接举例

除操作

先看例子吧:
除运算

可以看到,R÷S 与 S 的笛卡尔积是R的子集。

外连接

思考这个问题:
列出所有老师的有关信息,包括姓名,工资,所教课程等。
外连接

如果使用普通的连接,003号教师的信息会丢失。

外连接解决的就是这个问题:当两个表内无法匹配,会生成一个空值。而不是把信息直接丢掉。

外连接= 自然连接(或连接) + 失配的元组(与全空元组形成的连接)
外连接的形式:左外连接、右外连接、全外连接
左外连接= 自然连接(或连接) + 左侧表中失配的元组
右外连接= 自然连接(或连接) + 右侧表中失配的元组
全外连接= 自然连接(或连接) + 两侧表中失配的元组

外连接

例:
题目

答案

注意(2)中的减操作
(4)中的”包含”,和除操作的本质有什么联系呢?