技术好文共享:编程语言中,差、交、并、自然连接、选择、投影、笛卡尔积分别都是什么运算

简介: 技术好文共享:编程语言中,差、交、并、自然连接、选择、投影、笛卡尔积分别都是什么运算

交(Intersection):


关系R与关系S的交由既属于R又属于S的元组组成,即R与S中相同的元组,组成一个新关系,其结果仍为n目关系。记作:R∩S={t|t∈R //代码效果参考:http://www.lyjsj.net.cn/wx/art_23967.html

∧ t∈S}

简单来说,运算结果就是两或多个实体集所共有的部分


并(Union):


关系R和关系S的并由属于R或属于S的元组组成,即R和S的所有元组合并,删去重复元组,组成一个新关系,其结果仍为n目关系(“n目”指关系模式中属性的数目为n) 。记作:R∪S={t|t∈R∨t∈S}


简单来说,运算结果为两或多个实体集加起来,然后重复的部分只留下一个


差(Difference)


关系R与关系S的差由属于R而不属于S的所有元组组成,即R中删去与S中相同的元组,组成一个新关系,其结果仍为n目关系。记作:R-S={t|t∈R∧┐t∈S}


简单来说,运算结果为,在表R中去掉表S也有的部分


广义笛卡尔积(Extended Cartesian Product)


两个分别为n目和m目关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1k2个元组,记作:R×S={tr⌒ts| tr∈R∧ts∈S}


或记做R×S={(r1,…,rn ,s1,…,sm)∣((r1,…,rn)∈R∧(s1,…,sm)∈S)


r,s为R和S中的相应分量。


简单来说,就是把R表的第一行与S表第一行组合写在一起,作为一行。然后把R表的第一行与S表第二行依此写在一起,作为新一行。以此类推。当S表的每一行都与R表的第一行组合过一次以后,换R表的第二行与S表第一行组合,以此类推,直到R表与S表的每一行都组合过一次,则运算完毕。


如果R表有n行,S表有M行,那么笛卡尔积R×S有n×M行。


选取(Selection)


选取运算是单目运算,是根据一定的条件在给定的关系R中选取若干个元组,组成一个新关系,记作:σF(R)={t|t∈R∧F(t)为真}


其中,σ为选取运算符,F为选取的条件,它由运算对象(属性名、常数、简单函数)、算术比较运算符( > ,≥,<,≤,=,≠)和逻辑运算符(∨ ∧ ┐)连接起来的逻辑表达式,结果为逻辑值“真”或“假”。


选取运算实际上是从关系R中选取使逻辑表达式为真的元组,是从行的角度进行的运算。


简单地说,运算结果就是符合筛选条件的行


选择是根据给定的条件选择关系R中的若干元组组成新的关系,是对关系的元组进行筛选。选择运算示意图如下:


投影(Projection)


投影运算也是单目运算,关系R上的投影是从R中选择出若干属性列,组成新的关系,即对关系在垂直方向进行的运算,从左到右按照指定的若干属性及顺序取出相应列,删去重复元组。记作:ΠA(R)={t【A】|t∈R}


其中A为R中的属性列,Π为投影运算符。


从其定义可看出,投影运算是从列的角度进行的运算,这正是选取运算和投影运算的区别所在。选取运算是从关系的水平方向上进行运算的,而投影运算则是从关系的垂直方向上进行的。


简单地说,就是选取符合筛选条件的列,然后按照你所需要的顺序重新排列。


连接(Join)


连接运算是二目运算,是从两个关系的笛卡尔积中选取满足连接条件的元组,组成新的关系。


所谓自然连接就是在等值连接的情况下,当连接属性X与Y具有相同属性组时,把在连接结果中重复的属性列去掉。即如果R与S具有相同的属性组Y,则自然连接可记作:RS={t r⌒ts |tr∈R∧ts∈S∧tr【Y】=ts【Y】}


自然连接是在广义笛卡尔积R×S中选出同名属性上符合相等条件元组,再进行投影,去掉重复的同名属性,组成新的关系。


出处:


版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。


部分文章来源于网络,如疏漏未标注原文地址或侵权,请联系进行删除。

相关文章
|
存储 编解码 iOS开发
视频文件格式:MOV与MP4格式的区别是什么?
视频文件有多种格式,很多人在下载时不知道该选择哪种文件格式。不同格式有不同特点,各自有优缺点。本文将详细介绍常见的MOV和MP4的特点与区别,以供读者了解及选择。
7798 2
视频文件格式:MOV与MP4格式的区别是什么?
|
开发框架 编译器 定位技术
探索游戏开源世界:引擎与框架的宝库
本文介绍了多个开源游戏引擎和框架,如 Bevy(用 Rust 构建)、Mach、Axmol、Cocos、Open 3D Engine、KorGE、Tiled、OpenRA 和 Godot。这些工具降低了游戏开发的门槛,支持跨平台开发,并推动了游戏行业的发展。
|
10月前
|
机器学习/深度学习 人工智能 算法
VE-Bench:北京大学开源首个针对视频编辑质量的评估指标,从多角度考虑审美并准确地评估视频编辑效果
北京大学开源了首个针对视频编辑质量评估的新指标 VE-Bench,旨在通过人类感知一致的度量标准,更准确地评估视频编辑效果。
412 14
VE-Bench:北京大学开源首个针对视频编辑质量的评估指标,从多角度考虑审美并准确地评估视频编辑效果
|
12月前
|
安全 Linux 网络安全
docker常见问题
【10月更文挑战第2天】
320 3
|
Linux 网络安全 Windows
如何通过隐藏服务器真实IP来防御DDOS攻击
如何通过隐藏服务器真实IP来防御DDOS攻击
|
JavaScript
记录安装nodejs遇到的问题及解决
最近在搭建网站,需要用到nodejs,在配置的时候遇到3个问题,经过搜索和自己思考,把遇到的问题和解决方案记录下来,以供参考
|
Ubuntu Shell Linux
Python环境搭建
Python环境搭建
590 1
|
Java Apache Maven
maven配置阿里云镜像仓库
maven配置阿里云镜像仓库
|
移动开发 JavaScript 前端开发
uniapp中nvue与vue的区别
uniapp中nvue与vue的区别
326 0
|
开发者
快速上手:如何在线生成App
现在,越来越多的企业和个人想要拥有一个自己的App,但是对于非开发者来说,如何实现这个目标呢?本文将介绍一种在线生成App的方法——将网页封装成App。
421 0