news 2026/6/13 2:32:38

计算机中级-数据库系统工程师-关系运算(1)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
计算机中级-数据库系统工程师-关系运算(1)
一、关系运算
1. 并
1)并集的基本概念与高中数学中的并集
  • 集合运算基础: 高中数学中的并集运算A∪B表示由属于A或属于B的元素组成的集合,在关系运算中原理类似
  • 可视化理解: 在维恩图中表现为两个集合外轮廓组成的整圈区域
2)关系运算中的并集及前提条件
  • 前提条件: 关系R与S必须具有相同的关系模式才能进行并运算
  • 运算定义: 记作R∪S={t∣t∈R∨t∈S},其中t为元组变量
3)相同关系模式的定义
  • 严格定义: 不仅要求属性名称和个数相同,还要求对应属性的数据类型、取值范围(域)必须一致
  • 数据格式要求: 例如日期属性必须同为DATE类型,不能一个为DATE一个为CHAR
4)实例:学校两个学院学生信息表的合并
  • 实际案例: 外语学院与计算机学院合并学生信息表时,必须确保两表的字段结构完全兼容
  • 格式冲突示例: 出生日期字段若一个为DATE类型,一个为CHAR类型则无法合并
5)并集的结果与元组构成
  • 结果构成: 由属于R或属于S的元组组成,且自动去除重复元组
  • 元组概念: 每行数据称为一个元组,结果集的关系模式与原关系相同
6)例题1:求两个关系的并集
  • 解题步骤:
    • 确认两关系模式相同(属性ABC)
    • 合并所有元组并去重
    • 结果包含:ABC、bad、cde、dfg、fhk
  • 去重原则: 如bad在两关系中重复出现,结果中只保留一个
2. 差
  • 运算定义:R−S={t∣t∈R∧t∉S},表示在R中但不在S中的元组
  • 前提条件: 同样要求两关系具有相同的关系模式
  • 判断方法: 以R为基准逐条检查,保留不在S中的元组
  • 实例解析:
    • ABC在R不在S → 保留
    • bad在R也在S → 排除
    • cde在R不在S → 保留
    • dfg在R也在S → 排除
3. 广义笛卡尔积
1)广义笛卡尔积的定义
  • 基本概念: 记作R×S,不要求关系模式相同
  • 结果结构: 若R为n目关系,S为m目关系,则结果为(n+m)列
2)广义笛卡尔积的属性列构成
  • 属性命名: 同名属性需加关系名前缀区分(如r.B和s.B)
  • 列合并规则: 结果包含R的所有属性列在前,S的所有属性列在后
3)广义笛卡尔积的元组值构成
  • 生成方法: R的每个元组与S的所有元组组合
  • 实例演示:
    • R有元组(1,2)和(3,4)
    • S有元组(a,b,c)、(a,b,e)、(c,d,e)
    • 结果为6个元组:(1,2,a,b,c)、(1,2,a,b,e)...(3,4,c,d,e)
4. 投影及广义投影
1)投影的定义与运算
  • 运算本质: 垂直方向(列方向)的选择操作
  • 表示方法:πA(R)表示从R中选择属性列A组成新关系
  • SQL对应: 相当于SELECT语句中的列选择
2)广义投影的定义与运算
  • 扩展功能: 允许在投影列表中使用算术表达式
  • 表示方法:πF1,F2,...,Fn(R),其中Fi为算术表达式
3)例题1: 投影运算实例
  • 案例场景: 从工资表salary中仅查询ID和基本工资
  • 运算表示:πID,基本工资(salary)
  • 结果特征: 结果关系只包含指定两列,行数不变
4)例题2: 广义投影运算实例
  • 计算需求: 查询每个职工的基本工资与奖励总和
  • 运算表示:πID,基本工资+奖励(salary)
5. 选择
  • 运算方向: 从关系的水平方向进行运算,即选择符合条件的行(元组)
  • 符号表示: 记作σF(R),其中σ读作"sigma"
  • 形式定义:σF(R)={t∣t∈R∧F(t)=true}
  • 条件表达式:
    • 运算对象: 可以是属性名、列的序号或常数
    • 运算符: 包括算术比较符(<,>,≥,≤,≠)和逻辑运算符(∧,∨,¬)
  • 重要区别:
    • 无引号数字: 表示列的序号,如σ1>6(R)表示选择R中第1列值大于第6列值的元组
    • 带引号数字: 表示具体数值,如σ1>′6′(R)表示选择R中第1列值大于数字6的元组
  • 记忆技巧:
    • σ符号上方的小尾巴是平的,联想为"水平"方向选择行

    • 与投影运算π(竖线联想为"垂直"方向选择列)形成对比
1)例题:求关系代数运算表达式
  • 题目解析:
    • 笛卡尔积(R×S):
      • 属性列合并规则:保留原关系名称作为前缀(如R.A, S.B)
      • 元组数量:R的元组数×S的元组数(本例为4×3=12行)
    • 投影运算(π_{A,C}(R)):
      • 垂直选择R中的A列和C列
      • 结果列顺序按指定顺序排列
    • 选择运算(σ_{A>B}(R)):
      • 比较列名时:按字母顺序判断大小(b>a, d>c等)
      • 等价表示:也可写作σ_{1>2}(R)
    • 复合运算(σ_{3<4}(R×S)):
      • 先计算R×S,再在结果中选择第3列值小于第4列的元组
      • 列序号计算:从左到右依次编号(R.A=1, R.B=2,...,S.C=6)
  • 易错点:
    • 混淆带引号和不带引号数字的含义
    • 笛卡尔积中同名属性的前缀处理
    • 字母比较时的大小判断规则(按字母表顺序)
6. 扩展的关系运算
1)交
  • 前提条件:关系R与S必须具有相同的关系模式
  • 运算定义:由同时属于R和S的元组构成,记作R∩S,形式定义为R∩S={t∣t∈R∧t∈S}
  • 运算过程:
    • 以任一关系为基准(如R),逐个检查其元组是否也存在于另一关系(如S)中
    • 示例中关系R和S的交集结果为{4,5,6},因为这是唯一同时出现在两个关系中的元组
  • 可视化理解:可以想象为两个集合的重叠部分,即"既在R当中,也在S当中"的中间区域
2)连接运算
  • 本质特征:是笛卡尔积的扩展形式,在笛卡尔积基础上增加了条件选择
  • 与笛卡尔积的区别:
    • 笛卡尔积:无条件组合两个关系的所有元组和属性
    • 连接运算:只选择满足特定条件的笛卡尔积结果行
  • 分类依据:根据选择条件的不同分为三种类型
    • θ连接(theta连接):使用任意比较运算符的条件
    • 等值连接:专门使用等号"="作为比较条件
    • 自然连接:特殊的等值连接,自动匹配同名属性并消除重复列
3)连接
  • θ连接
    
    • 定义与运算规则
      • 本质:θ连接是一种有条件的笛卡尔积运算,通过比较运算符筛选符合条件的元组
      • 数学表达:R⋈XθYS=σXθY(R×S),其中θ为比较运算符(>、<、=、≠),X和Y分别为R和S上可比较的属性组
      • 运算步骤:
        • 先计算关系R和S的笛卡尔积R × S
        • 在笛卡尔积结果中选择满足XθY条件的元组
      • 属性要求:参与比较的属性组必须具有可比性,如数字与数字比较,不能是字母与数字比较
    • 例题:θ连接求解
      
      • 题目解析:
        • 给定关系R(A,B)和S(B,C),求R⋈R.A<S.B
        • 标准解法:
          • 计算R×S得到12行6列的中间结果(R有4行,S有3行)
          • 筛选满足R.A < S.B条件的元组
        • 简化技巧:
          • 直接比较R.A列与S.B列的值,避免完整计算笛卡尔积
          • 以R为基准:依次比较R.A(2,3,4)与S.B(1,8)
            • 2<8 → 保留(2,1,4,6,8)
            • 3<8 → 保留(3,4,5,6,8)
            • 4<8 → 保留(4,6,7,6,8)
          • 或以S为基准:找出S.B > R.A的所有组合
        • 结果验证:两种方法得到相同结果,验证了运算正确性
      • 易错点:
        • 忽略属性可比性要求
        • 混淆属性前缀(需明确R.A或S.B)
        • 笛卡尔积计算错误导致后续筛选出错
      • 记忆技巧:
        • "θ连先积后筛选,属性前缀不能忘"
        • "简化计算有诀窍,直接比较效率高"
  • 等值连接
    
    • 定义:当连接条件θ为"等于"时称为等值连接,记作R⋈X=YS,其中X和Y是关系R和S中的属性组。
    • 操作特点:
      • 不需要先计算笛卡尔积,直接寻找满足R.A=S.C的元组组合
      • 示例中关系R有4行,关系S有3行,理论上笛卡尔积有12行,但等值连接只需匹配特定条件
    • 匹配方法:
      • 逐列比较属性值,如示例中比较R.A与S.C
      • 建议用记号标注比较列避免混淆
      • 匹配结果包含两个关系的所有属性列
    • 例题:等值连接求解
      • 解题步骤:
        • 确定连接条件R.A=S.C
        • 逐行比较R.A列与S.C列的值
        • 找到匹配值c和d对应的元组
        • 组合匹配元组形成结果关系
      • 注意事项:
        • 容易出现视觉混淆,建议做标记辅助
        • 需要检查所有可能的匹配组合
        • 结果保留两个关系的全部属性
  • 自然连接
    
    • 特殊性质:
      • 是等值连接的特例,要求比较的属性组必须同名
      • 必须比较所有同名属性(如R.A=S.A且R.C=S.C)
      • 结果中去除重复的属性列
    • 与笛卡尔积关系:
      • 若无同名属性,自然连接退化为笛卡尔积
    • 操作流程:
      • 识别所有同名属性组
      • 执行等值连接(所有同名属性值相等)
      • 在结果中去掉重复的属性列
    • 实际应用:
      • 数据库查询中最常用的连接方式
      • 对应SQL语句:SELECT * FROM R NATURAL JOIN S
    • 例题:自然连接求解
      
      • 解题步骤:
        • 识别同名属性A和C
        • 执行等值连接R.A=S.A且R.C=S.C
        • 在结果中去掉重复的A、C列(保留R.A和R.C)
        • 组合匹配元组形成最终结果
      • 特殊情况处理:
        • 当S表新增acf行时,结果需包含所有匹配组合
        • 示例结果应包含abcd和abcf两行
      • 数据库实例:
        • 学生表(学号,姓名)与成绩表(学号,成绩)的自然连接
        • 结果包含学号、姓名、成绩三列
        • 对应SQL:SELECT * FROM 学生,成绩 WHERE 学生.学号=成绩.学号
4)除
  • 例题1: 除法求解实例
    • 求解步骤:
      • 找相同属性列:首先找出关系r和s中相同的属性组(如CD)
      • 确定属性值:在s中找出这些相同属性列的值(如cdef)
      • 筛选匹配行:在r中找出属性列值与s相同的行(如CD=cdef的行)
      • 提取结果列:找出这些行中与s不同的属性列的值(如AB)
      • 验证结果:确保当右边属性值相同时,左边结果列的值也相同(如AB相同)
    • 具体实例:
      • 当CD=cdef时,AB的值相同(都是AB),因此AB在结果中
      • 当CD=ef时,AB的值不同(CF和gh),因此不满足条件
      • 最终结果为包含AB列的关系
    • 结果列确定:结果只包含r中与s不同的属性列(如AB)
  • 除法结果为空集的情况
    
    • 空集条件:当在r中找不到任何行满足右边属性值相同且左边结果列值相同时
    • 空集表示:结果表结构保留(如AB列),但内容为空
    • 示例说明:
      • 如果去掉CD=cdef和CD=ef的行
      • 则r÷s结果为只有AB列的空表
二、知识小结

知识点

核心内容

考试重点/易混淆点

难度系数

关系运算分类

基本关系代数运算和扩展关系运算

区分基本运算和扩展运算的边界

⭐⭐

并运算

由属于R或属于S的元组构成,要求关系模式相同(属性名称、数据类型、取值范围一致)

重复元组自动去重,类似数学并集概念

⭐⭐

差运算

由属于R但不属于S的元组构成(在R中且不在S中)

与数学差集概念一致,注意关系模式一致性要求

⭐⭐

广义笛卡尔积

结果列数为n+m列(R列数+S列数),元组数为R×S

属性名重复时需加关系名前缀(如r.B和s.B)

⭐⭐⭐

投影运算

垂直方向选取列(π运算),可配合算术表达式(广义投影)

区分选择行(σ)和选择列(π)的操作方向

⭐⭐

选择运算

水平方向筛选行(σ运算),条件表达式中:

- 无引号数字表示列序

- 引号数字表示常量值

σ₃<'4' vs σ₃<4 的语义差异

⭐⭐⭐

连接运算

有条件的笛卡尔积,分为:

- θ连接(任意比较运算符)

- 等值连接(=运算符)

- 自然连接(自动匹配同名属性+去重列)

自然连接需满足:

1. 所有同名属性相等

2. 结果去重

⭐⭐⭐⭐

除法运算

找出R中与S所有元组都关联的元组组合

操作步骤:

1. 找相同属性列

2. 匹配S中值组合

3. 提取R中对应非共有属性

⭐⭐⭐⭐

运算对比

- 并/差/交:要求关系模式一致

- 笛卡尔积/连接:无模式限制

- 投影/选择:单关系操作

自然连接 vs 等值连接 的结果集差异

⭐⭐⭐

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 2:26:41

Understanding the Impact of Phase Noise on Random Jitter in Timing Circuits

1. 相位噪声与随机抖动的本质关系 每次调试高速数字电路时&#xff0c;最让人头疼的就是那些看似随机的时序偏差。这背后往往隐藏着两个关键角色&#xff1a;相位噪声和随机抖动。就像钟表匠需要理解齿轮间的咬合关系&#xff0c;我们得先弄清楚这两者如何相互转化。 相位噪声…

作者头像 李华
网站建设 2026/6/13 2:31:54

Pixel Aurora Engine 为QT桌面应用添加AI绘图功能:开发实战教程

Pixel Aurora Engine 为QT桌面应用添加AI绘图功能&#xff1a;开发实战教程 1. 引言&#xff1a;为什么要在QT应用中集成AI绘图 最近几年&#xff0c;AI绘图技术突飞猛进&#xff0c;从专业设计工具逐渐渗透到各种应用场景。作为QT开发者&#xff0c;你可能已经注意到用户对智…

作者头像 李华
网站建设 2026/4/14 10:10:43

Python动态粒子爱心:从源码到浪漫表白神器

1. 动态粒子爱心效果展示与核心原理 第一次看到这个动态粒子爱心效果时&#xff0c;我正帮朋友策划表白方案。当无数粉色粒子从屏幕四周汇聚成跳动的爱心&#xff0c;又像烟花般绽放时&#xff0c;连我这个直男程序员都被击中了——这简直就是理工科浪漫的巅峰之作&#xff01;…

作者头像 李华
网站建设 2026/6/13 2:23:29

LoRA训练助手与SpringBoot集成指南:企业级模型微调解决方案

LoRA训练助手与SpringBoot集成指南&#xff1a;企业级模型微调解决方案 1. 引言 在企业级AI应用开发中&#xff0c;模型微调是一个常见但复杂的需求。传统的全参数微调需要大量计算资源和时间&#xff0c;对于大多数企业来说成本过高。LoRA&#xff08;Low-Rank Adaptation&a…

作者头像 李华
网站建设 2026/4/14 10:06:45

基于matlab交通标志识别系统【有报告】gui界面设计 原理:bp神经网络训练,图像处理有灰度化,二值化,形态学处理,图像区域定位识别等等

基于matlab交通标志识别系统【有报告】gui界面设计 原理&#xff1a;bp神经网络训练&#xff0c;图像处理有灰度化&#xff0c;二值化&#xff0c;形态学处理&#xff0c;图像区域定位识别等等第一步&#xff1a;界面布局 (GUIDE) 在 MATLAB 命令行输入 guide&#xff0c;新建一…

作者头像 李华