欢迎光临
我们一直在努力

软考软件设计师/系统架构设计师必考:关系代数(并、交、差、笛卡尔积、选择、投影、连接、除)最全详解

目标:一文彻底掌握软考上午题中“关系代数”所有高频考点。包含并、交、差、笛卡尔积、选择、投影、连接、除八大运算的符号、定义、适用条件、计算方法与典型例题。配学生选课实例和软考风格练习题,看完这篇,无需再翻其他资料。


一、关系代数概述

关系代数是一种过程化查询语言,以关系为运算对象,通过对关系进行一系列运算得到查询结果。关系代数是SQL语言的理论基础,也是软考数据库部分必考内容。

1. 运算分类

  • 基本运算:并、差、笛卡尔积、选择、投影。
  • 导出运算:交、连接、除,可由基本运算组合得到。

2. 并相容性

并、交、差运算要求两个关系满足并相容:

  • 具有相同的属性个数(元数相同)。
  • 对应属性的域相同(或可兼容)。

3. 常用符号

运算符号含义
R ∪ S 两个关系的所有元组合并
R ∩ S 两个关系中共有的元组
R − S 在R中但不在S中的元组
笛卡尔积 R × S 两个关系元组的全组合
选择 σ_条件® 按条件筛选行
投影 π_属性® 选择指定列并去重
连接 R ⋈_条件 S 按条件连接两个关系
自然连接 R ⋈ S 按同名属性等值连接并去重列
R ÷ S 求“包含所有”的元组

二、并、交、差

1. 并(Union)

定义:R ∪ S = { t | t ∈ R 或 t ∈ S }
要求:R和S并相容。
结果:包含R和S中的所有元组,重复元组只保留一个。

示例:

R(A,B): (1,2), (2,3), (3,4)
S(A,B): (1,2), (2,3), (4,5)

R ∪ S = (1,2), (2,3), (3,4), (4,5)

2. 交(Intersection)

定义:R ∩ S = { t | t ∈ R 且 t ∈ S }
要求:R和S并相容。
结果:同时出现在R和S中的元组。

示例:

R ∩ S = (1,2), (2,3)

3. 差(Difference)

定义:R − S = { t | t ∈ R 且 t ∉ S }
要求:R和S并相容。
结果:在R中出现但不在S中出现的元组。

示例:

R − S = (3,4)
S − R = (4,5)

软考常考:并、交、差要求并相容;差运算不满足交换律。


三、笛卡尔积(Cartesian Product)

定义:R × S = { t_R t_S | t_R ∈ R 且 t_S ∈ S }
结果属性:R的属性 + S的属性(若属性名冲突,需加前缀区分)。
结果元组数:|R| × |S|。

示例:

R(A,B): (1,2), (2,3)
S(C,D): (5,6), (7,8)

R × S 结果属性为 (A,B,C,D),共4个元组:
(1,2,5,6)
(1,2,7,8)
(2,3,5,6)
(2,3,7,8)

软考常考:笛卡尔积结果元组数等于两个关系元组数之积;结果属性为两个关系属性之和。


四、选择与投影

1. 选择(Selection)

定义:σ_条件® = { t | t ∈ R 且 t 满足条件 }
作用:从关系中筛选出满足条件的行(元组)。
条件:可用 =、≠、<、≤、>、≥ 及逻辑运算符 ∧、∨、¬。

示例:

R(A,B): (1,2), (2,3), (3,4)

σ_{A>1}(R) = (2,3), (3,4)
σ_{A=2 ∧ B=3}(R) = (2,3)

2. 投影(Projection)

定义:π_属性列表® = { t[属性列表] | t ∈ R }
作用:从关系中选出指定的列,并去除重复元组。

示例:

R(A,B): (1,2), (2,3), (3,4), (4,3)

π_A(R) = (1), (2), (3), (4)
π_B(R) = (2), (3), (4)

软考常考:选择是行运算,投影是列运算;投影结果自动去重。


五、连接(Join)

连接是将两个关系的元组按一定条件拼接成新元组。

1. θ连接(Theta Join)

定义:R ⋈_{条件} S = σ_{条件}(R × S)
条件:可以是 =、<、> 等比较运算。
结果:先做笛卡尔积,再按条件筛选。

示例:

R(A,B): (1,2), (2,3)
S(B,C): (2,5), (3,6), (4,7)

R ⋈_{R.B < S.B} S 结果属性 (A,B,B,C),满足条件的元组:
(1,2,3,6) // 2<3
(1,2,4,7) // 2<4
(2,3,4,7) // 3<4

2. 等值连接(Equi-Join)

定义:θ连接中条件为等号的情况。
示例:R ⋈_{R.B=S.B} S
结果保留两个B列。

3. 自然连接(Natural Join)

定义:R ⋈ S,按两个关系中所有同名属性进行等值连接,并去掉重复属性列。
要求:两个关系有同名属性。
示例:

R(A,B): (1,2), (2,3), (3,4)
S(B,C): (2,5), (3,6), (4,7)

R ⋈ S = (1,2,5), (2,3,6), (3,4,7)

结果属性为 (A,B,C),B列只保留一个。

4. 连接类型对比

连接条件结果属性是否去重列
θ连接 任意条件 R属性+S属性
等值连接 等号条件 R属性+S属性
自然连接 同名属性相等 去掉重复列

软考常考:自然连接与等值连接的区别;自然连接结果属性数 = R属性数 + S属性数 − 同名属性数。


六、除(Division)

定义:R(X,Y) ÷ S(Y) = { x | 对所有 y ∈ S,都有 (x,y) ∈ R }
结果属性:X(即R中除去S属性后的属性)。
用途:解决“包含所有”“选修了全部课程”等查询。

示例:

R(A,B): (1,2), (1,3), (2,3), (3,2), (3,3)
S(B): (2), (3)

R ÷ S = (1), (3)

解释:A=1 对应 B=2,3,包含S中所有B;A=3 对应 B=2,3,也包含;A=2 只对应 B=3,不包含B=2,所以排除。

软考常考:除法用于“全部”“所有”语义;结果属性为R属性减去S属性。


七、综合例题

例题1:学生选课数据库

设:

  • 学生 S(学号, 姓名, 性别, 年龄)
  • 课程 C(课程号, 课程名, 学分)
  • 选课 SC(学号, 课程号, 成绩)

查询1:查询选修了“数据库”课程的学生姓名。

π_{姓名}(σ_{课程名='数据库'}(S ⋈ SC ⋈ C))

或:

π_{姓名}(S ⋈ SC ⋈ σ_{课程名='数据库'}(C))

查询2:查询选修了全部课程的学生学号。

π_{学号,课程号}(SC) ÷ π_{课程号}(C)

查询3:查询至少选修了课程号为“C01”和“C02”的学生学号。

π_{学号}(σ_{课程号='C01'}(SC)) ∩ π_{学号}(σ_{课程号='C02'}(SC))

例题2:计算关系代数表达式

给定:

R(A,B): (1,2), (2,3), (3,4)
S(B,C): (2,5), (3,6), (4,7)

求:

  • R ∪ S?不满足并相容(属性不同),不能直接并。
  • π_A® = (1),(2),(3)
  • σ_{B>2}® = (2,3),(3,4)
  • R ⋈ S = (1,2,5),(2,3,6),(3,4,7)
  • R × S 结果元组数 = 3×3=9。

  • 八、软考常见题型与技巧

    题型一:判断表达式含义

    例题:表达式 π_{学号}(σ_{成绩>90}(SC)) 的含义是( )。
    A. 查询成绩大于90的学生学号
    B. 查询所有学生学号
    C. 查询成绩大于90的课程号
    D. 查询选修了课程的学生学号
    答案:A

    题型二:根据需求写关系代数

    例题:查询没有选修任何课程的学生学号。

    π_{学号}(S) − π_{学号}(SC)

    题型三:计算表达式结果

    例题:R(A,B): (1,2),(2,3),(3,4);S(B,C): (2,5),(3,6)。求 R ⋈ S。
    答案:(1,2,5),(2,3,6)

    题型四:除法应用

    例题:查询选修了全部课程的学生姓名。

    π_{姓名}(S ⋈ (π_{学号,课程号}(SC) ÷ π_{课程号}(C)))


    九、易错点与注意事项

  • 并、交、差必须并相容,否则不能运算。
  • 投影会自动去重,选择不会。
  • 自然连接去掉重复属性列,等值连接保留。
  • 笛卡尔积结果元组数 = |R| × |S|,属性数 = R属性数 + S属性数。
  • 除法用于“包含所有”,结果属性为R属性减去S属性。
  • 差运算不满足交换律,R−S ≠ S−R。
  • 连接条件中属性名冲突需加关系名前缀。
  • 关系代数表达式可以嵌套,先内层后外层。
  • 并、交、差的结果属性名继承第一个关系。
  • SQL与关系代数对应:SELECT对应投影,WHERE对应选择,JOIN对应连接。

  • 十、总结与速记

    速记1:八大运算

    运算符号作用关键点
    合并元组 并相容
    公共元组 并相容
    去掉公共 并相容,不交换
    笛卡尔积 × 全组合 元组数相乘
    选择 σ 选行 条件筛选
    投影 π 选列 自动去重
    连接 按条件拼接 自然连接去重列
    ÷ 包含所有 结果属性为差集

    速记2:核心区别

    • 选择行,投影列。
    • 自然连接去重列,等值连接不去。
    • 除法对应“全部”“所有”。
    • 并交差要并相容。

    速记3:常用表达式

    • 没有选修任何课程:π_{学号}(S) − π_{学号}(SC)
    • 选修了全部课程:π_{学号,课程号}(SC) ÷ π_{课程号}©
    • 选修了“数据库”的学生姓名:π_{姓名}(S ⋈ SC ⋈ σ_{课程名=‘数据库’}©)

    掌握以上内容,配合历年真题练习,关系代数部分即可轻松得分。建议重点练习根据需求写关系代数表达式、自然连接结果计算和除法应用。

    发布日期:2026-09-23
    下期预告:数据库系统——SQL语言(DDL、DML、DCL、查询),敬请关注。

    赞(0)
    未经允许不得转载:171主机测评 » 软考软件设计师/系统架构设计师必考:关系代数(并、交、差、笛卡尔积、选择、投影、连接、除)最全详解
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址