第2章 关系数据库——2.4关系代数

简介: 第2章 关系数据库——2.4关系代数

2.4  关系代数

 

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

     运算对象、运算符、运算结果是运算的三大要素。

     关系代数的运算对象是关系,运算结果亦是关系。关系代数用到的运算符包括两类:集合运算符专门的关系运算符,如下表所示。


运算符

含义

集合运算符

-

×

笛卡儿积

专门的关系运算符

σ

选择

Π

投影

连接

÷

1  关系代数运算符


      关系代数的运算按运算符的不同可分为传统的集合运算专门的关系运算两类。


2.4.1  传统的集合运算


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


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

可以定义并、差、交、笛卡儿积运算如下:

1、并(union)

908b019d32b776956662031787346deb_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg

2、差(except)

195422f810d09b58202b3f43280b7e91_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg

3、交(intersection)

eb1a3530e6a3288dd7b23f26c292511c_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg

4、笛卡儿积(cartesian product)

6e61463144415736d0995caf47d3a1a1_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg


2.4.2  专门的关系运算


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


01 选择(selection)

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

ba660b5f9202b194082ed59524177201_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg

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


设有一个学生-课程数据库,包括学生关系Student、课程关系Course和选修关系SC,如下图3所示。下面的多个例子将对这三个关系进行运算。

b9fbb3b7b676bef52f2ff7888f7d79e5_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg

4  学生-课程数据库


2.1  查询信息系(IS系)全体学生。

3c21033ede8ad6f0eac982452a9484ee_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg


2.2  查询年龄小于20岁的学生。

10dbc063516cbc3d2d026788ed6555b5_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg



02 投影(projection)

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

fc2dd842c58283b7985e549e16d9d6e6_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg

     其中A是R中的属性列。


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

4a635ebe44c697088bdb3a5a38e5e988_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg

结果如图5所示。

Sname

Sdept

李勇

CS

刘晨

CS

王敏

MA

张立

IS

5  2.3结果


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

50dd5cb25e2178a2ccead166d3e986e2_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg

结果如图6所示。

Sdept

CS

IS

MA

6  2.4结果


03 连接(join)

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

c83683afa2cf58cd8a1b9f72ed14e0da_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg

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

连接运算中有两种最为重要也最为常用的连接,一种是等值连接(equijoin,另一种是自然连接(natural join


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

efa0febf10c5aa853223af2a353eb188_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg


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

image.png


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

2.5  设图7分别为关系R和关系S,图8为非等值连接0bfb764d9189440d70c5058e6bf8e2f0_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg的结果,图9为等值连接62744fd75543d7ae9ce3072db803c60e_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg的结果,图10为自然连接f93124ad29db60fdec6bda7f98e58cab_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg的结果。


A

B

C


B

E

a1

b1

5


b1

3

a1

b2

6


b2

7

a2

b3

8


b3

10

a2

b4

12


b3

2





b5

2

7  关系R和关系S






A

R.B

C

S.B

E

a1

b1

5

b2

7

a1

b1

5

b3

10

a1

b2

6

b2

7

a1

b2

6

b3

10

a2

b3

8

b3

10

8  的结果


A

R.B

C

S.B

E

a1

b1

5

b1

3

a1

b2

6

b2

7

a2

b3

8

b3

10

a2

b3

8

b3

2

9  等值连接


A

B

C

E

a1

b1

5

3

a1

b2

6

7

a2

b3

8

10

a2

b3

8

2

10  自然连接


     两个关系R和S在做自然连接时,选择两个关系在公共属性上值相等的元组构成新的关系。此时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,同样,S中某些元组也可能被舍弃。这些被舍弃的元组称为悬浮元组(dangling tuple)

     如果把悬浮元组也保存在结果关系中,也在其他属性上填空值(NULL),那么这种连接就叫作外连接(outer join);如果只保留左边关系R中的悬浮元组就叫作左外连接(left outer join或left join);如果只保留右边关系S中的悬浮元组就叫作右外连接(right outer join或right join)

在下图11中,图(a)是图7中的关系R和关系S的外连接,图(b)是左外连接,图(c)是右外连接。

A

B

C

E


A

B

C

E


A

B

C

E

a1

b1

5

3


a1

b1

5

3


a1

b1

5

3

a1

b2

6

7


a1

b2

6

7


a1

b2

6

7

a2

b3

8

10


a2

b3

8

10


a2

b3

8

10

a2

b3

8

2


a2

b3

8

2


a2

b3

8

2

a2

b4

12

NULL


a2

b4

12

NULL


NULL

b5

NULL

2

NULL

b5

NULL

2











(a)外连接


(b)左外连接


(c)右外连接

11



04 除运算(division)

     设关系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的象集Yx包含S在Y上投影的集合。记作

1b2872046fcdd21fbc6b47e7cf991f93_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg

其中68b2964aa9f49ff01b76b8bf3aa32159_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg为x在R中的象集247539e54b1dd840a2f2436eee92b555_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg


2.6  设关系RS分别为图12中的(a)(b)R÷S的结果为图12中的(c)

关系R


关系S


R÷S

A

B

C


B

C

D


A

a1

b1

c2


b1

c2

d1


a1

a2

b3

c7


b2

c1

d1



a3

b4

c6


b2

c3

d2


(c)

a1

b2

c3





a4

b6

c6


(b)



a2

b2

c3







a1

b2

c1







(a)





12


2.7  查询至少选修1号课程和3号课程的学生号码。

首先建立一个临时关系K

K

Cno

1

3

然后求83dde44347a7207fb7f275ef1270de75_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg,最终结果为{201215121}


2.8查询选修了2号课程的学生的学号。

3ad7a14d89277a491ab16a3d95a0b2a6_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg


2.9  查询至少选修了一门其直接先行课为5号课程的学生姓名。

b4a973923eefc16cc629630b39b39a10_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg

或者:

d4475e4339b815d37fb73719d5a4338e_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg


2.10  查询选修了全部课程的学生号码和姓名。

fbe6c4d97ad358738c5405a43fe69de0_640_wxfrom=5&wx_lazy=1&wx_co=1.jpg


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

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


相关实践学习
体验RDS通用云盘核心能力
本次实验任务是创建一个云数据库RDS MySQL(通用云盘),并通过云服务器ECS对RDS MySQL实例进行压测,体验IO加速和IO突发带来的性能提升;并通过DMS执行DDL,将数据归档到OSS,再结合云盘缩容,体验数据归档带来的成本优势。
相关文章
|
移动开发 vr&ar
数据库系统概论——关系代数详解
关系代数是一种抽象的查询语言,是关系数据操纵语言的一种传统表达方式,它是利用对关系的运算来表达查询的。任何运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。关系代数的运算对象是关系,运算结果亦为关系。集合运算符将关系看成元组的集合从关系的“水平”方向即行的角度来进行运算专门的关系运算符不仅涉及行而且涉及列算术比较符辅助专门的关系运算符进行操作逻辑运算符辅助专门的关系运算符进行操作。
706 1
数据库系统概论——关系代数详解
|
6月前
|
数据库 Python
数据库系统概论期末经典大题讲解(用关系代数进行查询)
数据库系统概论期末经典大题讲解(用关系代数进行查询)
163 0
|
数据库 vr&ar
关系数据库——关系代数
关系数据库——关系代数
168 0
|
数据库
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)(下)
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)(下)
|
人工智能 数据库
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)(上)
数据库系统概论 ---- 第二章 -- 关系数据库(2.4 关系代数)
|
SQL 数据库
数据库杂谈(三)—— 关系代数
关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。在本文中,我们不仅谈论关系代数的知识点,而且还配备了对应的练习题。
874 0
|
JavaScript 数据库
数据库原理与应用系列_03关系数据库与关系代数
数据库原理与应用系列_03关系数据库与关系代数
数据库原理与应用系列_03关系数据库与关系代数
|
数据库
数据库中关系代数中的关系运算
除法运算的定义: 这个概念的描述的非常抽象,刚开始学习的同学完全不知所云。这里通过一个实例来说明除法运算的求解过程: 设有关系R、S 如图所示,求R÷S 的结果: 求解步骤过程: 第一步:找出关系R和关系S中相同的属性,即Y属性。
1081 0
|
9天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
25 1