关系代数
概述
关系代数是 Codd 为操纵关系数据设计的形式化运算体系,包含选择、投影、并、差、笛卡尔积五种基本运算,其闭包性保证了运算可以任意组合和嵌套。
关键内容
五种基本运算
| 运算 | 符号 | 功能 |
|---|---|---|
| 选择(Selection) | σ | 筛选满足特定条件的元组 |
| 投影(Projection) | π | 选取特定的属性列 |
| 并(Union) | ∪ | 合并两个兼容关系的元组 |
| 差(Difference) | − | 从一个关系中去除另一个关系中也存在的元组 |
| 笛卡尔积(Cartesian Product) | × | 将两个关系的元组进行组合 |
派生运算
- 连接(Join):将两个关系中满足特定条件的元组配对组合
- 自然连接(Natural Join):根据同名属性自动匹配的特殊连接
- 交集(Intersection)、除法(Division)等
闭包性(Closure)
每个关系运算的输入是一个或多个关系,输出也是一个关系。这意味着: - 运算可以任意组合和嵌套 - 一个查询的结果可以直接作为另一个查询的输入 - 为查询优化提供了理论基础:优化器可以在不改变结果的前提下重新排列运算顺序
查询优化
关系代数的等价变换规则是查询优化器的核心: - 选择操作可以"下推"到连接操作之前执行,减少需要连接的数据量 - 连接操作满足结合律 - 选择操作可以与投影操作交换顺序
来源
- raw/books/计算机科学/07-codd-relational-model.md