投影与选择
投影 做什么?
- 输入: 一个关系 R;
- 输出: 只保留 R 的部分列得到的新关系 S;
- 写法: , 下标列出要保留的属性;
- 元数: 输出关系的属性个数等于下标中的属性个数;
- 元组数: 集合语义下会合并重复元组, 因此可能少于 R; 需要保留重复时用包上的拓展投影, 见 包语义;
选择 做什么?
- 输入: 一个关系 R 与条件 C;
- 输出: R 中满足条件 C 的元组构成的子集;
- 写法: ;
- 模式: 输出关系的属性与 R 完全相同, 只减少元组;
投影与选择的区别是什么?
| 维度 | 投影 | 选择 |
|---|---|---|
| 作用对象 | 列 (属性) | 行 (元组) |
| 条件 | 保留哪些属性 | 保留哪些元组 |
| 结果元数 | 减少 | 不变 |
| 结果基数 | 可能减少 | 不增加 |
- 组合: 先按条件选行, 再只保留需要的列;
(source: 010-关系数据模型.md §代数查询语言/§投影/§选择)