关系型数据库--关系代数
目录
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
运算符 | 含义 | |
集合运算符 | ∪ | 并 |
- | 差 | |
∩ | 交 | |
× | 笛卡尔积 | |
专门的关系运算符 | 选择 | |
投影 | ||
连接 | ||
÷ | 除 |
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
关系型数据库--关系代数相关推荐
- 阿里云新一代关系型数据库 PolarDB 剖析
本文通过描述关系型数据库发展的背景以及云计算的时代特征,分享了数据库计算力的螺旋式上升的进化理念.并且结合阿里云 RDS 产品的发展路径,阐述了自主研发的新一代云托管关系型数据库 PolarDB 的产 ...
- 关系型数据库(Relational Database)与非关系型数据库(NoSQL)的区别:(MySQL,Redis,Memcache,MongoDB)
Table of Contents 关系型数据库(Relational Database) 什么是关系数据库 什么是SQL? 关系数据库的结构 关系模型 关系数据库的好处 数据一致性 隔离性和原子性 ...
- 关系型数据库由哪三部分组成_关系数据库| 第2部分
关系型数据库由哪三部分组成 关系数据库理论 (Theory of relational databases) The foundations of the theory of relational d ...
- 关系型数据库理论基础阐释
关系型数据库理论基础 信息世界中的基本概念 1)实体(entity) 客观存在并可相互区别的事物称为实体.实体可以是具体的人.事.物,也可以是抽象的概念或联系. 2)属性(attribute) 实体所 ...
- Day 36: 关系型数据库和MySQL概述
关系型数据库和MySQL概述 关系型数据库概述 数据持久化 - 将数据保存到能够长久保存数据的存储介质中,在掉电的情况下数据也不会丢失. 数据库发展史 - 网状数据库.层次数据库.关系数据库.NoSQ ...
- 数据库原理(2)关系型数据库理论
二.关系型数据库理论 2.1 关系型数据库中基本概念 关系(Relation) 一个关系就是一张二维表,每个关系都有一个关系名 元组 二维表中的行称为元组 属性 二维表中的列称为属性 关系模式 关系模 ...
- 关系型数据库 RDBMS 的旧与新 -- 谈谈 NewSQL
作者简介 陈运海 DaoCloud 数据平台架构师,长期关注数据库系统.分布式系统.区块链等领域. 这是最好的时代,也是最坏的时代. 在这个时代我们有各种技术可以选择,在这个时代我们有各种技术要选择. ...
- 关系型数据库由哪三部分组成_关系数据库| 第1部分
关系型数据库由哪三部分组成 使用关系数据库 (Using The Relational Database) A relational database is used for electronic d ...
- mysql 应用前景_图数据库在企业应用中前景如何,相比关系型数据库有哪些优势?...
图数据虽然在国内的应用还不是非常广泛,但发展前景还是很可观的. 跟以Oracle为代表的传统关系型数据相比,图的逻辑可以很好的解决绝大多数底层数据分析问题, 图数据的数据逻辑维度要远高于关系型数据,所 ...
最新文章
- windows下cmd命令行显示UTF8字符设置
- 舵机弹跳机器人_这个小小的机器人外形呆萌 弹跳能力绝对比你好
- ES6的 super 关键字
- Linux内核 sysctl.conf 优化设置
- 程序员职场的出路在哪里
- android Eclipse导入com.android.internal.R和layoutlib.jar报错解决方案
- 万年历升级版 Calendar
- 给你的网页添加随机BGM背景音乐
- Spring框架中IoC(控制反转)的原理
- 【CCCC】L2-024 部落 (25分),,并查集,模板水题,统计集合个数
- 进程创建函数fork
- sci的figure怎么做_一文看懂SCI论文中都有哪几种Figure
- 在PSP上玩《大旋风 Twin Hawk》
- 一套SpringBoot+VUE全平台支付系统源码
- 两个队列实现一个栈-----队列面试题3
- java ckfinder中文_CKfinder中文乱码的解决.
- mysql中rand的用法_MySQL RAND()用法及代码示例
- CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
- 第二个MFC实例:GPA计算器
- xampp mysql远程连接_XAMPP mysql远程连接