Skip to content

Latest commit

 

History

History
80 lines (53 loc) · 5.45 KB

关系代数.md

File metadata and controls

80 lines (53 loc) · 5.45 KB

介绍

关系代数在 1970 年 E.F. Codd 发表数据的关系模型之前很少受到注意,Codd 提议这样一种代数作为数据库查询语言的基础。

Codd 代数的五个基本算子是选择(selection投影(projection笛卡尔积(Cartesian product,也称为叉积或交叉连接)、并集(set union)和差集(set difference

集合运算

关系代数使用集合论中的 并集、_**差集 **_和 笛卡尔积 的概念,但对这些运算符添加了额外的约束。

  • 对于_**并集 **_和 差集,所涉及的两个关系必须是 “并集兼容”(union-compatible) 的 —— 即这两个关系必须具有相同的属性集合。因为 交集 是根据 _**并集 **_和 差集 来定义的,所以 交集 所涉及的两个关系也必须是 “并集兼容” 的。
  • 对于 笛卡尔积,所涉及的两个关系必须具有不相交的表头 —— 也就是说,它们不能具有共同的属性名称。

此外,笛卡尔积的定义与集合论中的定义不同,因为元组被认为是“弱”(shallow)的,用于操作。也就是说,一组 n 元组与一组 m 元组的笛卡尔积产生一组“扁平化”的 (n + m) 元组(而基本集合理论中会产生一组 2 元组,每个包含一个 n 元组和一个 m 元组)。更正式地,R × S 定义如下:

$R\times S:={(r_1,r_2,\dots,r_n,s_1,s_2,\dots,s_m)|(r_1,r_2,\dots,r_n)\in R, (s_1,s_2,\dots,s_m)\in S}$

笛卡尔积的基数是其因子的基数的乘积,即 |R × S| = |R| × |S|。

投影(Π)

投影是一种写作 $\Pi_{a_{1}, \ldots,a_{n}}( R )$一元运算,这里的 ${a_{1},\ldots,a_{n}}$ 是一组属性名称,这种投影的结果定义为当所有在 $R$ 中的元组(tuples)被限制为集合 ${a_{1},\ldots,a_{n}}$ 的时候所获得的集合。

Note: 当在 SQL 标准中实现时,“默认投影”返回的是一个多重集(multiset)而不是一个集合,消除重复数据的 $\Pi$ 投影是通过添加 DISTINCT 关键字获得的。

选择(σ)

**广义选择 **是一种写成 $\sigma _\varphi(R)$ 的一元运算,其中 $\varphi$ 是一个由正常选择中允许的原子和逻辑算子 $\wedge$and)、$\lor$(or)和 $\neg$negation)组成的 命题公式,这种选择选出 $R$ 中所有使 $\varphi$ 成立的元组。

要获得地址簿中所有朋友或商业伙伴的列表,选择可能写为 $\sigma _{{\text{isFriend = true}},\lor ,{\text{isBusinessContact = true}}}({\text{addressBook}})$。结果将是一个包含每个唯一记录的每个属性的关系,其中 isFriend 为真或 isBusinessContact 为真。

重命名(ρ)

重命名是一种一元运算,写成 $\rho_{a / b}(R)$ 其中结果与 $R$ 相同,只是所有元组中的 $b$ 属性都被重命名到 $a$ 属性。这仅用于重命名关系的属性或关系本身。

要将关系中的 “isFriend” 属性重命名为 “isBusinessContact”,可以使用 $\rho_{\text{isBusinessContact / isFriend} } ( \text{addressBook} )$ 。 还有 $\rho_{x(A_{1},\ldots ,A_{ n})}(R)$ 表示法,其中 R 重命名为 x 并且属性${a_{1},\ldots ,a_{n}}$重命名为 ${A_{1},\ldots ,A_{n}}$

连接和类似连接的运算

自然连接 (Natural join, ⋈)

自然连接是写为 (R ⋈ S)的二元运算,这里的 R 和 S 是关系。自然连接的结果是在 R 和 S 中的在它们的公共属性名字上相等的所有元组的组合。例如下面是表格 “Employee” 和 “Dept” 和它们的自然连接:

img

θ-连接(θ-join)和相等连接(equijoin)

半连接 (Semijoin, ⋉, ⋊)

反连接 (Antijoin, ▷)

除法 (Division, ÷)

扩展

外连接(Outer joins)

左外连接 (⟕)

右外连接 (⟖)

全外连接 (⟗)

域计算的运算

聚合运算(Aggregation)

传递闭包(Transitive closure)

有用于查询优化的代数性质

选择

基本选择性质

分解有复杂条件的选择

选择和叉积

选择和集合运算

选择和投影

投影

基本投影性质

投影和集合运算

重命名

基本重命名性质

重命名和集合运算

Product and union

Links

  1. https://en.wikipedia.org/wiki/Relational_algebra