当前位置:   article > 正文

关系型数据库--关系代数

关系代数

目录

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 关系代数运算符
运算符含义
集合运算符
-
×笛卡尔积
专门的关系运算符\sigma选择
\Pi投影

连接
÷

 2 传统的集合运算

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

设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,t是元组变量,t\in R表示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代码表示

  1. SELECT * FROM course
  2. 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表示:

  1. SELECT student_id FROM selectedcourse
  2. WHERE course_id = 10001 OR course_id = 10003;

关系代数表示:

结果:

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Guff_9hys/article/detail/908678
推荐阅读
相关标签
  

闽ICP备14008679号