目录

1 概述

2 传统的集合运算

2.1并(union)

2.2差 (expect)

2.3交(intersection)

2.4笛卡尔积(cartesian product)

2.5 例题分析

3.专门的关系运算

3.1选择(selection)

3.2投影(projection)

3.3 连接(join)

3.4 除运算(division)

3.5 例题


1 概述

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。
任何运算的三大基本要素都是运算对象、运算符、运算结果。关系代数运算对象是关系,运算结果也是关系。关系代数的运算符包括两类:集合运算符和专门的关系运算符。如表1

表1 关系代数运算符
运算符 含义
集合运算符
-
× 笛卡尔积
专门的关系运算符 选择
投影

连接
÷

2 传统的集合运算

传统的集合运算是二目运算,包括并、差、交、笛卡尔积4种运算。

设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,t是元组变量,表示t是R的一个元组。
可以定义并、差、交、笛卡尔积运算如下:

2.1并(union)

关系R与关系S的并记做

其结果仍为n目关系,由属于R或属于S的元组组成。

2.2差 (expect)


其结果仍为n目关系,由属于R而不属于S的所有元组组成。

2.3交(intersection)

关系R与关系S的交记做

其结果仍为n目关系,由既属于R又属于S的元组组成。

2.4笛卡尔积(cartesian product)

这里的笛卡尔积严格地讲应该是广义的笛卡尔积,因为这里的笛卡尔积的元素是元组。

两个分别为n目和m目的关系R和S的笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的笛卡尔积有k1×k2个元组。记作

图1 传统的集合运算示意图

2.5 例题分析

问:已知T1时刻某港口内船舶集合为A,T1 + △t时刻该港口内船舶集合为B,请用关系代数求取△t时间内进港和出港船舶的集合。

问题分析及解答:
△t时刻发生了两件事 S1集合的船进港,S2集合的船出港,剩下的船不动,因此对于S1进港船舶,它属于B不属于A,用差运算可以表示B-A;同理,对于S2出港船舶,它属于A不属于B,用差运算可以表示A-B
△t时间内进港船舶B-A
△t时间内出港船舶A-B
进港和出港船舶的总集合(B-A)∪(A-B)

3.专门的关系运算

3.1选择(selection)

选择又称为限制(restriction)它是在关系R中选择满足给定条件的诸元组,记作


其中F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”
选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。

设有一个学生-课程库,包括学生关系student、课程关系course和选修关系selectedcourse如图2

例1:查询课程名为数学的课程信息:
mysql代码表示

SELECT * FROM course
WHERE course_name = '数学';

关系代数表示:

结果为:

3.2投影(projection)

关系R上的投影是从关系R中选择出若干属性列组成新的属性。记作

其中A为R中的属性列,投影操作是从列的角度进行的运算

例2:查询学生的姓名和所选课程号
mysql代码表示

SELECT student_id, course_id FROM selectedcourse;

关系代数表示:

结果为:

3.3 连接(join)

连接也称为θ连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。
记作:

其中,A和B分别为R和S上列数相等且可比的属性组,θ是比较运算符。连接运算符从R和S的笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组。

连接运算中有两组最为重要和常用的连接,即等值连接和自然连接
θ为“=”的连接运算为等值连接。它是从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为

自然连接是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉,若R和S中具有相同的属性组B,U是全体集合,自然连接可记作

3.4 除运算(division)

除操作同时从行和列的角度进行运算,需要用到象集的概念,后续可以补充

3.5 例题

请用关系代数表示这样一个查询:查询选修了课程号为10001和10003课程的学生学号。

mysql表示:

SELECT student_id FROM selectedcourse
WHERE course_id = 10001 OR course_id = 10003;

关系代数表示:

结果:

本文的主要理论来自于教材《数据库系统概论》第五版 王珊 萨师煊著 P47-P56

本文的SQL查询结果截图自本地数据库,操作界面Navicat

关系型数据库--关系代数相关推荐

  1. 阿里云新一代关系型数据库 PolarDB 剖析

    本文通过描述关系型数据库发展的背景以及云计算的时代特征,分享了数据库计算力的螺旋式上升的进化理念.并且结合阿里云 RDS 产品的发展路径,阐述了自主研发的新一代云托管关系型数据库 PolarDB 的产 ...

  2. 关系型数据库(Relational Database)与非关系型数据库(NoSQL)的区别:(MySQL,Redis,Memcache,MongoDB)

    Table of Contents 关系型数据库(Relational Database) 什么是关系数据库 什么是SQL? 关系数据库的结构 关系模型 关系数据库的好处 数据一致性 隔离性和原子性 ...

  3. 关系型数据库由哪三部分组成_关系数据库| 第2部分

    关系型数据库由哪三部分组成 关系数据库理论 (Theory of relational databases) The foundations of the theory of relational d ...

  4. 关系型数据库理论基础阐释

    关系型数据库理论基础 信息世界中的基本概念 1)实体(entity) 客观存在并可相互区别的事物称为实体.实体可以是具体的人.事.物,也可以是抽象的概念或联系. 2)属性(attribute) 实体所 ...

  5. Day 36: 关系型数据库和MySQL概述

    关系型数据库和MySQL概述 关系型数据库概述 数据持久化 - 将数据保存到能够长久保存数据的存储介质中,在掉电的情况下数据也不会丢失. 数据库发展史 - 网状数据库.层次数据库.关系数据库.NoSQ ...

  6. 数据库原理(2)关系型数据库理论

    二.关系型数据库理论 2.1 关系型数据库中基本概念 关系(Relation) 一个关系就是一张二维表,每个关系都有一个关系名 元组 二维表中的行称为元组 属性 二维表中的列称为属性 关系模式 关系模 ...

  7. 关系型数据库 RDBMS 的旧与新 -- 谈谈 NewSQL

    作者简介 陈运海 DaoCloud 数据平台架构师,长期关注数据库系统.分布式系统.区块链等领域. 这是最好的时代,也是最坏的时代. 在这个时代我们有各种技术可以选择,在这个时代我们有各种技术要选择. ...

  8. 关系型数据库由哪三部分组成_关系数据库| 第1部分

    关系型数据库由哪三部分组成 使用关系数据库 (Using The Relational Database) A relational database is used for electronic d ...

  9. mysql 应用前景_图数据库在企业应用中前景如何,相比关系型数据库有哪些优势?...

    图数据虽然在国内的应用还不是非常广泛,但发展前景还是很可观的. 跟以Oracle为代表的传统关系型数据相比,图的逻辑可以很好的解决绝大多数底层数据分析问题, 图数据的数据逻辑维度要远高于关系型数据,所 ...

最新文章

  1. windows下cmd命令行显示UTF8字符设置
  2. 舵机弹跳机器人_这个小小的机器人外形呆萌 弹跳能力绝对比你好
  3. ES6的 super 关键字
  4. Linux内核 sysctl.conf 优化设置
  5. 程序员职场的出路在哪里
  6. android Eclipse导入com.android.internal.R和layoutlib.jar报错解决方案
  7. 万年历升级版 Calendar
  8. 给你的网页添加随机BGM背景音乐
  9. Spring框架中IoC(控制反转)的原理
  10. 【CCCC】L2-024 部落 (25分),,并查集,模板水题,统计集合个数
  11. 进程创建函数fork
  12. sci的figure怎么做_一文看懂SCI论文中都有哪几种Figure
  13. 在PSP上玩《大旋风 Twin Hawk》
  14. 一套SpringBoot+VUE全平台支付系统源码
  15. 两个队列实现一个栈-----队列面试题3
  16. java ckfinder中文_CKfinder中文乱码的解决.
  17. mysql中rand的用法_MySQL RAND()用法及代码示例
  18. CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
  19. 第二个MFC实例:GPA计算器
  20. xampp mysql远程连接_XAMPP mysql远程连接

热门文章

  1. Oracle 常用的V$ 视图脚本
  2. ProtoBuf与网络通信
  3. Protobuf是什么
  4. python 自动识别图形验证码
  5. 计算机网络划分为广域网的主要依据,下列哪一项是局域网、城域网、广域网主要是划分依据?()...
  6. 第十节 Java工具包-Collections 流--lambada表达式
  7. 用水泥混凝土摊铺机进行作业时该做到的日常养护工作
  8. @Validated使用
  9. 如何调整照片的大小?电脑怎么修改图片大小尺寸?
  10. 寻址方法有哪些-七种数据寻址-三种内存寻址