概述

域(Domain):由属性构成,是属性的所有取值,一组具有相同数据类型的值的集合;

关系:是域作笛卡尔积后的,有一定意义的,有限的子集;

  • 关系名,应该和其他关系不重名;
  • 单元格包含一个原子值;
  • 同一关系中属性不同名
  • 统一属性的值取自相同的域;
  • 不应该有重复原则;
  • 属性的顺序并不重要;
  • 元组的顺序一般也不重要;

关系是一张二维表,每一行对应一个元组,每个列对应一个属性域;

集合运算

关系和关系运算符组合的有意义的表达式;

一次一关系:

  • 关系运算操作数:关系
  • 关系运算结果:关系
  • 这说明关系运算是一个闭包;

关系名

最简单的表达式:(关系名,表示拷贝)

至少在两个关系出现一次的元组集合

相容性:

  • 一般指有相同的数据结构(属性要同名)
  • 广义上,对应属性来自相同的域,两个关系的属性数量相同;
  • 语义一致

image-20240926173352345

属于但不属于的元组集合

差运算也要求相容性;

image-20240926173757628

既属于又属于的元组集合

注意交集可以用差集表示出来:

image-20240926175352368

笛卡尔积

属性求全集的操作,关系是笛卡尔积的子集

image-20240929175702797

选择

从关系中找出满足给定条件的所有元组称为选择

  • 从行的角度进行的运算,即水平方向抽取元组
  • 经过选择运算得到的结果可以形成新的关系,其关系模式不变,是原 关系的一个子集

垂直方向规模变小

image-20240929175723133

投影

从关系中挑选若干属性组成的新的关系

  • 从列的角度进行的运算,即垂直方向抽取元组
  • 投影的结果中要去掉相同的行

水平方向规模变小;

投影的结果需要自动去重,因此垂直方向也有可能变少;

image-20240929175750842

任何一个连接可以用笛卡尔积和选择关系来表示;

为比较运算符,为等号时称为等值连接,上度数相等且可比较的属性列:

自然连接:从广义的笛卡尔积选取相同属性列上取值相等的元组,去掉重复行:

  • 自然连接中相等的分量必须时相同的属性组;
  • 先计算笛卡尔积,选择同时出现在中相等的元组,去掉所有重复属性

自然连接和等值连接的区别:

  • 自然连接是某种特殊的等值连接;
  • 两个关系中进行比较的分量必须是相同的属性组;
  • 结果重复列去掉;

外连接

左外连接

左外连接(left outer join):左外连接返回左表中的所有记录,以及右表中满足连接条件的记录。

如果右表中没有满足条件的记录,结果会包括左表中的记录,右表的对应字段值为 null

右外连接

右外连接(right outer join):右外连接返回右表中的所有记录,以及左表中满足连接条件的记录。

如果左表中没有满足条件的记录,结果会包括右表中的记录,左表的对应字段值为 null

全外连接

全外连接(full outer join):返回左表和右表中的所有记录,以及左右表中满足连接条件的记录。

如果左表或右表中没有满足条件的记录,结果会包括表中未匹配的记录,对应另一表的字段值为 NULL

重命名运算

对模式名和属性名重命名:

特殊的,对模式重命名和对属性名如下:

重命名运算符的作用:

  1. 统一集合运算两端的关系模式
  2. 自连接

除法

象集:给定关系为属性组,当时,中的象集(Image Set)如下:

象集表示中属性组上值为的各个元组在分量上的集合;

除法:

给定关系,其中

  • 为属性组;

  • 出自相同的域;

  • ,其中满足中满足下列条件的元组在上的 投影

查询优化

关系数据库管理系统首先将用户的 SQL语句转换为等价的关系代数表达式,然后利用系统信息和上面介绍的运算律进 行优化;

若选择运算与广义笛卡儿积满足交换律,则选择运算应该尽可能最先执行,因为选择运算减少了数据,而笛卡儿积应尽可能后执行,因为广义笛卡儿积会产生大量的组合数据.