当前位置: 首页 > news >正文

数据库的关系代数

关系就是表

属性(Attribute)是关系中的列.例如,关系 “学生” 中可能有属性 “学号”、“姓名”、“班级”。

元组(Tuple)是关系中的一行数据

1. 基本运算符
  1. 选择(Selection)

    • 符号:σ

    • 作用:从关系中选择满足特定条件的元组(行)。

    • 示例:σ_{age>30}(Student) 表示从Student表中选择年龄大于30的学生。

  2. 投影(Projection)

    • 符号:π

    • 作用:从关系中选择特定的属性(列)。

    • 示例:π_{name, age}(Student) 表示从Student表中选择姓名和年龄两列。

选择和投影配合使用(重点)

选择运算的基础上,把需要符合条件的通过投影运算查询出来

  1. 并集(Union)

    • 符号:∪

    • 作用:将两个关系的元组合并,去除重复元组

    • 条件两张表格的元一样(两张表格列数一样)

    • 示例:R ∪ S 表示将关系R和S的元组合并。

  1. 差集(Difference)

    • 符号:-

    • 作用:从一个关系中去除与另一个关系相同的元组。

    • 条件两个表格列数一样,两个表格的属性都相同,两个表进行了差运算之后,都仍然是n列

    • 示例

      S-R表:S表中有任意一个元组和R表的一样,S表就去掉这个元组

      R-S表:R表中有任意一个元组和S表的一样,R表就去掉这个元组

      简言之:就是一张表,嫌弃另外一张表,我身上有那里和你一样,我改还不行嘛!

  2. 笛卡尔积(Cartesian Product)

    • 符号:×

    • 作用:将两个关系的元组进行组合,生成一个新的关系。

    • 条件:没有任何使用限制,万物皆可笛卡尔积。

    • 示例:R × S 表示关系R和S的笛卡尔积,结果中的每个元组是R和S元组的组合。

R表n元关系,k1个元组(k1行,n列)

S表m元关系,k2个元组(k2行,m列)

R表S表进行笛卡尔积

得到一个(k1 * k2)元(n + m)列的新表,如下

2. 扩展运算符
  1. 交(Intersection)

    • 符号:∩

    • 作用:找出两个关系中共同的元组。

    • 条件表格的列数相同,表格的属性都相同

    • 示例:R ∩ S 表示既在关系R中又在关系S中的元组。

  1. 连接(Join)

    • 符号:⨝

    • 作用:从两个关系的笛卡尔积中选择属性之间满足一定关系的元组(在两张表的笛卡尔积后得到的那张大表中再次选取一些符合我们条件的元组)

    • 类型

      • 自然连接(Natural Join):基于相同属性名的等值连接。

      • 外连接(Outer Join):包括未匹配的元组。

      • 左外连接(Left Outer Join):保留左表的所有元组,即使右表中没有匹配的元组。
      • 右外连接(Right Outer Join):保留右表的所有元组,即使左表中没有匹配的元
      • 全外连接(Full Outer Join):保留左右表的所有元组。
    • 示例:R ⨝ S 表示关系R和S的自然连接。

  2. 除(Division)

    • 符号:÷

    • 作用:找出满足特定条件的所有元组。

    • 示例:R ÷ S 表示在关系R中满足与关系S中所有元组相关的元组。

http://www.lryc.cn/news/533363.html

相关文章:

  • VSCode使用总结
  • 关系模型的数据结构及形式化定义
  • 【C++入门讲解】
  • 数据表中的视图操作
  • BFS算法篇——广度优先搜索,探索未知的旅程(上)
  • mongodb 使用内存过大分析
  • CNN-day5-经典神经网络LeNets5
  • 登录到docker里
  • 利用PHP爬虫开发获取淘宝分类详情:解锁电商数据新视角
  • LeetCode 142题解|环形链表II的快慢指针法(含数学证明)
  • [图文]课程讲解片段-Fowler分析模式的剖析和实现01
  • Dify使用
  • 解锁 DeepSeek 模型高效部署密码:蓝耘平台全解析
  • 7.PPT:“中国梦”学习实践活动【20】
  • Linux系统-centos防火墙firewalld详解
  • 零基础都可以本地部署Deepseek R1
  • 通过Ollama本地部署DeepSeek R1以及简单使用的教程(超详细)
  • css实现长尾箭头(夹角小于45度的)
  • 封装descriptions组件,描述,灵活
  • OC-Block
  • 关于知识蒸馏的概念原理以及常见方法
  • C++轻量级桌面GUI库FLTK
  • C++20导出模块及使用
  • PID 算法简介(C语言)
  • Java中的继承及相关概念
  • 语言月赛 202308【小粉兔做麻辣兔头】题解(AC)
  • 云原生后端|实践?
  • GrassWebProxy
  • 6.Python函数:函数定义、函数的类型、函数参数、函数返回值、函数嵌套、局部变量、全局变量、递归函数、匿名函数
  • 青少年编程与数学 02-008 Pyhon语言编程基础 22课题、类的定义和使用