关系代数与数据库操作核心教程(适配NCRE考试)

关系代数与数据库操作核心教程(适配NCRE考试)

1. 核心基础:关系的基本概念

1.1. 关系(表)的定义

关系数据库中,关系就是二维表,核心三要素:

  • 属性:表的列(如R表中的A、B、C),也叫"字段";
  • 元组:表的行(如R表中的(a,1,2)),也叫"记录";
  • :属性的取值范围(如C列的取值只能是1、2)。

1.2. 考试必记:关系的基本性质

NCRE常考"关系的规范性",记住3点:

  1. 列的顺序无关紧要(列名不同,交换列不改变关系);
  2. 行的顺序无关紧要(行的排列不影响关系本质);
  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

顺序:

  1. σA>5(R)σ_{A>5}(R)σA>5(R) (选择)
  2. πB,C(S)π_{B,C}(S)πB,C(S) (投影)
  3. 结果 × 结果 (笛卡尔积)
  4. 最后∪T最后 ∪ T最后∪T (并)

例2:
R×S−σA=B(R⋈S)R × S − σ_{A=B}(R ⋈ S)R×S−σA=B(R⋈S)

顺序:

  1. 括号内:R⋈SR ⋈ SR⋈S(自然连接)
  2. σA=B(...)σ_{A=B}(...)σA=B(...)(选择)
  3. R×SR × SR×S(笛卡尔积)
  4. 最后−最后 −最后−(差)

二级怎么考?

  • 题型:选择题(给出表达式,问执行顺序等价表达式
  • 陷阱:σ、π 同级;×、⋈、÷ 同级;∪、−、∩ 同级,都从左到右
  • 必记:括号 > 选择/投影 > 笛卡尔积/连接/除 > 并/交/差

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必考陷阱):
    1. 两个关系的属性个数相同;
    2. 对应属性的数据类型相同;
    3. 属性名可以不同 ,但顺序必须一致(或按位置匹配)。
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

    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
  • 核心规则
    1. 找两个关系的同名属性(如R和S都有A、B);
    2. 同名属性只保留一列
    3. 只保留同名属性值相等的元组。
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

学生
张三
李四

核心逻辑总结(适合考试速记)

  1. 找出 S 在公共属性 Y 上的所有取值(去重)
  2. 对 R 中每个 X 值,求它在 Y 上的象集(即该 X 对应的所有 Y 值)
  3. 如果象集 ⊇ S 的 Y 投影,则该 X 入选
  4. 最终结果只保留 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. 考试速记技巧(必背)
  1. 先判断:R的属性数 > S的属性数(S是"子集属性");
  2. 找公共属性:两个关系共有的属性列;
  3. 筛剩余属性:只保留R中"能覆盖S所有公共元组"的剩余列值;
  4. 结果:仅保留剩余属性,无重复行;
  5. 空关系也是合法结果,表示没有满足条件的元组。

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
相关推荐
ZC跨境爬虫7 小时前
Scrapy工作空间搭建与目录结构解析:从初始化到基础配置全流程
前端·爬虫·python·scrapy·自动化
小村儿7 小时前
连载04-最重要的Skill---一起吃透 Claude Code,告别 AI coding 迷茫
前端·后端·ai编程
刘~浪地球7 小时前
Redis 从入门到精通(十三):哨兵与集群
数据库·redis·缓存
_院长大人_8 小时前
Vue + ECharts 实现价格趋势分析图
前端·vue.js·echarts
疯笔码良8 小时前
【Vue】自适应布局
javascript·vue.js·css3
dyyshb8 小时前
PostgreSQL 终极兜底方案
数据库·postgresql
浩星8 小时前
electron系列2:搭建专业Electron开发环境
javascript·typescript·electron
IT_陈寒8 小时前
Vite的alias配置把我整不会了,原来是这个坑
前端·人工智能·后端
他们叫我技术总监8 小时前
零依赖!FineReport11 快速对接 TDengine 数据库:从驱动部署到报表实现
大数据·数据库·ai·tdengine
TDengine (老段)8 小时前
TDengine IDMP 可视化 —— 定时报告
大数据·数据库·人工智能·物联网·时序数据库·tdengine·涛思数据