关系代数与数据库操作核心教程(适配NCRE考试)
1. 核心基础:关系的基本概念
1.1. 关系(表)的定义
关系数据库中,关系就是二维表,核心三要素:
- 属性:表的列(如R表中的A、B、C),也叫"字段";
- 元组:表的行(如R表中的(a,1,2)),也叫"记录";
- 域:属性的取值范围(如C列的取值只能是1、2)。
1.2. 考试必记:关系的基本性质
NCRE常考"关系的规范性",记住3点:
- 列的顺序无关紧要(列名不同,交换列不改变关系);
- 行的顺序无关紧要(行的排列不影响关系本质);
- 任意两个元组不能完全相同(即表中无重复行)。
1.3. 关系代数运算分类
1.3.1. 基本运算(原始运算)
| 运算名称 | 符号示例 | 说明 |
|---|---|---|
| 并 | R \\cup S | 由属于R或属于S的所有元组组成 |
| 差 | R−SR - SR−S | 由属于R但不属于S的元组组成 |
| 笛卡尔积 | R \\times S | 由R和S的所有元组组合而成 |
| 选择 | \\sigma_{条件}® | 从R中选择满足条件的元组 |
| 投影 | \\pi_{属性列表}® | 从R中选取指定的列,并去除重复行 |
1.3.2. 派生运算(导出运算)
| 运算名称 | 符号示例 | 说明 | 导出方式 |
|---|---|---|---|
| 交 | R \\cap S | 由属于R且属于S的元组组成 | R \\cap S = R - (R - S) |
| θ连接 | R \\Join_{A \\theta B} S | 从R×S中选择满足θ条件的元组 | \\sigma_{A \\theta B}(R \\times S) |
| 等值连接 | R \\Join_{A = B} S | θ连接当θ为"="时的特例 | \\sigma_{A = B}(R \\times S) |
| 自然连接 | R \\Join S | 等值连接中去掉重复的公共列 | 由等值连接+投影导出 |
| 除 | R \\div S | 包含R中所有与S中每个元组都匹配的元组 | 由笛卡尔积、差、投影等组合导出 |
- 帮你记忆 : 交 ∩ 为什么是派生运算,而并 ∪是基础运算?
答案 : 因为并 无法用其他基本运算表示,而交 可以用"差"推导出来(见上表导出方式)。
1.3.3. 各运算优先级参考
| 优先级 | 运算类型 | 运算符 | 同级内部优先级 |
|---|---|---|---|
| 最高 | 括号 | ( ) | 最优先 |
| 高 | 单目运算 | σ(选择)、π(投影) | 从左到右 |
| 中较高 | 双目关系运算 | ×(笛卡尔积)、⋈(连接) | 从左到右 |
| 中 | 除运算 | ÷(除) | --- |
| 中较低 | 交运算 | ∩(交) | --- |
| 最低 | 并、差运算 | ∪(并)、−(差) | 从左到右 |
口诀(NCRE二级专用):
括 → 选投 → 积连除 → 交并差
真题级示例(判断顺序)
例1:
σ_{A\>5} ® × π_{B,C} (S) ∪ T
顺序:
- σA>5(R)σ_{A>5}(R)σA>5(R) (选择)
- πB,C(S)π_{B,C}(S)πB,C(S) (投影)
- 结果 × 结果 (笛卡尔积)
- 最后∪T最后 ∪ T最后∪T (并)
例2:
R×S−σA=B(R⋈S)R × S − σ_{A=B}(R ⋈ S)R×S−σA=B(R⋈S)
顺序:
- 括号内:R⋈SR ⋈ SR⋈S(自然连接)
- σA=B(...)σ_{A=B}(...)σA=B(...)(选择)
- R×SR × SR×S(笛卡尔积)
- 最后−最后 −最后−(差)
二级怎么考?
- 题型:选择题(给出表达式,问执行顺序 或等价表达式)
- 陷阱:σ、π 同级;×、⋈、÷ 同级;∪、−、∩ 同级,都从左到右
- 必记:括号 > 选择/投影 > 笛卡尔积/连接/除 > 并/交/差
2. 关系代数运算(考试核心)
关系代数是操作关系的"语法规则",也是NCRE必考重点,必须吃透基础运算!
2.1. 选择(σ)------ 按条件筛选行
- 定义 :从关系中选出满足指定条件的元组,不改变列结构。
- 符号 :σ条件(关系名)\sigma_{条件}(关系名)σ条件(关系名)
- 常用条件:=、>、<、且(∧)、或(∨)
2.1.1. 举例
已知R(A,B,C):
| A | B | C |
|---|---|---|
| a | 1 | 2 |
| b | 2 | 1 |
| c | 3 | 1 |
对R表执行 σC=1(R)\sigma_{C=1}(R)σC=1(R),结果是:
| A | B | C |
|---|---|---|
| b | 2 | 1 |
| c | 3 | 1 |
2.1.2. 考试技巧
只看"行筛选",不改动列,条件通常是"=、>、<、且(∧)、或(∨)"。
2.2. 投影(π)------ 选指定列,去重
- 定义 :从关系中选出指定的属性列,并删除重复行(投影必去重)。
- 符号 :π属性1,属性2...(关系名)\pi_{属性1,属性2...}(关系名)π属性1,属性2...(关系名)
2.2.1. 举例
已知R(A,B,C):
| A | B | C |
|---|---|---|
| a | 2 | 2 |
| b | 1 | 1 |
| c | 1 | 1 |
对R表执行 πB,C(R)\pi_{B,C}(R)πB,C(R),结果是:
| B | C |
|---|---|
| 2 | 2 |
| 1 | 1 |
2.2.2. 考试技巧
只看"列筛选",无论选几列,最终必须删除重复行。
2.3. 并(∪)------ 合并两个关系
- 定义 :将两个结构完全相同(属性名、数量、类型一致)的关系合并,删除重复元组。
- 符号 :关系1∪关系2关系1 ∪ 关系2关系1∪关系2
- 前提条件 (NCRE必考陷阱):
- 两个关系的属性个数相同;
- 对应属性的数据类型相同;
- 属性名可以不同 ,但顺序必须一致(或按位置匹配)。
2.3.1. 举例
题目1: 公式形式
- 若:R1(A,B)={(1,2),(3,4)},R2(A,B)={(3,4),(5,6)}
- 则:R1∪R2={(1,2),(3,4),(5,6)}。
题目2: 表格形式
-
已知:
R1(A,B)
A B 1 2 3 4 R2(A,B)
A B 3 4 5 6 -
那么 R1∪R2 的结果是:
R1∪R2
A B 1 2 3 4 5 6
2.3.2. 考试技巧
-
先判断结构是否相同(NCRE 更爱考的是
列数不同一定不能并这个绝对条件) -
不同直接排除"并/交"选项,以下是本技巧的具体应用:
-
题目: 设有关系 R(A,B,C)和 S(A,B,C),以下哪些运算可以执行?
A. R ∪ S
B. R ∩ S
C. R - S
D. R × S
-
考试技巧就是:先看 R 和 S 的结构是否相同(列数相同、数据类型一致)。
- 如果结构不同 → 直接排除 A、B、C 这三个选项(并、交、差都不能做)
- 如果结构相同 → 这三个选项都可能正确,需要进一步判断
- 补充: 笛卡尔积(×)不受结构相同的限制,任何两个关系都可以做笛卡尔积。
-
2.4. 交(∩)------ 取两个关系的公共元组
- 定义 :取出同时存在于两个关系 的元组。交运算的结果结构与原关系一致,但行数 ≤ 原关系行数,且不会增加新列。
- 符号 :关系1∩关系2关系1 ∩ 关系2关系1∩关系2
- 前提条件:与"并运算"完全相同(结构必须一致)。
2.4.1. 举例
题目1: 公式形式
- 若:R1(A,B)={(1,2),(3,4)},R2(A,B)={(3,4),(5,6)}
- 则:R1∩R2={(3,4)}。
题目2: 表格形式
-
已知:
R1(A,B)
A B 1 2 3 4 R2(A,B)
A B 3 4 5 6 -
那么 R1∩R2 的结果是:
R1∩R2
A B 3 4
2.4.2. 考试技巧
- 对应找相同行
- 结构不同直接排除(即:两个表的列数不同,或者列名/数据类型对不上,那么这个交运算在关系代数中就是不合法的,可以直接判断该选项错误,或者该运算无法执行)
2.5. 差(-)------ 一个关系减另一个关系
- 定义 :由属于第一个关系 但不属于第二个关系的元组组成,删除重复元组。
- 符号 :关系1−关系2关系1 - 关系2关系1−关系2(注意:顺序很重要!)
- 前提条件 :与并、交相同,要求两个关系结构相同(属性个数相同、数据类型一致)。
- 关键点 :差运算不可交换 ,即:
- R1−R2≠R2−R1R1 - R2 \neq R2 - R1R1−R2=R2−R1(除非特殊情况)
2.5.1. 举例
-
已知:
R1(A,B)
A B 1 2 3 4 5 6 R2(A,B)
A B 3 4 7 8 -
R1 - R2 的结果(在R1中但不在R2中):
A B 1 2 5 6 -
R2 - R1 的结果(在R2中但不在R1中):
A B 7 8
2.5.2. 考试技巧
- 差运算与并、交一样,要求结构相同(列数不同一定不能做差)
- 注意顺序:R1 - R2 和 R2 - R1 结果不同
- 在选择题中,看到差运算"**先检查两个关系结构是否相同
2.6. 笛卡尔积(×)------ 无条件拼接
-
定义 :将两个关系的元组两两拼接,形成新的关系,具体如下:
- 列数:两个关系属性数之和
- 行数:两个关系行数的乘积(|R| × |S|)
- 拼接方式:R的每一行与S的每一行组合一次
-
符号 : 关系1×关系2关系1 × 关系2关系1×关系2
-
前提条件 : 无------笛卡尔积是唯一不要求两个关系结构相同的运算,具体如下:
- 列数可以不同
- 数据类型可以不同
- 属性名可以重复(但结果中需区分来源)
2.6.1. 举例
例1:基础示例
-
已知:
R(A,B)
A B a 1 S©
C 1 2 -
则 R × S 的结果为:
A B C a 1 1 a 1 2 -
验证
- R有1行,S有2行 → 结果行数 = 1 × 2 = 2行 ✓
- R有2列,S有1列 → 结果列数 = 2 + 1 = 3列 ✓
例2:多行示例
-
已知:
R(A)
A 1 2 S(B)
B x y z -
则 R × S 的结果为:
A B 1 x 1 y 1 z 2 x 2 y 2 z -
验证
- R有2行,S有3行 → 结果行数 = 2 × 3 = 6行 ✓
- R有1列,S有1列 → 结果列数 = 1 + 1 = 2列 ✓
例3:同名属性处理(了解即可)
-
已知:
R(A)
A 1 S(A)
A 2 -
则 R × S 的结果需要区分同名属性,通常表示为:
R.A S.A 1 2 -
注意:NCRE二级一般不考同名属性的处理细节,但了解即可。
2.6.2. 选择、投影、笛卡尔积的区别
| 运算 | 操作 | 列数变化 | 行数变化 | 是否需要条件 |
|---|---|---|---|---|
| 选择(σ) | 筛选行 | 不变 | 减少或不变 | 有条件 |
| 投影(π) | 筛选列 | 减少 | 减少(去重) | 指定列 |
| 笛卡尔积(×) | 拼接行 | 增加(相加) | 增加(相乘) | 无条件 |
2.6.3. 考试技巧
-
核心公式:
- 列数 = R列数 + S列数
- 行数 = R行数 × S行数
-
快速计算:
- 看到笛卡尔积,直接列数相加、行数相乘
- 不考虚任何筛选条件
-
区分其他运算:
- 并/交/差:需要结构相同
- 笛卡尔积:不需要结构相同
-
常见陷阱:
- ❌ 误以为笛卡尔积也需要结构相同
- ✅ 记住:笛卡尔积是"无条件拼接"
2.6.4. NCRE二级常见考题
题型1:计算行数列数
题目:R有4行3列,S有5行2列,则R×S有多少行多少列?
解析:行数 = 4 × 5 = 20行,列数 = 3 + 2 = 5列
题型2:判断运算是否可执行
题目:R有3列,S有2列,以下哪些运算可以执行?
A. R ∪ S
B. R ∩ S
C. R - S
D. R × S
解析:只有D(笛卡尔积)可以,因为并、交、差要求结构相同
题型3:识别笛卡尔积结果
题目:R={(a),(b)},S={(1,2)},则R×S的结果是?
解析:{(a,1,2), (b,1,2)}(R每行与S的(1,2)拼接)
2.6.5. 一句话总结
笛卡尔积 = 列数相加 + 行数相乘 + 无条件拼接
2.7 总结并、交、差的共同点与不同点
| 运算 | 符号 | 是否要求结构相同 | 是否可交换 | 是否去重 |
|---|---|---|---|---|
| 并 | ∪ | ✅ 是 | ✅ 可交换 | ✅ 去重 |
| 交 | ∩ | ✅ 是 | ✅ 可交换 | ✅ 去重 |
| 差 | - | ✅ 是 | ❌ 不可交换 | ✅ 去重 |
| 笛卡尔积 | × | ❌ 不要求 | ❌ 不可交换 | 保留重复 |
注意 :差运算天然不存在重复,不需要额外 去重
题型1. 判断哪些运算可执行
题目 :设有关系R(3列)和S(2列),以下哪些运算可以执行?
A. R ∪ S
B. R ∩ S
C. R - S
D. R × S
答案:只有 D(笛卡尔积)可以,因为R和S列数不同,并、交、差都不能做。
题型2. 计算差运算结果
题目 :R={(1,2),(3,4)},S={(3,4),(5,6)},求R - S
答案:{(1,2)}
题型3. 区分顺序对结果的影响
题目 : 以下哪个选项正确描述了R - S和S - R的关系?
A. 两者结果相同
B. R - S 一定大于 S - R
C. 两者结果一般不同
D. 两者互为补集
答案:C(两者结果一般不同,差运算不可交换)
2.8. θ连接(R⋈θSR \underset{\theta}{\bowtie} SRθ⋈S)------ 带条件的笛卡尔积
-
定义 :先做笛卡尔积,再按指定条件筛选。即:R⋈θS=σθ(R×S)R \underset{\theta}{\bowtie} S = \sigma_{\theta}(R \times S)Rθ⋈S=σθ(R×S)。θ 连接 → 读作:西塔连接
-
符号 :R⋈θSR \underset{\theta}{\bowtie} SRθ⋈S 或者 R⋈θSR {\bowtie}_{\theta} SR⋈θS
θ连接的符号有两种常见写法:写法 示例 教材中出现频率 下标写法 R⋈θSR \bowtie_{\theta} SR⋈θS 常见 下置写法 R⋈θSR \underset{\theta}{\bowtie} SRθ⋈S 也出现,同样正确 -
常见类型:
| 类型 | 条件 | 符号(下置写法) | 符号(下标写法) | 特点 |
|---|---|---|---|---|
| 等值连接 | = | R⋈=SR \underset={\bowtie} SR=⋈S | R⋈=SR {\bowtie}_= SR⋈=S | θ{\theta}θ为"=",保留所有列(同名属性会出现两次) |
| 大于连接 | > | R⋈>SR \underset>{\bowtie} SR>⋈S | R⋈>SR {\bowtie}_> SR⋈>S | θ{\theta}θ为">",只保留满足大于条件的行 |
| 大于等于连接 | ⩾\geqslant⩾ | R⋈⩾SR \underset\geqslant{\bowtie} SR⩾⋈S | R⋈⩾SR {\bowtie}_\geqslant SR⋈⩾S | θ{\theta}θ为"⩾\geqslant⩾",只保留满足大于等于条件的行 |
| 小于连接 | < | R⋈<SR \underset<{\bowtie} SR<⋈S | R⋈<SR {\bowtie}_< SR⋈<S | θ{\theta}θ为"<",只保留满足小于条件的行 |
| 小于等于连接 | ⩽\leqslant⩽ | R⋈⩽SR \underset\leqslant{\bowtie} SR⩽⋈S | R⋈⩽SR {\bowtie}_\leqslant SR⋈⩽S | θ{\theta}θ为"⩽\leqslant⩽",只保留满足小于等于条件的行 |
2.8.1. 考试技巧
- θ连接 = 笛卡尔积 + 选择
- 等值连接是θ连接的特例(条件为"=")
- 自然连接是等值连接的进一步简化(去重)
- NCRE常考:区分等值连接和自然连接的结果
2.9. 自然连接(⋈)------ 最常用的连接运算(NCRE高频)
- 定义 :等值连接的特殊形式,自动按两个关系中同名属性等值连接 ,结果中同名属性只保留一列 ,且该列值来自两个关系中相等的值。
- 符号 :R⋈SR \bowtie SR⋈S
- 核心规则 :
- 找两个关系的同名属性(如R和S都有A、B);
- 同名属性只保留一列;
- 只保留同名属性值相等的元组。
2.9.1. θ连接 vs 等值连接 vs 自然连接(NCRE常考区别)
| 连接类型 | 定义 | 特点 | 示例 |
|---|---|---|---|
| θ连接 | 带任意条件的连接 | 结果包含所有属性(可能有重复列) | R⋈R.A>S.BSR \bowtie_{R.A > S.B} SR⋈R.A>S.BS |
| 等值连接 | 条件为"="的θ连接 | 结果包含所有属性(可能有重复列) | R⋈R.A=S.BSR \bowtie_{R.A = S.B} SR⋈R.A=S.BS |
| 自然连接 | 按同名属性等值连接 | 结果去掉重复列 | R⋈SR \bowtie SR⋈S |
关键区别:
- 等值连接:条件只能是"=",但保留所有列(同名属性会出现两次,如R.A和S.A)
- 自然连接:自动按所有同名属性等值连接,且去掉重复列(同名属性只保留一列)
2.9.2. 举例
例1:
-
已知:R(A,B,C):
A B C a 1 2 b 2 1 c 3 1 S(A,B):
A B c 3 -
那么:自然连接R ⋈ S的结果为:
A B C c 3 1 解析:自然连接自动按同名属性A、B进行等值匹配,只保留A、B值相等的元组(即R中(c,3,1)与S中(c,3)匹配),并去重A、B列。
例2:
-
已知:
R(A,B)
A B 1 2 3 4 S(A,C)
A C 1 5 3 6 -
那么:
等值连接 R⋈R.A=S.ASR ⋈_{R.A = S.A} SR⋈R.A=S.AS 的结果:R.A B S.A C 1 2 1 5 3 4 3 6 自然连接 R⋈SR ⋈ SR⋈S 的结果:
A B C 1 2 5 3 4 6
2.9.3. 考试技巧
- 对应找同名属性,等值拼接,去重列。
2.10. 除运算(÷)------ NCRE难点
在关系代数中,除法运算可理解为笛卡尔积的逆运算。
- 定义
设关系 R(X, Y) 、、、 S(Y) ,其中 X 、、、 Y 为属性组, R 与 S 在 Y 上属性名相同、域相同。
R \\div S 的结果为属性组 X 上的关系,由满足以下条件的 X 值组成:
该 X 值在 R 中的象集 Y_x 包含 S 在 Y 上的全部投影 。
记作:
R÷S={tr[X]∣tr∈R∧ΠY(S)⊆Yx}R \div S = \{ t_r[X] \mid t_r \in R \land \Pi_Y(S) \subseteq Y_x \}R÷S={tr[X]∣tr∈R∧ΠY(S)⊆Yx}其中 Y_x = { t_r\[Y\] \\mid t_r \\in R \\land t_r\[X\] = x } 。
2.10.1. 举例
例1:
设有关系 R(学生,课程) 和关系 S(课程),两个关系的数据如下:
-
R(学生,课程)
学生 课程 张三 数据库 张三 数据结构 张三 操作系统 李四 数据库 李四 操作系统 王五 数据结构 王五 操作系统 赵六 数据库 -
S(课程)
课程 数据库 操作系统
求: R \\div S = ?
以下是解题步骤:
第一步: 确定除法的结构
根据除法定义:
- R 的属性组为 (X, Y) ,其中:
- X = {学生}
- Y = {课程}
- S 的属性组为 (Y) ,其中:
- Y = {课程}
R 与 S 在属性 课程 上 属性名相同、域相同。
第二步: 计算 S 在 Y 上的投影
这里 S 的属性就是 Y,所以:
ΠY(S)={数据库,操作系统}\Pi_Y(S) = \{ \text{数据库}, \text{操作系统} \}ΠY(S)={数据库,操作系统}
即 S 中所有课程。
第三步: 对 R 中每个 X 值(每个学生),求其在 Y 上的象集
象集定义:某个学生所选的全部课程集合。
| x (学生) | 象集 Y_x (该学生所选课程) |
|---|---|
| 张三 | {数据库,数据结构,操作系统} |
| 李四 | {数据库,操作系统} |
| 王五 | {数据结构,操作系统} |
| 赵六 | {数据库} |
第四步: 判断象集是否包含 \\Pi_Y(S)
\\Pi_Y(S) = { \\text{数据库}, \\text{操作系统} }
-
张三的象集:{数据库,数据结构,操作系统}
✅ 包含 {数据库,操作系统}
-
李四的象集:{数据库,操作系统}
✅ 包含 {数据库,操作系统}
-
王五的象集:{数据结构,操作系统}
❌ 不包含 {数据库}
-
赵六的象集:{数据库}
❌ 不包含 {操作系统}
第五步: 取满足条件的学生作为最终结果
满足条件的学生有:张三 、李四
因此: R \\div S = { \\text{张三}, \\text{李四} }
结果表
R ÷ S
| 学生 |
|---|
| 张三 |
| 李四 |
核心逻辑总结(适合考试速记)
- 找出 S 在公共属性 Y 上的所有取值(去重)
- 对 R 中每个 X 值,求它在 Y 上的象集(即该 X 对应的所有 Y 值)
- 如果象集 ⊇ S 的 Y 投影,则该 X 入选
- 最终结果只保留 X 属性
例2:
有三个关系 R、S和和如下:
-
R:
A B C a 1 2 b 2 1 c 3 1 -
S:
A B c 3 -
T
C 1 -
请问,由关系R和S得到关系T的操作是( )。
\\bigcirc A.自然连接
\\bigcirc B.交
\\bigcirc C.除
\\bigcirc D.并
正确答案: C
以下是解析过程
方法1:排除法
- 并、交、差 运算要求两个关系的结构一致,题目中的R、S结构是不一致的,所以,排除 B 和 D 两个选项。
- 联接操作的属性列是两个关系的并集,所以,属性有 A、B、C三个,而不是只有C,再排除 A 选项。
- 所以,正确答案是 C 。
方法2:直接计算
这里只介绍除法的计算方法:
- 步骤1:找到关系R与S共有的公共属性Y = {A,B}
- 步骤2:找到关系R中不在S中的剩余属性X = {C}
- 步骤3:找到关系S的公共属性Y的所有取值 = {(c,3)}
- 步骤4:逐个检查关系R的每个属性C对应的(A,B)属性取值集合是否包含在S的所有Y的值中:
- 关系R的C=2时:对应(A,B) = {(a,1)},不包含在关系S的Y的取值={(c,3)},因此要排除掉;
- 关系R的C=1时:对应(A,B)的取值集合为 {(b,2), (c,3)},包含在关系S的Y的取值{(c,3)}中,因此要保留;
- 最终结果:只保留X={C},且C=1,即关系T(C列为1):完全符合除运算定义。所以,正确答案为 C 。
2.10.2. 考试速记技巧(必背)
- 先判断:R的属性数 > S的属性数(S是"子集属性");
- 找公共属性:两个关系共有的属性列;
- 筛剩余属性:只保留R中"能覆盖S所有公共元组"的剩余列值;
- 结果:仅保留剩余属性,无重复行;
- 空关系也是合法结果,表示没有满足条件的元组。
2.11. 赋值(←)------ 运算结果存为新关系
- 定义:将关系代数运算的结果赋值给一个新关系名,如 T ← R ÷ S。
- 考试中仅用于表述结果,无需单独计算。
3. NCRE真题解题技巧(快速判断选项)
结合 2.10.1. 举例 中的 例2 的错题,总结3步解题法,10秒搞定关系运算题:
步骤1:看属性结构(先排除2个错误选项)
- 若两个关系属性数不同:直接排除"并、交"(这两种运算要求结构匹配);
- 若只有一个关系有剩余列,另一个是"列子集":优先考虑"除运算"。
步骤2:看结果结构(锁定正确运算类型)
| 结果列数特征 | 可能运算 |
|---|---|
| 结果列数 = R列数 - S列数 | 除运算(R ÷ S) |
| 结果列数 < 原关系列数 | 投影(去掉某些列) |
| 结果列数 = 两关系列数和 - 同名属性数 | 自然连接 |
| 结果列数不变,行数减少 | 选择(需进一步验证) |
步骤3:验证定义(确保100%正确)
- 除运算:验证结果中每个值在R中的象集,是否包含S在公共属性上的全部取值
- 自然连接:验证是否按同名属性等值连接,且同名属性只保留一列
- 选择:验证是否按指定条件筛选行
- 投影:验证是否只保留指定列并去重
4. 真题复盘
以下是基于 2.10.1. 举例 中的 例2 的错题复盘:
| 选项 | 错误原因 | 快速判断依据 |
|---|---|---|
| A.自然连接 | 结果列数不符 | 自然连接结果应为3列,而T只有1列 |
| B.交 | 结构不满足 | 交运算要求两关系属性数相同,R(3列)与S(2列)不满足 |
| C.除 | ✅ 符合定义 | 剩余属性C能覆盖S所有(A,B)值,结果仅保留C列 |
| D.并 | 结构不满足 | 并运算要求属性数相同,直接排除 |
5. 考前必练3道典型题(巩固考点)
5.1. 题1(基础题)
已知R(A,B)={(1,2),(3,4),(5,6)},S(A)={(1),(3)},求R ÷ S的结果。
解析:
- 公共属性Y:A
- 剩余属性X:B(即R中不在S中的属性)
- 检查每个B值对应的A值是否包含S中所有A值:
- B=2 → A={1} → 不包含3 → 排除
- B=4 → A={3} → 不包含1 → 排除
- B=6 → A={5} → 不包含1,3 → 排除
- 结果:∅(空关系)
注:空关系也是合法关系,表示没有满足条件的元组。
5.2. 题2(易错题)
已知R(A,B,C)={(x,1,a),(y,2,b),(x,1,c)},S(B,C)={(1,a),(2,b)},求R ÷ S的结果。
解析:
- 公共属性Y:B,C
- 剩余属性X:A(即R中不在S中的属性)
- 检查每个A值对应的(B,C)是否包含S中所有元组:
- A=x → (B,C)={(1,a)} → 不包含(2,b) → 排除
- A=y → (B,C)={(2,b)} → 不包含(1,a) → 排除
- 结果:∅(空关系)
5.3. 题3(综合题)
已知R(A,B)={(a,1),(a,2),(b,1)},S(B)={(1),(2)},判断R ÷ S的结果是否为{(a)}。
解析:
- 公共属性Y:B
- 剩余属性X:A(即R中不在S中的属性)
- 检查每个A值对应的B值是否包含S中所有B值:
- A=a → B={1,2} → 包含1和2 → 保留
- A=b → B={1} → 不包含2 → 排除
- 结果:{(a)} ✅
6. 考前速记卡(可裁剪随身记)
| 运算 | 符号 | 作用 | 关键考点 |
|---|---|---|---|
| 选择 | σ | 筛选行 | 不改列 |
| 投影 | π | 筛选列 | 必去重 |
| 并 | ∪ | 合并相同结构 | 结构必须一致 |
| 交 | ∩ | 取公共行 | 结构必须一致,行数≤原关系 |
| 笛卡尔积 | × | 两两拼接 | 属性数相加,行数相乘 |
| 自然连接 | ⋈ | 同名等值连接 | 同名属性只留一列,值相等才保留 |
| 除运算 | ÷ | 找能覆盖所有子集的值 | 剩余属性保留,X = R - Y。其中,X 是 R 去掉公共列 Y |