高级软考-系统架构设计师知识点4

什么是自然连接?笛卡尔积怎么计算?

🧩 一、自然连接的定义(Natural Join)

自然连接(Natural Join)

是一种特殊的连接运算,它会自动根据两个关系中相同名称的属性 进行等值匹配

并且在结果中去掉重复的列

数学记号:

复制代码

R ⋈ S

复制代码

R ⨝ S

📘 一句话理解:

"自然连接 = 自动找出同名列 → 进行等值连接 → 删除重复列。"


🧮 二、自然连接的计算步骤

假设有两个关系:

复制代码

R(A, B, C) S(B, D, E)

步骤:

1️⃣ 找出公共属性(同名列)

  • 公共属性:B

2️⃣ 对公共属性做等值连接

  • 计算结果包括所有 R 和 S 中满足 R.B = S.B 的元组。

3️⃣ 去掉重复列

  • 因为 R 和 S 都有 B,所以结果中只保留一个 B。

📘 数学表达:

复制代码

R ⋈ S = σ_{R.B = S.B} ( R × S ) 的投影,且删除重复 B 列


📊 三、举例说明

关系 学生表(Student)

学号 姓名 班级
1 张三 101
2 李四 102
3 王五 103

关系 班级表(Class)

班级 班主任
101 王老师
102 李老师
104 赵老师

计算自然连接:

复制代码

Student ⋈ Class

步骤 1:找公共列 → "班级"

步骤 2:做等值连接(Student.班级 = Class.班级)

学号 姓名 班级 班主任
1 张三 101 王老师
2 李四 102 李老师

(注:班级103、104因无匹配项,不出现在结果中)

步骤 3:去掉重复列

此处班级只出现一次(已自动完成)。

最终结果:

学号 姓名 班级 班主任
1 张三 101 王老师
2 李四 102 李老师

🔍 四、自然连接 vs 其他连接的区别

连接类型 条件方式 是否指定属性 是否去重 示例
笛卡尔积(×) 无条件连接 R × S
θ连接(Theta Join) 任意条件(<, >, = 等) 需手动指定 R ⋈_{R.B>S.B} S
等值连接(Equi Join) 相等条件 需手动指定 R ⋈_{R.B=S.B} S
自然连接(Natural Join) 自动使用同名列的相等条件 ✅ 去掉重复列 R ⋈ S

📘 小结:

自然连接 = 等值连接 + 自动找同名列 + 去重


⚙️ 五、特殊情况与变形

情况 结果
无同名列 退化为笛卡尔积
公共列值不匹配 不出现在结果中(内连接效果)
多个同名列 所有同名列都要相等才匹配成功

🧠 六、软考常见考题类型

题型 示例 答案思路
选择题 "自然连接操作的特点是?" 答:自动按同名列匹配并去重
填空题 "若 R(A,B) 与 S(B,C) 进行自然连接,则结果模式为?" 答:R⋈S(A,B,C)
计算题 给出具体表格,要求列出自然连接结果 找同名列→匹配→去重

什么是笛卡尔积?

🧩 一、笛卡尔积的定义

笛卡尔积(Cartesian Product)

是关系代数中的一种二元运算,用于把两个关系(表)中每一行都与另一表的每一行组合

数学表示:

复制代码

R × S

📘 通俗理解:

"行 × 行 = 所有可能的组合"

如果一个表有 3 行,另一个表有 4 行,结果就有 3×4 = 12 行。


🧮 二、计算规则

假设:

复制代码

R 有属性 (A1, A2, ..., Am),共 n1 条记录 S 有属性 (B1, B2, ..., Bn),共 n2 条记录

那么:

复制代码

R × S 的结果属性为 (A1, A2, ..., Am, B1, B2, ..., Bn) 记录条数为 n1 × n2


📊 三、举例说明

关系 R(学生)

学号 姓名
1 张三
2 李四

关系 S(课程)

课程号 课程名
A 数学
B 英语
C 物理

计算笛卡尔积 R × S:

即把 每个学生每门课程 组合:

学号 姓名 课程号 课程名
1 张三 A 数学
1 张三 B 英语
1 张三 C 物理
2 李四 A 数学
2 李四 B 英语
2 李四 C 物理

结果共有 2 × 3 = 6 行


🧱 四、属性命名规则

如果两个关系中有重名属性,要在结果中加上前缀以区分:

例如:

复制代码

R(A, B) S(B, C) R × S → (A, R.B, S.B, C)

📘 注意:

  • 自然连接(⋈)和等值连接都会在笛卡尔积的基础上"加条件";

  • 笛卡尔积本身不加任何条件。


⚙️ 五、笛卡尔积与其他连接的关系

运算 条件 含义 结果行数
笛卡尔积(×) 无条件 所有行两两组合 n₁×n₂
θ连接(θ-Join) 任意比较条件 在笛卡尔积上筛选满足条件的元组 ≤ n₁×n₂
等值连接(Equi-Join) 相等条件 θ连接的一种特例 ≤ n₁×n₂
自然连接(⋈) 自动按同名属性相等连接并去重 ≤ n₁×n₂

📘 小结:

笛卡尔积 是所有连接的"基础模型"。

其他连接 = 笛卡尔积 + 选择条件 + 投影(去重复列)


🔍 六、结果规模计算公式(常考)

若:

复制代码

|R| = m,|S| = n

则:

复制代码

|R × S| = m × n

📘 举例:

  • R 有 4 条,S 有 5 条 → R×S 有 20 条

  • 若 R 和 S 都为空 → 结果为空(0条)


🧠 七、软考常见考题类型

题型 示例 答案
选择题 "若关系R有3行,S有5行,则R×S结果有多少行?" 15 ✅
填空题 "R(A,B),S(B,C),求R×S的模式?" (A,B,B,C)
计算题 给出具体表格,列出笛卡尔积结果 直接做"行对行组合"
相关推荐
Bella的成长园地5 小时前
高级软考-系统架构设计师知识点1
系统架构·高级软考
武子康1 天前
Java-155 MongoDB Spring Boot 连接实战 | Template vs Repository(含索引与常见坑)
java·数据库·spring boot·后端·mongodb·系统架构·nosql
武子康1 天前
Java-157 MongoDB 存储引擎 WiredTiger vs InMemory:何时用、怎么配、如何验证 mongod.conf
java·数据库·sql·mongodb·性能优化·系统架构·nosql
kkkkk0211062 天前
软考高级-系统架构设计师案例专题三:系统开发基础
笔记·系统架构
"sudo2 天前
【2025-系统规划与管理师】第十章:云原生系统规划
系统架构
qqxhb2 天前
系统架构设计师备考第48天——机器人&边缘计算
系统架构·机器人·边缘计算·边云协同·资源数据智能协同·联接约束分布性·数据第一入口
qqxhb2 天前
系统架构设计师备考第49天——数字孪生体&云计算&大数据技术
大数据·系统架构·云计算·saas·paas·iaas·数字孪生体
阿啄debugIT2 天前
HashMap为什么线程不安全? ConcurrentHashMap如何保证线程安全? AQS如何实现锁的获取与释放?用男女关系进行解释,一看就懂
经验分享·职场和发展·系统架构·软件工程·1024程序员节
okjohn3 天前
浅谈需求分析与管理
java·架构·系统架构·软件工程·产品经理·需求分析·规格说明书