数据库系统概论 —- 第二章 — 关系数据库(2.4 关系代数)

2.4 关系代数

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询

运算的三大要素:
1.运算对象
2.运算符
3.运算结果

关系代数的运算对象是关系,运算结果也为关系。

关系代数用到的运算符包括两类:
1.集合运算符
2.专门的关系运算符
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

关系代数的运算按运算符的不同可以分为:
1.传统的集合运算
传统的集合运算将关系看成元组的集合,其运算是从关系的“水平”方向进行,即行的角度来进行。
2.专门的关系运算
专门的关系运算不仅涉及行而且涉及列。使用比较运算符和逻辑运算符来辅助专门的关系运算符进行操作。

2.4.1 传统的集合运算

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

设关系R和关系S具有相同的目n,即两个关系都有n个属性,且相应的属性取自同一个域,t是元组变量,t∈R表示t是R的一个元组。

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

  • 相容性:
    两个关系具有相同的目。
    两个关系相应的属性取自同一个域。

1. 并(基本运算)

关系R与关系S的并记作,R∪S = { t | t∈R ∨ t∈S } ,其结果仍为n目关系,由属于R或属于S的元组组成。
并为行的并,所有行合成一个表,除去重复的

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

2. 差(基本运算)

关系R与关系S的差记作,R-S ={ t | t∈R ∧ t∉S } ,其结果仍为n目关系,由属于R而不属于S的所有元组组成。

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

3. 交(非基本运算)

关系R与关系S的交记作,R∩S ={ t | t∈R ∧ t∈S } ,其结果关系仍为n目关系,由 属于R 属于S的元组组成。关系的交可以用差来表示,即 R∩S = R – (R-S)。

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

4. 笛卡尔积(基本运算)

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

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

2.4.2 专门的关系运算

专门的关系运算包括选择、投影、连接、除运算

引入记号:

  1. 设关系模式为R(A1,A2,…,An),它的一个关系设为R。t∈R表示 t 是R的一个元组。t[Ai] 则表示元组 t 中相应于属性 Ai 的一个分量。即为元组中一个属性的值

    数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

  2. 若A = { Ai1,Ai2,…,Aik },其中Ai1,Ai2,…,Aik是A1,A2,…,An中的一部分,则称A为属性列或属性组。t[Ai] = ( t[Ai1],t[Ai2],…,t[Aik] )表示元组 t 在属性列A上诸分量的集合。

    数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

    数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

  3. 数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)
    即对关系R和关系S的属性进行拼接

    数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

  4. 数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

    数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

设有一个学生-课程的数据库,包括学生关系Student,课程关系Course,选修关系SC,后面的多个例子将会对这三个关系进行运算。

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

1. 选择(基本运算)

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

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

其中F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”。

逻辑表达式F的基本形式为:X1 θ Y1 ,其中 θ 表示比较运算符,X1,Y1等是属性名,或为常量,或为简单函数,属性名可以使用属性的序号来代替。在基本选择的条件上可以进一步进行逻辑运算
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

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

例题1:查询信息系(IS系)的全体学生

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

例题2:查询年龄小于20岁的学生

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

2. 投影(基本运算)

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

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

其中A为R中的属性列

投影操作是从列的角度进行的运算。

例题1:查询学生的姓名和所在系,即求 Student 关系上学生姓名和所在系两个属性上的投影。

如果选择多个属性,多个属性之间使用逗号进行分隔
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

投影之后不仅取消了原关系中的某些列,而且还可能取消某些元组,因为取消了某些属性列之后,就可能出现重复行,应该取消这些完全相同的行。

例题2:查询学生关系Student中都有哪些系,即查询关系 Student 上所在系属性上的投影。

结果如图所示。Student关系原来有4个元组,而投影结果取消了重复的CS元组,因此只有三个元组。
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

3. 连接(非基本运算)

连接也称为 θ 连接。

连接从两个关系的笛卡儿积中选取属性间满足一定条件的元组。记作:

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

其中,A和B分别为R和S上列数相等且可比的属性组,θ 是比较运算符。

连接运算从R和S的笛卡儿积 R X S 中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系 θ 的元组。

连接运算中有两种最为重要也最为常用的连接,

  1. 等值连接
  2. 自然连接

θ 为“=” 的连接运算称为 等值连接 。它是从关系R与S的广义笛卡儿积中选取A、B属性值相等的那些元组,即等值连接为:

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

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

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

一般的连接操作从行的角度进行运算,但自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。

例题:

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

在进行连接时,被舍弃的元组(即没有在结果中的元组)称为悬浮元组

如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(NULL),那么这种连接就叫做外连接,记作

注意符号两边有小突出
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

如果只保留左边关系R中的悬浮元组就叫做左外连接,记作

注意只有左边有小突出
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

如果只保留右边关系S中的悬浮元组就叫做右外连接,记作

注意只有右边有小突出
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

在图2.8中,图(a)是图2.7中的关系R和关系S的外连接,图(b)是左外连接,图©是右外连接。

图2.7中的关系R和关系S
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

图2.8
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

4. 除运算(非基本运算)

设关系R除以关系S的结果为关系T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中

下面用象集来定义除法:
给定关系R(X,Y)和S(Y,Z),其中X、Y、Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集
R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:
元组在X上分量值 x 的象集Y 包含 S在Y上投影的集合。记作

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

其中Yx为 x 在R中的象集,x = tr[X]。

除操作是同时从行和列角度进行运算

例题1:

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

例题2:

数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)

使用除运算的场景:“查询…全部 / 所有的…”的问题。如,“查询选修了所有课程的学生的学号”。
注意,要与“查询全部 / 所有的…”进行区分,如,“查询所有信息系的学生”。

2.4.3 小结

本节介绍了8种关系代数运算,其中并、差、笛卡儿积、选择和投影这5种运算为基本的运算。其他三种运算,即交、连接和除,均可以用这5种基本运算来表达。

关系代数中,这些运算经有限次复合后形成的表达式称为关系代数表达式

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2022年6月13日
下一篇 2022年6月13日

相关推荐