一、关系代数介绍
①引言
很多非科班出身的朋友会感到疑惑,为什么学着学者数据库,就突然来了一堆数学运算符呢?读完本篇文章,你会将关系代数与数据库的关系在脑子中形成一个联系,起到抛砖引玉的作用(当然也全是干货)。
②关系代数的概念
关系代数是一种抽象的查询语言,用对关系的运算来表达查询。
任何运算的三大基本要素都是运算对象、运算符、运算结果。关系代数运算对象是关系,运算结果也是关系。
如果你没有接触过这方面的内容,读到这里你肯定会产生一个疑惑,什么是关系?
下面说明关系相关概念,以及其与关系型数据库(典型代表为MySql)的联系:
- 关系可以理解为关系型数据库的一个table
- 关系的目可以理解为关系型数据库的一列
- 关系的某个目的某个元组可以理解为关系型数据库某个列的某个值
③关系代数的分类
关系代数可以分为集合运算和关系运算两类。
集合运算:
集合运算符 | 含义 |
---|---|
∪ | 并 |
∩ | 交 |
− | 差 |
× | 笛卡尔积 |
关系运算:
关系运算符 | 含义 |
---|---|
σ | 选择 |
Π | 投影 |
连接 | |
÷ | 除 |
下面将分别介绍两类运算。
二、集合运算
前三项并、交、差运算均有一个大前提:两个关系具有相同的目————也即两个table的属性完全相同。
假设R与S为两个目相同的关系,则它们之间有如下关系:
①并∪
R∪S的结果为R中元组与S中元组的并,如图(图中R的A1应为小写a1):R∪S包含了R与S中的所有元组。
②交∩
R∩S的结果为R与S的共有元组,如图:红蓝两行为共有。
③差−
R−S的结果为,R中有但S中没有的元组,如图:只有R中黑色的行,在S中没有。
④笛卡尔积×
千万别被笛卡尔积吓到,它的结果其实就是:把R的目与S的目拼接,且元素一一匹配拼接,看图就懂了:
- 笛卡尔积是不要求目数相同的,若R为n目x元组、S为m目y元组,则R×S为(n+m)目x*y元组。
三、关系运算
- 首先介绍R(X, Z)表示法:R为关系,X和Z为R的两个目。
①象集
在一个关系R(X, Z)中,x1的象集Zx1是指一个集合,集合中的元素是Z的元组,且那一行X的元组为x1。举例说明:下表表示关系R
X | Z |
---|---|
x1 | z2 |
x1 | z3 |
x1 | z1 |
x2 | z2 |
x2 | z3 |
则x1的象集Zx1={z1, z2, z3}。
②选择σ
选择又称为限制(restriction)它是在关系R中选择满足给定条件的诸元组,记作:
其中F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”
选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。
选择结果为一行或多行:即根据某些条件挑选出即行。
设有一个学生-课程库,包括学生关系student、课程关系course和选修关系selectedcourse如图:
那么以下就为选择的一个例子:
- 查询课程名为数学的课程信息
SELECT * FROM course
WHERE course_name = '数学';
- 其关系代数表示为:
- 结果为:
③投影Π
关系R上的投影是从关系R中选择出若干属性列组成新的属性。记作:
其中A为R中的属性列。
投影操作是从列的角度进行的运算。
以下为投影的一个例子:
- 查询学生的姓名和所选课程号
SELECT student_id, course_id FROM selectedcourse;
- 其关系代数表示为:
- 结果为:
④连接
连接也称为θ连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。记作:
其中,A和B分别为R和S上列数相等且可比的属性组,θ是比较运算符。连接运算符从R和S的笛卡尔积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组。
连接运算中有两组最为重要和常用的连接,即等值连接和自然连接
θ为“=”的连接运算为等值连接。它是从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组,即等值连接为:
自然连接是一种特殊的等值连接。它要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉,若R和S中具有相同的属性组B,U是全体集合,自然连接可记作:
(未完待续 2022/4/28)
参考
https://blog.csdn.net/qq_35252878/article/details/61479635
https://blog.csdn.net/weixin_58587245/article/details/121949372
Q.E.D.