数据库——关系代数


如下为三张例表

传统的集合运算

传统集合运算均为二目运算,包括如下四种,对于并、差、交就不再赘述

笛卡儿积

  • 严格来讲为广义的笛卡儿积,因为这里的元素是元组。
  • 两个分别为n目和m目的关系R和S的笛卡儿积是一个(n+m)列的元组的集合,笛卡儿积的前n列是关系R的一个元组,后m列是关系S的一个元组。
  • 若R有x个元组,S有y个元组,那么笛卡尔积有x*y个元组
    【例】R x S

注意分析,前3列为R的元组,后3列为S的元组,结果像是一个R和S的元组的排列组合,共3*3中组合。

专门的关系运算

选择

选择又称限制,即选出在关系R中满足给定条件的诸元组
【例】查询信息系(IS)全体学生
σSdept = 'IS' (Student)σ5 ='IS' (Student)

【例】查询年龄小于20的学生
σSage < 20(Student)σ4 < 20(Student)

投影

从关系中选出若干属性列组成新的关系。(从列的角度进行运算,且会消除重复元组)
【例】查询学生的姓名和所在系
πSname,Sdept(Student)π2,5(Student)

【例】查询学生关系Student中都有哪些系
πSdept(Student)

连接

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

如下为两张例表

一般连接

【例】
在这里插入图片描述
结果如下

等值连接

θ为'='即为等值连接。它是从广义笛卡儿积中选取A、B属性列相等的那些元组
【例】
在这里插入图片描述
结果如下

自然连接

自然连接就是在等值连接的基础上去掉冗余项(去掉等值连接结果中完全相同的两列中的一列)
【例】
在这里插入图片描述
结果如下

外连接

在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃了,同样S中的元组也可能被舍弃,这些被舍弃的元组称为悬浮元组
如果把悬浮元组保留在结果关系中,而在其他属性上填空值(NULL),那么这种连接称为外连接
若只保留左边关系的悬浮元组则称为左外连接
若只保留右边关系的悬浮元组则称为右外连接
【例】外连接

【例】左外连接

【例】右外连接

除运算

设关系R除以关系S的结果为关系T,

  • 则T包含所有在R但不在S上的属性及其值,
  • 且T的元组与S的元组的所有组合都R中。

想要定义除法首先要知道,什么是象集?
象集:本质上是一次选择行的运算和一次选择列的运算。求属性值a在表R中的象集,就是先选出所有A属性中A=a的那些行,然后选择出不包含a的那些列。

来自柳婼小羊哎CC对象集以及除运算的解释
以上二位讲得都比我清楚,但需甄别其中出现的小错误!(我评论了错误得地方,结果人家把我评论删除了,唉)

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

这个式子别去记,没用!!!

【例】R÷S

步骤如下:

  1. 找出R有但是S没有的属性,把它(们)记作K,R÷S的结果就是K
  2. 找出每个K对应的象集
  3. 找出S在R和S的公共属性上的投影
  4. 第三步中的结果如果都包含在第二部得到的某个象集中,那么对应的这个K就是所求的除运算结果

R有但是S没有的属性即为A,A的每个值对应的象集为

a1 : { (b1,c2) , (b2,c3) , (b2,c1) }
a2 : { (b3,c7) , (b2,c3) }
a3 : { (b4,c6) }
a4 : { (b6,c6) }

S在公共属性上的投影为

{ (b1,c2) , (b2,c1) , (b2,c3) }

对比发现只有a1的象集包含了S在公共属性上的投影,所以R÷S的结果即为a1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值