赞
踩
目录
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。
任何运算的三大基本要素都是运算对象、运算符、运算结果。关系代数运算对象是关系,运算结果也是关系。关系代数的运算符包括两类:集合运算符和专门的关系运算符。如表1
运算符 | 含义 | |
集合运算符 | ∪ | 并 |
- | 差 | |
∩ | 交 | |
× | 笛卡尔积 | |
专门的关系运算符 | 选择 | |
投影 | ||
连接 | ||
÷ | 除 |
传统的集合运算是二目运算,包括并、差、交、笛卡尔积4种运算。
设关系R和关系S具有相同的目n(即两个关系都有n个属性),且相应的属性取自同一个域,t是元组变量,表示t是R的一个元组。
可以定义并、差、交、笛卡尔积运算如下:
关系R与关系S的并记做
其结果仍为n目关系,由属于R或属于S的元组组成。
其结果仍为n目关系,由属于R而不属于S的所有元组组成。
关系R与关系S的交记做
其结果仍为n目关系,由既属于R又属于S的元组组成。
这里的笛卡尔积严格地讲应该是广义的笛卡尔积,因为这里的笛卡尔积的元素是元组。
两个分别为n目和m目的关系R和S的笛卡尔积是一个(n+m)列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的笛卡尔积有k1×k2个元组。记作
图1 传统的集合运算示意图
问:已知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)
选择又称为限制(restriction)它是在关系R中选择满足给定条件的诸元组,记作
其中F表示选择条件,它是一个逻辑表达式,取逻辑值“真”或“假”
选择运算实际上是从关系R中选取使逻辑表达式F为真的元组。这是从行的角度进行的运算。
设有一个学生-课程库,包括学生关系student、课程关系course和选修关系selectedcourse如图2
例1:查询课程名为数学的课程信息:
mysql代码表示
- SELECT * FROM course
- WHERE course_name = '数学';
关系代数表示:
结果为:
关系R上的投影是从关系R中选择出若干属性列组成新的属性。记作
其中A为R中的属性列,投影操作是从列的角度进行的运算
例2:查询学生的姓名和所选课程号
mysql代码表示
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是全体集合,自然连接可记作
除操作同时从行和列的角度进行运算,需要用到象集的概念,后续可以补充
请用关系代数表示这样一个查询:查询选修了课程号为10001和10003课程的学生学号。
mysql表示:
- SELECT student_id FROM selectedcourse
- WHERE course_id = 10001 OR course_id = 10003;
关系代数表示:
结果:
本文的主要理论来自于教材《数据库系统概论》第五版 王珊 萨师煊著 P47-P56
本文的SQL查询结果截图自本地数据库,操作界面Navicat
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。