高级软考-系统架构设计师知识点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)
计算题 给出具体表格,列出笛卡尔积结果 直接做"行对行组合"
相关推荐
薛定谔的猫-菜鸟程序员3 小时前
软件架构设计师开发资料大全(从入门到精通)
后端·python·系统架构·flask·架构设计师
被放养的研究生15 小时前
第一章 信息系统架构
系统架构·金融监管计算机类
装不满的克莱因瓶1 天前
支付订单成功异步MQ权益发放设计和开发
java·架构·系统架构·rabbitmq·硬件架构
数字新视界2 天前
数字孪生技术赋能智能化转型与创新实践
嵌入式硬件·物联网·系统架构·机房管理·动力与环境监控系统
微三云 - 廖会灵 (私域系统开发)2 天前
企业级 SaaS 系统架构设计:单体、微服务还是模块化单体?技术选型实战
微服务·架构·系统架构
Liaiyang662 天前
六家大模型体检卡:六个 ∅_safe(安全兜底态)的藏身之处(或显影处),就是下一次翻车的地方
系统架构·agent·rlhf·ai安全·容错设计·大模型评测·ai幻觉
shuair3 天前
Spring Cloud 微服务脚手架:Simple Cloud 系统架构设计
spring cloud·微服务·系统架构
szxinmai主板定制专家3 天前
AMR 项目落地:机器人控制器硬件定制化需求复盘
arm开发·单片机·fpga开发·系统架构·机器人·am62x
ClickHouseDB3 天前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
深圳讯鹏科技3 天前
ESD防静电监控系统架构分享:从工位设备数据采集到看板联动
系统架构