[数据库与软件工程]三、关系运算(并、交、笛卡尔积,自然连接等)

2023-11-01

目录

一、前言

二、简单的关系运算(并、交、差)

并(Union):

交(Intersection):

差:

三、复杂的关系运算(笛卡尔积、自然连接)

一、笛卡尔积的数学定义

二、关系运算中的笛卡尔积

1.笛卡尔积是什么:

2.如果两个关系有同名属性怎么计算笛卡尔积?:

 三、自然连接运算

自然连接的计算方法:

 四、外连接

左外连接:

 右外连接:

 全外连接:


一、前言

不情不愿,不知不觉,又上完了了一节数据库与软件工程,今天让我们来看看关系运算,关系运算就是参与计算的元素都是关系的运算(关系在关系运算中就像是1+2=3里面的数字一样),今天的重点是讨论笛卡尔积这个有些复杂的概念,和笛卡尔积类似的,可以说是源于笛卡尔积的自然连接。我们肘~

二、简单的关系运算(并、交、差)

并(Union):

 并,写作U。

在了解并的作用之前,我们先来了解一下它的使用前提条件:两个关系需要有相同的关系模式!

相同的关系模式就如R1的关系模式是R1(ID,姓名,学号),则R2的关系模式也必须为R2(ID,姓名,学号),即两个关系的属性名的集合相同。

求并就是将两个关系的元组合起来,有重复的就保留一个。

下面是一个求并的例子:

R1
ID 性别 姓名
1 小明
3 小小美

                                

R2
ID 性别 姓名
1 小明
2 小美

则R1UR2为(可见重复的元组(1,男,小明)只保留了一个):

R1UR2
ID 性别 姓名
1 小明
2 小美
3 小小美

交(Intersection):

交,写作∩。

在了解交的作用之前,我们也来了解一下它的使用前提条件:两个关系需要有相同的关系模式!

我们可以看到交的前提条件跟并一样,这里就不多写了hh。

R1∩R2就是保留R1与R2中都有的元组。

下面是一个求交的例子:

R1
ID 性别 姓名
1 小明
3 小小美

                                

R2
ID 性别 姓名
1 小明
2 小美

则R1∩R2为,因为R1与R2都有元组(1,男,小明):

R1∩R2
ID 性别 姓名
1 小明

差:

差,写作-,可以抽象的理解成减号。(也就是R1-R2不等于R2-R1)

正所谓技能都有前摇,在了解差的作用之前,它的使用前提条件还是那个:两个关系需要有相同的关系模式!

R1-R2就是从R1中删去R2中有的元组。

下面是一个求差的例子:

R1
ID 性别 姓名
1 小明
3 小小美

                                

R2
ID 性别 姓名
1 小明
2 小美

则R1-R2为,因为R1中删去R2有的元组(1,男,小明):

R1-R2
ID 性别 姓名
3 小小美

三、复杂的关系运算(笛卡尔积、自然连接)

复杂是我自己加的形容词,因为很难懂。。。

一、笛卡尔积的数学定义

笛卡尔积在数学中为两个集合的笛卡尔积,集合S1与集合S2的笛卡尔积记作S1XS2,表示第一个对象为S1成员第二个对象为S2成员的所有有序对。

上面的定义有点晕,来看个例子吧:

假设集合A={0, 1},集合B={a, b, c},则两个集合的笛卡尔积为{(0, a), (0, b), (0, c), (1, a), (1, b), (1, c)}。

二、关系运算中的笛卡尔积

1.笛卡尔积是什么:

我们可以把关系看作集合,元组看作元素,如r1的关系模式为(ID,姓名),r2的关系模式为(性别),当r1为{(1,小明),(2,小美)},r2为{(男),(女)},r1与r2的笛卡尔积就为{(1,小明,男),(1,小明,女),(2,小美,男),(2,小美,女)}

r1Xr2的关系模式为(ID,姓名,性别)

R1XR2的结果就是R1中的元组排在前面,R2中的元组排在后面进行组合产生的的所有元组的集合。

2.如果两个关系有同名属性怎么计算笛卡尔积?:

如A的关系模式为(a,c),B的关系模式为(a,d),则AXB的关系模式按照上方规则为(a,c,a,d)

有两个属性名冲突了。

我们要利用更名规则给属性名改名。

结果的关系模式应该为(A.a,c,B.a,d),重复的属性用 关系名.属性名 重命名,以实现区分。

 三、自然连接运算

(这是个规则复杂的运算啊,写到这里,作者在阳台看了十分钟风景以下定决心)

看了笛卡尔积,你就会开始怀疑,它到底有什么用?大部分情况下像是创造一堆无用的元组,但是——有些元组还是很有用的,比如(1,小明,男)。(像是(2,小美,男)可能就有些违和感)

所以还要在两个关系笛卡尔积的元组中选择一些好的。连接就是一个先计算笛卡尔积,再选择的过程。(当然更直观来说,连接就是 比如把ID相同的元组连在一起,比如(1,小明)和(1,175)),连接之后变成(1,小明,175)——本括号中内容不严谨,但是对于理解很有帮助)

连接,英文叫 join,符号为\bowtie.

我们用\bowtie表示自然连接。

自然连接的计算方法:

连接有两种计算方法,它们是等效的。第一种我个人认为更直观,第二种是上方的教科书方法。

将用例子来说明:

我们有如下两个关系,我们来计算R1\bowtieR2。

R1
体重 姓名
110 小明
123 小美
R2
体重 姓名 身高
110 小刚 189
123 小美 192
123 小美 170

1.找到两个关系的共有属性

这里是(体重,姓名)

2.将共有属性完全相同的元组进行连接得到两个关系自然连接的结果

注意:是共有属性完全相同 即体重和姓名完全相同,小明小刚体重相同但是名字不同故不连接。

可以一连接多,只要共有属性完全相同,如这里的(123,小美)连接了右边的两个。

连接后相同的属性只保留一个

 R1\bowtieR2结果如下(只保留一个体重和一个姓名):

体重 姓名 身高
123 小美 192
123 小美 170

 四、外连接

外连接(outer-join)是连接的扩展。外连接有三种,左外连接,右外连接,全外连接。

左外连接:

左外连接的结果就是在自然连接运算的结果的基础上,加上左侧元组中的没有与右侧元组匹配过的元组加上来自右侧关系的属性并且都置空形成的元组。

用上方例子而言:

最右侧关系为左外连接的结果,可见在R1\bowtieR2中(110,小明)在自然连接时没有参与连接,又在左侧,于是给他加上来自右侧关系的身高属性,并且赋值null,加入结果中。

 右外连接:

右外连接的结果就是在自然连接运算的结果的基础上,加上右侧元组中的没有与左侧元组匹配过的元组加上来自左侧关系的属性并且都置空形成的元组。

简单而言就是与左外连接相反,这里由于R1没有相对于R2的额外属性,故直接加上小刚即可。

 全外连接:

R1与R2进行全外连接就是 两者左外连接的结果∪两者右外连接的结果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[数据库与软件工程]三、关系运算(并、交、笛卡尔积,自然连接等) 的相关文章

  • 【计算机开题报告】智能社区管理系统

    一 设计目的及意义 随着经济的发展 人们生活水平的提高 工作和日常事务繁忙 人们对服务就有了更深入 更精细的要求 而计算机技术的迅猛发展 使得这种需求变为可能 传统的社区服务业也与互联网技术结合更加密切 这是社会发展的必然趋势 为解决社区中
  • 实时获取建材网商品数据:API实现详解与代码示例

    一 引言 随着电子商务的快速发展 实时获取商品数据对于企业决策 市场分析以及数据驱动的营销策略至关重要 建材网作为国内知名的建材信息平台 提供了API接口 使得第三方开发者可以方便地获取商品数据 本文将详细介绍如何使用 建材网的API接口
  • Kali Linux 安全渗透核心总结,444页核心知识点

    就像IT人离不开Linux系统一样 网安人也离不开Kali Linux 作为攻击性防御和渗透测试的代名词 越来越多的人开始学习Kali 如果你也对kali感兴趣 又想深入了解这方面内容 不妨收藏一下这份Kali Linux安全渗透教程 共4
  • 天猫数据分析工具推荐(天猫第三方数据平台)

    在电商迅速发展的大背景下 做好天猫数据分析能够在多方面帮助品牌商家更好地运营店铺 塑造品牌 如通过数据分析了解消费者的需求 购买偏好 这有利于品牌商家及时调整商品结构 产品推广 商品宣传等等 灵活制定品牌的销售策略 那么 天猫平台行业 品牌
  • SQL 解析与执行流程

    一 前言 在先前的技术博客中 我们已经详细介绍过数据库的 parser 模块与执行流程 用户输入的 SQL 语句通过词法解析器生成 token 再通过语法分析器生成抽象语法树 AST 经过 AST 生成对应的 planNode 最后执行 p
  • 内网穿透的应用-使用Net2FTP轻松部署本地Web网站并公网访问管理内网资源

    文章目录 1 前言 2 Net2FTP网站搭建 2 1 Net2FTP下载和安装 2 2 Net2FTP网页测试 3 cpolar内网穿透 3 1 Cpolar云端设置 3 2 Cpolar本地设置
  • 【软件测试】学习笔记-脚本与数据的解耦 + Page Object模型

    本篇文章介绍GUI测试中两个非常重要的概念 测试脚本和数据的解耦 以及页面对象 Page Object 模型 测试脚本和数据的解耦 GUI自动化测试适用的场景 尤其适用于需要回归测试页面功能的场景 如果在测试脚本中硬编码 hardcode
  • 智能时代:自然语言生成SQL与知识图谱问答实战

    语义解析 前言 语义解析的应用场景 总结概论 语义解析和大模型的关系 延伸阅读 前言 语义解析技术可以提高人机交互的效率和准确性 在自然语言处理 数据分析 智能客服 智能家居等领域都有广泛的应用前景 特别是在大数据时代 语义解析能够帮助企业
  • 【计算机毕业设计】病房管理系统

    当下 如果还依然使用纸质文档来记录并且管理相关信息 可能会出现很多问题 比如原始文件的丢失 因为采用纸质文档 很容易受潮或者怕火 不容易备份 需要花费大量的人员和资金来管理用纸质文档存储的信息 最重要的是数据出现问题寻找起来很麻烦 并且修改
  • 【计算机毕业设计】校园体育赛事管理系统

    身处网络时代 随着网络系统体系发展的不断成熟和完善 人们的生活也随之发生了很大的变化 人们在追求较高物质生活的同时 也在想着如何使自身的精神内涵得到提升 而读书就是人们获得精神享受非常重要的途径 为了满足人们随时随地只要有网络就可以看书的要
  • 【计算机毕业设计】线上招聘问答系统

    计算机网络发展到现在已经好几十年了 在理论上面已经有了很丰富的基础 并且在现实生活中也到处都在使用 可以说 经过几十年的发展 互联网技术已经把地域信息的隔阂给消除了 让整个世界都可以即时通话和联系 极大的方便了人们的生活 所以说 线上招聘问
  • 通俗易懂,十分钟读懂DES,详解DES加密算法原理,DES攻击手段以及3DES原理

    文章目录 1 什么是DES 2 DES的基本概念 3 DES的加密流程 4 DES算法步骤详解 4 1 初始置换 Initial Permutation IP置换 4 2 加密轮次 4 3 F轮函数 4 3 1 拓展R到48位 4 3 2
  • 电商数据api拼多多接口获取商品实时数据价格比价api代码演示案例

    拼多多商品详情接口 接口接入入口 它的主要功能是允许卖家从自己的系统中快速获取商品详细信息 通过这个接口 卖家可以提取到商品的各类数据 包括但不限于商品标题 价格 优惠价 收藏数 下单人数 月销售量等 此外 还可以获取到商品的SKU图 详情
  • 【计算机毕业设计】电商个性化推荐系统

    伴随着我国社会的发展 人民生活质量日益提高 于是对电商个性化推荐进行规范而严格是十分有必要的 所以许许多多的信息管理系统应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套电商个性化推荐系统 帮助商家进行商品信息 在
  • 【计算机毕业设计】趵突泉景区的智慧导游小程序_5ztvv

    当今社会已经步入了科学技术进步和经济社会快速发展的新时期 国际信息和学术交流也不断加强 计算机技术对经济社会发展和人民生活改善的影响也日益突出 人类的生存和思考方式也产生了变化 传统趵突泉景区的智慧导游采取了人工的管理方法 但这种管理方法存
  • 【计算机毕业设计】微信小程序反诈科普平台

    相比于以前的传统手工管理方式 智能化的管理方式可以大幅降低反诈科普平台的运营人员成本 实现了反诈科普平台的标准化 制度化 程序化的管理 有效地防止了反诈科普平台的随意管理 提高了信息的处理速度和精确度 能够及时 准确地查询和修正反诈科普 一
  • Redis分布式锁--java实现

    文章目录 Redis分布式锁 方案 SETNX EXPIRE 基本原理 比较好的实现 会产生四个问题 几种解决原子性的方案
  • 毕业设计:基于python人脸识别系统 LBPH算法 sqlite数据库 (源码)✅

    博主介绍 全网粉丝10W 前互联网大厂软件研发 集结硕博英豪成立工作室 专注于计算机相关专业 毕业设计 项目实战6年之久 选择我们就是选择放心 选择安心毕业 感兴趣的可以先收藏起来 点赞 关注不迷路 毕业设计 2023 2024年计算机毕业
  • C# Break 和 Continue 语句以及数组详解

    C Break 它被用于 跳出 switch 语句 break 语句也可用于跳出循环 以下示例在 i 等于 4 时跳出循环 示例 for int i 0 i lt 10 i if i 4 break Console WriteLine i
  • 光波导结构

    摘要 增强现实和混合现实 AR MR 领域的新应用引起了人们对带有光栅区域的光波导系统的越来越多的关注 这些光波导系统用于输入和输出耦合以及扩瞳目的 VirtualLab Fusion为这类系统的仿真和设计提供了几个强大的工具 其中一个是具

随机推荐

  • (翻译)Linux中的IS_ERR()宏

    本文翻译自 https newbedev com is err macro in linux text 20IS ERR 20 28 29 20macro 20in 20Linux 20Tests 20if can 20find 20MAC
  • VUE3.0生命周期函数

    什么是生命周期 1 vue中每个组件都是独立的 每个组件都有一个属于它的生命周期 2 从一个组件创建 数据初始化 挂载 更新 销毁 这就是一个组件所谓的生命周期 强调的是一个时间段 在vue3中 新增了一个setup生命周期函数 setup
  • 四川岳池2021年高考成绩查询,2021年岳池中学升学率高不高?

    引语 了解一个学校 就要全方位的进行了解 清楚学校的师资 录取分数线 升学率等等 四川初升高升学网网编为同学们梳理了2021年岳池中学升学率高不高的相关信息 更多最新资讯可以关注四川初升高升学网公众号 岳池中学2021升学率 立即点击查看
  • MySQL 表分区 报错:Table has no partition for value XXX

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 对已存在的未分区的表进行分区 alter table test PARTITION BY RANGE id PARTITION p1 VALUES LESS THAN 10
  • 扫码点餐软件,打造智慧餐厅新体验!【点餐小程序】

    随着科技的不断发展 扫码点餐软件成为了越来越多餐厅的选择 它们可以帮助顾客快速方便地点餐 同时也带来了更高效的服务体验和更好的管理效果 在这篇文章中 我们将探讨如何通过扫码点餐软件打造智慧餐厅新体验 并且以一个具体的案例来解析其中的技巧 步
  • 10-6 计算时间差

    时间差可以用来衡量程序运行效率 计算其有三种方法 一是使用 difftime 函数 二是使用自定义的 TimeInMillisecond 函数 三是使用 clock 函数 1 使用 difftime 函数计算秒级时间差 三种方法本质相同 都
  • iTerm2使用笔记

    鼠标 设置在less vim中等使用滚轮 在高级设置里面 设置系统编辑方式 让写命令和在其他编辑器中一致 比如alt delete 删除一个word vim vimrc中设置系统clipboard set clipboard unnamed
  • 机器人学习--卡尔曼滤波及各种滤波解析

    什么是滤波 举个最直观的简单例子 臭水沟里舀一大勺水 需要过滤成干净水怎么办 用滤网 网孔可根据需要选择大小孔 过滤 在电路方面波形的高低通滤波原理类似 图像上的噪声点各种中值滤波等类似的滤波方案 Filter 在状态测量领域是根据 预测
  • webpack 和 ts 简单配置及使用

    如何使用webpack 与 ts结合使用 新建项目 执行项目初始化 npm init y 会生成 name tsdemo01 version 1 0 0 description main index js scripts test echo
  • Notion 的插件介绍和使用

    十分推荐 Save to Notion Notion Web Clipper notion 官方的剪藏插件 插件安装 Chrome 商店 https chrome google com webstore detail notion web
  • 看完这篇 教你玩转渗透测试靶机vulnhub——DC8

    Vulnhub靶机DC8渗透测试详解 Vulnhub靶机介绍 Vulnhub靶机下载 Vulnhub靶机安装 Vulnhub靶机漏洞详解 信息收集 暴力破解 提权 获取flag Vulnhub靶机渗透总结 Vulnhub靶机介绍 vulnh
  • keil仿真调试报错

    问题 程序能正常下载 但是keil仿真调试报错 进入仿真程序就在全速运行了 此时什么都干不了 查看command窗口日志信息会发现有报错 jlink error cpu is not halted 然后点击reset按钮会退出全速仿真 所有
  • 一个自己用的opencv历程

    include
  • 设两个栈(stack1,stack2)共享一个一维数组空间s[m],怎么最大限度地利用数组空间

    可以利用扩充栈操作 在传统的双端栈中 两个栈之间存在一种制约关系 两个栈中的元素总数最大可以达到M 如果一个栈中的元素较多 那么另一个栈中的元素就较少 两个栈中的元素总和超不过M 它主要利用了栈的 栈底位置不变 而栈顶位置动态变化 的特性
  • jquery 读取 解析 四级的xml文件 案例

    答案 jQuery 可以很容易地使用 AJAX 技术来解析 XML 文件 下面是一个案例 ajax type GET url yourXMLFile xml dataType xml success function xml xml fin
  • python day55

    今日内容 如何写一个测试脚本 创建一个test py文件 from django test import TestCase Create your tests here import os if name main os environ s
  • unity shader中的矩阵变换知识

    提要 在图形的计算中 比如旋转 缩放 平移 投影等操作 矩阵都扮演着极其重要的角色 它是操作图元的基本工具 虽然很多的图形API已经封装好了这些矩阵操作 但是理解这些矩阵操作的原理会非常非常有帮助 比如说我们可以通过一些矩阵的快捷计算来加速
  • Windows下切换进程用户名为当前用户名,而不是SYSTEM

    在windows操作系统中 某些情况下 我们需要将程序以管理员身份启动 通过任务管理器我们可以看到程序的持有者 如下图所示 使用SYSYTEM权限启动的程序 理论是不可以访问到当前用户下的部分目录 这个时候我们可以在必要时候切换成武到当前用
  • HTML+CSS项目案例

    文章目录 1 表格练习 2 文本样式练习 3 图片标签练习 4 盒子模型练习一 5 盒子模型练习二 6 盒子模型练习三 7 浮动练习 8 边框练习一 9 边框练习二 10 图文混排 11 列表练习 1 表格练习 案例演示 table tr
  • [数据库与软件工程]三、关系运算(并、交、笛卡尔积,自然连接等)

    目录 一 前言 二 简单的关系运算 并 交 差 并 Union 交 Intersection 差 三 复杂的关系运算 笛卡尔积 自然连接 一 笛卡尔积的数学定义 二 关系运算中的笛卡尔积 1 笛卡尔积是什么 2 如果两个关系有同名属性怎么计