因为关系模型中,对表的查询结果还是表,所以表之间的关系可以用关系代数来表示。
关系代数有五个基本操作:

  • 选择 selection
  • 投影 projection
  • 集合差 set-difference / minus
  • 集合 union
  • 笛卡尔积 cross-product

支持这五个基本操作的系统则称为是完备的,所有其它操作都能用这五个操作推导。

选择 selection

关系代数 relational algebra - 图1表示。
筛选出符合条件的元组(行)。 :::info 关系代数 relational algebra - 图2的含义就是筛选出Student表中年龄大于8的元组。 :::

投影 projection

关系代数 relational algebra - 图3表示。
排除不在投影列表中的属性。也就是说,筛选出符合条件的属性(列)。
完全重复的元组会被消除。

:::info 关系代数 relational algebra - 图4的含义就是只取出Student表中的name和age列。
如果两个学生的学号不同,但是name和age都相同,如果按照上面进行选择操作,则结果只有一个元组。
(关系模型中,只要属性完全相同,描述的就一定是同一个对象) :::

集合差 set-difference / minus

关系代数 relational algebra - 图5表示。
返回属于集合A且不属于集合B的元组(行)。
参与二元运算的两个集合必须“并兼容”,也就是说属性的个数和数据类型必须对应相同。

集合 union

关系代数 relational algebra - 图6表示。
返回属于集合A或集合B的元组(行)。
参与二元运算的两个集合必须“并兼容”,也就是说属性的个数和数据类型必须对应相同。

笛卡尔积 cross-product

关系代数 relational algebra - 图7表示。
返回集合A与集合B的所有元组随机组合的所有结果,结果中的元组数量为A中元组数与B中元组数的乘积。 :::info image.png
对上图两张表进行笛卡尔积,即关系代数 relational algebra - 图9的结果如下表image.png :::