知识卡片
集合运算与专门关系运算的分工
内容
关系代数的运算分成两类,分工非常明确:传统集合运算(并/差/交/笛卡儿积) 处理的是”两个结构相同(或可组合)的关系之间怎么整体组合”,专门关系运算 (选择/投影/连接)处理的是”从一个或几个关系里怎么按条件挑出想要的部分”。 并/差/交要求参与运算的两个关系属性数量相同且对应属性来自同一个域(否则 “求交集”这个操作本身就没有意义),运算结果是关系整体层面的集合操作, 不涉及对单条记录内部的裁剪。选择运算是”按行筛”:从一个关系里挑出满足 逻辑条件p的元组,结果的属性不变,只是元组变少了;投影运算是”按列筛”: 从一个关系里只保留指定的属性列,会自动去重(因为去掉列之后原本不同的 元组可能变得完全相同);连接运算则是”先做笛卡儿积、再按条件筛”的复合 操作,从两个关系的笛卡儿积结果里,挑出满足指定属性比较条件的元组—— 选择运算的”行筛选”逻辑被套用到了两个关系合并后的结果上。这套分工说明 关系代数并不追求用一个万能运算符解决所有问题,而是把”整体组合”和”局部 筛选”拆成正交的两套工具,实际查询往往需要组合使用(先笛卡儿积/连接把 需要的表拼起来,再用选择/投影筛出需要的行和列)。
结构图:
flowchart LR
A[关系代数运算] --> B[传统集合运算<br/>整体组合两个关系]
A --> C[专门关系运算<br/>局部筛选]
B --> B1[并/差/交: 要求属性数相同+同域]
B --> B2[笛卡儿积: 无此要求,产生全组合]
C --> C1[选择σ: 按行筛,属性不变]
C --> C2[投影Π: 按列筛,自动去重]
C --> C3[连接⋈: 先笛卡儿积再按条件筛行]
参考来源
- 位置:《数据库原理(微课版)》第2章《关系数据库》2.4.1-2.4.2节
(源文件:_epub-src/index_split_002.html)
- 结论依据:原文说明并/差/交运算"参与运算的两个关系具有相同的属性数量
……对应的属性来自同一个域",选择运算是"从关系R中选取逻辑表达式p为真
的元组……是从行的角度进行选择的运算",投影运算是"从R中选择若干属性列
组成新的关系……投影操作之后的结果会自动去掉重复的元组",连接运算"从
R和S的笛卡儿积中选择出满足A θ B逻辑表达式的元组",因此可以推出两类
运算在功能分工上的差异。
- 原始内容:选择运算实际上是从关系R中选取逻辑表达式p为真的元组。这是
从行的角度进行选择的运算……投影操作之后的结果会自动去掉重复的元组
……连接运算从R和S的笛卡儿积中选择出满足A θ B逻辑表达式的元组。