Relational Algebra 基于 set algebra,定义了在 relation 中获取和操作 tuples 的一些基础运算 (primitives)。
每个 operator 接受一个或多个 relation (table) 作为输入,并输出一个新的 relation。因此我们可以链式使用 operator 来做到复杂的操作。
Operators
Selection | 选择
选择操作从关系中选择满足特定条件的元组。
形式化地说,,即选择出 中所有满足命题 的元素的集合。
符号助记: = sigma = s = selection
其中,谓词 是由一系列 、、 连接的命题组成的,每个命题满足形式:
其中 为 之一。
例如: 表示关系 中 为 "Physics" 且 大于 90000 的元素形成的子集。
Projection | 投影
投影操作从关系中选择特定的属性列,并可以重新处理属性顺序、去除不想要的属性、根据属性做操作得到新的属性。
例如: 表示从教师关系中选择姓名属性,并计算工资属性的两倍作为新的属性。
符号助记: = pi = p = projection
Union | 并
并操作将两个关系合并,返回包含两个关系中所有元组的新关系。
形式化地说,,即包含 和 中所有元组的集合。
要求: 和 必须是并相容的(union-compatible),即:
- 两个关系具有相同的属性数量
- 对应位置的属性具有相同的域(domain)
例如: 表示所有教师和学生的并集。
Intersection | 交
交操作返回两个关系中共有的元组。
形式化地说,,即同时属于 和 的元组集合。
要求: 和 必须是并相容的。
例如: 表示既是教师又是学生的元组。
Difference | 差
差操作返回属于第一个关系但不属于第二个关系的元组。
形式化地说,,即属于 但不属于 的元组集合。
要求: 和 必须是并相容的。
例如: 表示是教师但不是学生的元组。
Cartesian Product | 笛卡尔积
笛卡尔积操作将两个关系的元组进行组合,生成所有可能的元组对。
形式化地说,,其中 表示元组 和 的连接。
结果关系的模式是 和 模式的并集,属性名可能冲突时需要重命名。
例如: 表示教师和部门的所有可能组合。
Join | 连接
连接操作是笛卡尔积和选择的组合,用于根据特定条件连接两个关系。
Natural Join | 自然连接
自然连接 自动连接具有相同属性名的元组,并消除重复属性。
形式化地说,,其中 是 和 的共同属性。
Theta Join | θ连接
θ连接 根据条件 连接两个关系。
形式化地说,,其中 是连接条件。
Equijoin | 等值连接
等值连接是 θ连接的特例,其中连接条件只包含等号比较。
例如: 表示根据部门名称连接教师和部门信息。