学习笔记1:关系代数

常用的8种关系代数:

集合运算
笛卡尔积×
自然运算
投影R[ ]
选择R where C
连接▷◁
÷


兼容表:

 

对于表R和表S:

1.R和S具有相同的属性集
2.对于每个属性有相同的域
3.每个属性表示的意义是相同的

则称R和S是兼容表

 

  • 交,并,差运算没有什么好说的,它们只适用于兼容表。
  • 乘法有点小意思。对于表T:Head(T)=att1 att2...attN  如果试图用表T和他本身去做笛卡尔积,则结果如:head(T×T)=T.att1 T.att2...T.attN T.att1 T.att2...T.attN  这个时候问题就暴露出来了,即使用了完全限定名,依然不能区分结果表中的一堆属性。因此形如T×T的笛卡尔积是不被允许的,理论上只能将一个T赋上别名,比如T:=R,然后T×R 。别名的重要性或许在RDBMS的系统中看不出多少,但在ORDBMS中,正式地访问某个对象的属性必须要用别名限定。
  • 投影运算,可以看成是对列的选择,选择完成后会去除那些相同的行。所以投影运算具有distinct的特征。
  • 选择运算,可以看成是对行的选择
  • 关于连接运算的蜕化:
  1. 如果表R和表S没有任何共同属性,R▷◁S=R×S
  2. 如果表R和表S具有相同的属性集,R▷◁S=R∩S
  • 结合律:(R ×S) ×T=R ×(S ×T)
                (R▷◁S)▷◁T=R▷◁(S▷◁T)
  • 交换律: R×S=S×R
                 R▷◁S=S▷◁R

 

 

在8种运算中,基本的是5种,并,差,乘,选择,投影。

 

也就是说,所有的关系代数问题都以通过这5种运算来进行。

 
1.对于交运算∩,有 :R∩S=R-(R-S) 。所以∩可以单纯通过-来代替。
2.对于连接运算▷◁,( R▷◁S=  (R×S) where R.attr=S.attr and ...)[attr1,attr2,...]。一目了然,连接可以用乘法,选择,投影来代替。
3.对于除法运算÷,R÷S= R[投影到S没有的属性]-((R[投影到S没有的属性]×S)-R)[投影到S没有的属性],即除法可以用乘法,投影,差运算来代替。

 

关于除法运算用乘法,投影,差代替的证明:

 

例如有两个表 :Head(R)=(A,B)  Head(S)=(B) (注:A,B不是表单个属性,而是属性的集合)

 

1)R[A]表示什么?三种情况:

跟S中B属性的每一行都发生关系的A1,

跟S中B属性若干行发生关系的A2,

不跟S中B属性发生关系的A3

简单说,R可以表示成

A1B
A2B'
A3C

 

2)R[A]×S 表示所有A属性跟B属性发生关系的集合,即:

A1B
A2B
A3B

 

3)那么R[A]×S-R的意义就是:它汇集了所有 不跟B属性发生关系的A3,以及所有跟B属性若干行发生关系的A2。

只有全部跟S中的B发生联系的A1才能被去掉.    R[A]×S-R如下:

A2B-B'
A3B

 

4)很显然,我们所求的就是上面的被去掉的A1,即R[A]-(R[A]×S-R)[A]

 

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值