一、关系运算
1. 自然连接
1)自然连接的定义与特点
- 定义:在两个关系中,将相同属性列的值相等的元组进行连接,并在结果集中去掉重复的属性列。
- 特点:
- 需要两个关系具有相同的属性列
- 结果集中会去掉重复的属性列
- 当两个关系没有相同属性列时,等价于笛卡尔积
- 问题:会丢失未匹配的元组信息。例如学生表S(学号,姓名)和成绩表SC(学号,成绩)自然连接时,缺考学生(如学号003的王五)不会出现在结果中。
2. 外连接
1)左外连接
- 符号表示:在自然连接符号左侧加两横,记为R ⊳\joinrel⊲ S
- 运算过程:
- 先计算自然连接结果
- 取出左侧关系中所有未与右侧匹配的元组
- 用NULL填充右侧关系的属性
- 将补充的元组加入自然连接结果
- 示例:学生表S左外连接成绩表SC时,会保留所有学生信息,缺考学生的成绩显示为NULL
- 应用场景:需要保留左侧关系全部信息时使用,如查询所有学生(包括缺考)的成绩
2)右外连接
- 符号表示:在自然连接符号右侧加两横,记为R \joinrel⊳⊲ S
- 运算过程:
- 先计算自然连接结果
- 取出右侧关系中所有未与左侧匹配的元组
- 用NULL填充左侧关系的属性
- 将补充的元组加入自然连接结果
- 示例:关系R右外连接关系S时,会保留S中所有元组,未匹配的R属性用NULL填充
3)全外连接
- 符号表示:在自然连接符号两侧各加两横,记为R \joinrel⊳\joinrel⊲ S
- 运算过程:
- 计算左外连接和右外连接的结果
- 对两个结果取并集
- 自然连接部分只保留一次
- 特点:同时保留两个关系中所有未匹配的元组,是最完整的外连接方式
3. 关系运算的总结
- 并运算:R∪S,取在R或S中的行,要求R与S关系模式相同
- 差运算:R−S,取在R中但不在S中的行
- 交运算:R∩S,取既在R中又在S中的行
- 选择运算:σ条件(R),选取满足条件的行
- 投影运算:π属性列(R),选取指定的属性列
- 连接运算:
- θ连接:先笛卡尔积再做选择
- 等值连接:θ为等号的特殊情况
- 自然连接:等值连接+去重属性列
- 外连接:保留未匹配元组(左/右/全)
4. 应用案例
1)例题:关系运算定义判断
-
交集运算特性:关系E∩F的结果元组必须同时属于关系E和F,这是交集的本质特征。
-
验证方法:可通过构造具体实例验证运算结果,如:
-
设E={1,2,3,4,5,6},F={4,5,6,7,8,9}
-
E×F(笛卡尔积)结果元组不满足同时属于条件
-
E∪F(并集)包含只属于单个关系的元组(如7,8,9)
-
E−F(差集)结果元组必然不属于F
-
-
排除技巧:当不确定时,通过具体例子验证各选项是否符合"元组同时属于E和F"的要求。
2)例题:关系运算计算院校院系
- 除法运算应用:
- 关系E(学院,课程) ÷ 关系F(课程) → 结果仅保留"学院"属性
- 运算逻辑:找出E中包含F所有课程的学院
- 实例验证:计算机学院包含F中"数据库"课程,且是唯一满足条件的学院
- 笛卡尔积排除:
-
E×F会产生4×1=4行结果,属性数为3个
-
不符合题目要求的单行单属性结果
-
- 运算方向:E÷F与F÷E不等价,需注意被除关系(E)应包含除关系(F)的所有属性
3)例题:关系表达式查询
- 自然连接选择:
- 需要关联E(学校名称,所在地)和F(学校名称,专业代码,分数线)
- 通过共同属性"学校名称"自然连接(⋈)可保留所有所需信息
- 集合运算排除:
- 并交运算要求关系模式相同(属性个数和名称一致)
- E有2个属性,F有3个属性,无法直接进行并交运算
- 验证方法:可构造示例数据验证笛卡尔积会产生错误关联(如学校与错误所在地匹配)
4)例题:投影运算
- 投影运算特性:
-
π主管部门(E)
直接提取指定列,保留所有行(包括重复值)
-
结果应为{教育部,教育部,浙江,广西},不自动去重
-
- 常见错误:
- 误选去重结果(如选项B)
- 混淆投影与SQL的DISTINCT操作
- SQL对应:相当于SELECT 主管部门 FROM E基础查询语句
5)例题:关系表达式计算
- 运算可行性判断:
- 并/交/差运算要求关系模式严格一致
- R(efg)与S(fghk)属性不同,只能进行笛卡尔积(R×S)
- 属性集差运算:
- R-S指在R但不在S中的属性集合
- R有{e,f,g},S有{f,g,h,k} → 结果仅含{e}
- 易混淆点:
- 关系代数差运算(元组级)与属性集差运算的区别
- 前者要求关系模式相同,后者比较属性集合
6)例题:关系笛卡尔积和自然连接
- 笛卡尔积运算
- 属性计算:给定关系R(A,B,C,D)与S(C,D,E,F),R×S的结果包含两个关系的所有属性列,属性个数为∣R∣+∣S∣(即4+4=8个)
- 重复列处理:当存在相同属性列时,结果中需要带上关系名称作为前缀(如r.C和s.Cs.Cs.C)
- 自然连接运算
- 运算基础:建立在笛卡尔积基础上,要求相同属性列的值必须相等
- 属性处理:
- 去掉重复的属性列(如R和S都有C,D列,结果中只保留一组)
- 最终属性个数为∣R∣+∣S∣−相同属性数(即4+4-2=6个)
- 等价转换:可以表示为先求笛卡尔积,再选择相同属性值相等的元组(σr.C=s.C∧r.D=s.D(R×S))
- 例题解析
- 题目解析:
- 第一问:R×S属性数8个,自然连接属性数6个 → 正确答案A
- 第二问:
- 自然连接后属性列计算:R(A,B,C,D)和S(A,C,D,E,F)有3个重复属性,总列数=4+5-3=6 → 选C
- 等价表达式分析:
- 需要同时满足:r.A=s.A、r.C=s.C、r.D=s.D(对应列号1=5、3=6、4=7)
- 附加条件r.C>s.F对应3>9
- 最终正确形式为π1,2,3,4,8,9(σ1=5∧3=6∧4=7∧3>9(R×S))→ 选B
- 题目解析:
7)例题:关系表达式等价判断
- 关系运算顺序
- 运算结构分析:应从最内层括号开始,自右向左解读表达式
- 自然连接本质:
- 先求笛卡尔积
- 选择相同属性值相等的元组(如r.A2=s.A2∧r.A3=s.A3)
- 去掉重复属性列
- 等价转换技巧
- 常见错误:
- 混淆"且"(∧)和"或"(∨)条件 → A选项错误
- 遗漏自然连接的相等条件 → B选项不完全正确
- 列号引用错误(如对3列关系引用第6列) → C选项错误
- 正确方法:
- 保持原表达式的逻辑连接词
- 完整保留所有相等条件
- 准确对应属性列的编号
- 常见错误:
- 例题解析
- 题目解析:
- 原表达式:πA1,A4(σA2<2017∧A4=95(R⋈S))
- 正确等价形式:
- 先分别选择:σA2<2017(R)和σA3=95(S)
- 求笛卡尔积后仍需添加R.A2=S.A2∧R.A3=S.A3条件
- 最终正确选项D包含所有必要条件
- 易错点:容易忽略自然连接隐含的属性相等条件
- 题目解析:
- 笛卡尔积模式
- 结果关系模式:
- 包含两个关系的所有属性
- 同名属性需加关系前缀
- 正确模式应为X(R.A,B,R.C,D,S.A,S.C,E,G)→ 选C
- 错误选项分析:
- A缺少关系前缀
- B只包含R的属性
- D缺少关键属性
- 结果关系模式:
8)例题:笛卡尔积关系模式
- 关系模式定义:给定关系R(A,B,C,D)和S(A,C,E,G),其笛卡尔积R×S的关系模式应包含两个关系的所有属性列
- 属性命名规则:
- 对于两个关系中相同的属性名(如A、C),需要加上关系名前缀区分(如R.A、S.A)
- 不同名的属性直接保留原名称
- 正确选项分析:
- C选项X(R.A, B, R.C, D, S.A, S.C, E, G)完整包含所有属性并正确区分了同名属性
9)例题:关系r1投影运算得到r2
- 题目解析:
- 观察关系r2包含的行:需要识别出r2实际由r1中的哪些行组成
- 关键判断依据:r2包含r1中价格≥8的三行记录(价格为18、8、8的记录)
- 选项分析:
- A选项(商品名=毛巾或钢笔):错误,会包含不满足条件的其他钢笔记录
- B选项(价格≥8):正确,完全匹配r2包含的记录
- C选项(投影运算):错误,投影不会改变行数
- D选项(商品编号筛选):错误,会漏掉符合条件的记录
- 易错点:
- 注意区分选择运算(筛选行)和投影运算(筛选列)的不同作用
- 需要仔细核对每个选项对应的实际结果是否与r2完全一致
10)例题:自然连接运算属性个数
- 自然连接运算基础
-
属性计算规则:给定关系
-
R(A,B,C,D)和关系S(C,D,E),自然连接运算R⋈S会去除重复列C,D,结果属性为A,B,C,D,E共5个
-
等价转换方法:自然连接可转换为笛卡尔积+选择+投影的组合运算,需满足:
- 笛卡尔积R×S的属性列为R和S属性的并集
- 选择条件为相同属性列值相等(如R.C=S.C∧R.D=S.D)
- 投影去除重复列
-
- 例题解析
- 题目解析:
- 属性个数:确认R⋈S结果为5个属性(A,B,C,D,E)
- 表达式分析:
- 选项A/C直接比较数字而非属性列,排除
- 选项B使用单引号表示字符比较,与题意r.b>s.e不符
- 选项D正确体现:先笛卡尔积,再选择(第2列>第7列且第3列=第5列且第4列=第6列),最后投影
- 验证技巧:
- 笛卡尔积后属性顺序为R全部列+S全部列
- 自然连接条件转换为:R的第1列=S的第4列,R的第2列=S的第5列
- 附加选择条件r.b>s.e对应笛卡尔积后的第2列>第7列
- 题目解析:
- 外连接运算
- 关联实现:
- 关联机制:通过外码(Foreign Key)建立表间关联
- 合并运算:自然连接(Natural Join)可合并关联表并去除重复列
- 外连接类型:
- 左外连接:保留左表所有元组,右表不匹配处填NULL
- 右外连接:保留右表所有元组,左表不匹配处填NULL
- 全外连接:保留两侧所有元组,不匹配处填NULL
- 关联实现:
- 除法运算示例
- 除法运算要点:
- 计算R÷S时,先提取S在R中的对应属性投影
- 结果包含R中与S所有元组都有关联的元组
- 外连接计数:
- 左外连接元组数=左表基数(含不匹配项)
- 右外连接元组数=右表基数(含不匹配项)
- 全外连接元组数=内连接数+左表独有数+右表独有数
- 除法运算要点:
- 解题技巧总结
- 快速判断:
- 自然连接属性数=R属性数+S属性数-重复属性数
- 外连接元组数可通过维恩图辅助计算
- 易错提示:
- 注意选择条件中数字与属性列的对应关系
- 区分字符比较(带引号)与属性列比较(无引号)
- 快速判断:
11)例题:关系代数表达式验证
- 自然连接转换方法:将自然连接转换为笛卡尔积加条件的形式,需要满足两个条件:
- 相同属性列的值相等:R.C=S.C且R.D=S.D(即3=5且4=6)
- 附加条件:R.B>S.E(即2>7)
- 投影运算处理:自然连接后需要去掉重复属性列(保留R的C,D列,去掉S的C,D列),因此最终投影列为1,2,3,4,7
- 完整表达式:π1,2,3,4,7(σ2>7∧3=5∧4=6(R×S))
- 验证过程:通过属性编号确认各条件对应位置,R的属性为A(1),B(2),C(3),D(4),S的属性为 C(5),D(6),E(7)
12)例题:表关联关系实现和运算
- 表关联实现方式:
- 外码机制:通过将一个表的主码作为另一个表的属性(外码)建立关联
- 示例:学生表(学号[主码],姓名,院系编号[外码])与院系表(院系编号[主码],院系名称)通过院系编号关联
- 合并表运算选择:
- 自然连接优势:能正确合并关联表信息,自动处理重复属性列
- 笛卡尔积问题:会产生大量无意义组合(如学号与成绩错误配对)
- 选择/投影不足:选择只能筛选行,投影只能筛选列,都无法完整合并表信息
- 典型应用场景:
- 通过自然连接查询跨表信息(如学生所在院系名称)
- 保持原始信息完整性,避免笛卡尔积导致的信息混乱
13)例题:关系代数表达式计算
- 表间关联与运算
- 关联实现方式: 关系数据库中表与表的关联通过外码实现,通过自然连接运算将两个关联表合并成信息等价的表。
- 运算顺序原则: 关系代数表达式计算应从右往左依次进行,先观察整体结构再逐步分解。
- 除法运算详解
- 计算步骤:
- 找出两个关系的相同属性列(如A1,A2)
- 在被除数关系R中查找与除数关系S投影结果匹配的元组
- 结果保留R中不与S重复的属性列(如A3)
- 实例分析: 当R的A1,A2列包含(2,1),(3,4)且对应A3值均为4时,R÷S结果为{4}
- 计算步骤:
- 外连接运算
- 自然连接基础: 先求两关系的自然连接结果,匹配相同属性列(A1=A1且A2=A2)
- 左外连接:
- 在自然连接基础上补充左表未匹配元组
- 缺失属性用NULL填充
- 示例中元组数为4(含(1,2,3,null),(4,6,7,null))
- 右外连接:
- 补充右表未匹配元组
- 示例中元组数同样为4
- 全外连接:
- 合并左右外连接结果
- 需去重自然连接部分
- 示例元组数=4+4-2=6
- 例题解析
- 第37题解析:
- 先计算σ1<3(S)得到{(2,1,8),(3,4,4)}
- 投影πA1,A2后为{(2,1),(3,4)}
- 最终R÷S结果为{4}(对应选项A)
- 第38题解析:
- 左外连接:4个元组(含2个补充元组)
- 右外连接:4个元组(含2个补充元组)
- 全外连接:6个元组(4+4-2个重复)
- 正确答案为D选项(4,4,6)
- 第37题解析:
14)例题:自然连接属性列个数
- 属性列计算规则
- 基本公式: 自然连接后的属性列数=两关系属性列数之和-重复属性列数
- 实例验证:
-
R(A,B,C,D)有4列
-
S(A,C,D,E)有4列
-
重复列A,C,D共3列
-
结果列数=4+4-3=5(对应选项B)
-
- 关系代数等价转换
- 转换原理: 自然连接可转换为选择+投影的组合运算
- 典型结构:
- 先做笛卡尔积R×S
- 用选择σ筛选匹配元组(如σ1=5∧3=6∧4=7)
- 用投影π保留所需列(如π1,2,3,4,8)
- 易错提示: 注意属性列的原始位置编号,R×S会产生1-8列的新关系
二、知识小结
|---------|------------------------------|-----------------------------|-------|
| 知识点 | 核心内容 | 考试重点/易混淆点 | 难度系数 |
| 关系运算 | 包括并、差、交、笛卡尔积、选择、投影、连接、除等基本运算 | 并、差、交要求关系模式相同;自然连接需去重 | ⭐⭐⭐ |
| 自然连接 | 基于相同属性列的值相等,并去掉重复列 | 若两表无相同属性列,则等价于笛卡尔积 | ⭐⭐⭐⭐ |
| 外连接 | 处理缺失信息,包括左外连接、右外连接、全外连接 | 左外连接保留左表未匹配元组,右外连接保留右表未匹配元组 | ⭐⭐⭐⭐ |
| 左外连接 | 保留左表所有元组,右表不匹配的用NULL填充 | 符号:⋉(左侧加两横) | ⭐⭐⭐ |
| 右外连接 | 保留右表所有元组,左表不匹配的用NULL填充 | 符号:⋊(右侧加两横) | ⭐⭐⭐ |
| 全外连接 | 综合左外和右外连接的结果,保留所有未匹配元组 | 符号:⨝(左右均加两横) | ⭐⭐⭐⭐ |
| 除法运算 | 找出满足条件的元组,结果仅包含非公共属性 | 需先匹配公共属性列的值 | ⭐⭐⭐⭐⭐ |
| 关系代数表达式 | 通过运算符组合关系运算,如σ、π、⋈等 | 注意运算符优先级和括号匹配 | ⭐⭐⭐⭐ |
| 真题解析 | 历年考题涉及自然连接、外连接、除法等高频考点 | 重点掌握符号表示和运算规则 | ⭐⭐⭐⭐ |