目录
1. 关系代数之基本操作
2. 关系代数之扩展操作
3. 关系代数之组合与应用训练
4. 关系代数之复杂扩展操作(选学)
基本内容
关系代数运算特点
- 关系代数操作以一个或多个关系为输入,结果是一个新的关系。
- 用对关系的运算来表达查询,需要指明所用操作, 具有一定的过程性。
为什么提出关系代数?

关系代数三要素:运算对象、运算结果、运算符
1. 关系代数之基本操作
关系代数操作:集合操作和纯关系操作
(1)集合操作

(2)纯关系操作

关系代数满足的属性:并相容性
对于并差交操作来讲要满足并相容性
- 关系R和关系S的属性数目相同
- 对于任意的i关系R的第i个属性和关系S的第i个属性的域相同

例如:下面两个关系属性数目、类型(也就是域相同满足并相容性)

并操作
汉语中 或者....或者.... 的意思
![]()

差(Difference)操作
是...但不含...
R - S, 它由出现在关系R中但不出现在关系S中的元组构成。
![]()
![]()

广义笛卡尔积 (Cartesian Product)
![]()
![]()


行列无关:
![]()
新的 度/属性 和 元组 数:
![]()
![]()
度: 元组:
![]()
选择操作(Select):
给一个关系R同时给定一个选择的条件condition(简记为con)选择运算的结果也是关系。
![]()
他从关系中选择满足给顶条件con的元组。
数学描述:
![]()
例如:



投影
从给定关系中选择某些列作为新的关系

对于关系来讲:是一个集合,集合当中的元素是不能重复的



小结

2. 关系代数之扩展操作
关系模型之扩展操作(对基本操作进行组合就能得到)
交操作(Intersection)
![]()
![]()

原因:差操作不是简单的加减法
抽象的

语义的

连接操作(theta-Join)



抽象的

语义的

逻辑过程

但是其实物理上并没有第二步,直接第三步是可以做到的。
![]()
需要更名操作,有的把更名操作也作为基本操作之一那么就是六种基本操作。



等值连接(Equi-Join)

抽象等值连接

语义等值连接

逻辑过程

自然连接(Natural-Join)
![]()
没有加条件,有默认的条件(这个是最常用的)也就是说关系R和关系S中一定是有属性名相同的属性.


抽象的自然连接

语义的自然连接

操作步骤


多次自然连接

小结
使用连接操作比使用积操作选择投影操作要高效一些。

3. 关系代数之组合与应用训练
关系代数操作之组合与应用训练
集合操作思维训练


误区

解决办法(连接自身的等值连接:学号相同)


错误:自然连接的结果仍然是三个属性所以选择操作之后仍然是空

![]()
![]()
错误:除了只学习课程号为002的没有查出来,其他都查出来。
另一种思路:把学过002号课程的学生找出来从学生表中差去的思路
![]()
错误:不满足差运算的并相容性(属性数目是不同的,语法错误)
正确做法(语法语义都是正确的)

关系代数书写的思维



4. 关系代数之复杂扩展操作(选学)
关系代数之复杂扩展操作
关系的除运算(Division)
![]()


![]()

![]()






结果是一样的,因为S#,C#是候选键 。
外连接(Outer-Join)


按上式连接的结果,003号教师的姓名和工资信息丢失了。
因为在Teach表中没有和003号教师相匹配的元组,元组003号教师(又称为失配元组)不能和其他表的元组形成连接元组。
怎样保证使003号教师信息仍旧出现在结果关系中呢?
这就需要外连接


外连接操作
![]()
进一步的区分:
![]()


操作示例:
其实左外连接就是保持左侧不丢失,没有配对的就和空配对。其他同理









版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/39443.html