欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » 关系数据库基础教程 » 正文

关系代数的概念与基础操作

创建时间:2012年05月31日 10:48  阅读次数:(14839)
分享到:
关系代数是以关系为运算对象的一组高级运算集合。
关系代数中的操作可分为两类
(1)传统的集合操作:并、差、交、笛卡儿积。
(2)扩充的关系操作:投影、选择、连接、除法等。

关系代数的五个基本操作
1,并(Union)
设关系R和S具有相同的关系模式,R和S的并是由属于R或属于S的元组构成的集合,记为R∪S。形式定义如下:
R∪S≡{t | t∈R ∨ t∈S},t是元组变量,R和S的元数相

2,差(Difference)
设关系R和S具有相同的关系模式,R和S的差是由属于R但不属于S的元组构成的集合,记为R-S。形式定义如下:
R-S≡{ t | t∈R ∧ t∈S},R和S的元数相同。

3,笛卡儿积(Cartesian Product)
设关系R和S的元数分别为r和s,定义R和S的笛卡儿积是一个(r+s)元的元组集合,每个元组的前r个分量(属性值)来自R的一个元组,后s个分量来自S的一个元组,记为R×S。

4,投影(Projection)
这个操作是对一个关系进行垂直分割,消去某些列,并重新安排列的顺序。
设关系R是k元关系,R在其分量Ai1,…,Aim(m≤k,i1,…,im为1到k间的整数)上的投影用πi1,…,im(R)表示,它是一个m元元组集合,形式定义如下:
πi1,…,im(R)≡{ t | t=〈ti1,…,tim〉∧〈t1,…,tk〉∈R }

例如,π3,1(R)表示关系R中取第1、3列,组成新的关系,新关系中第1列为R的第3列,新关系的第2列为R的第1列。如果R的每列标上属性名,那么操作符π的下标处也可以用属性名表示。例如,关系R(A,B,C),那么πC,A(R)与π3,1(R)是等价的。

5,选择(Selection)
选择操作是根据某些条件对关系做水平分割,即选取符合条件的元组。条件可用命题公式(即计算机语言中的条件表达式)F表示。F中有两种成分:
运算对象:常数(用引号括起来),元组分量(属性名或列的序号)。
运算符:算术比较运算符(<,≤, >,≥,=,≠统称为θ符),运算运算符(∧,∨,?)。
关系R关于公式F的选择操作用σF(R)表示,形式定义如下:
σF(R)={ t | t∈R ∧ F(t)= true }
σ为选择运算符,σF(R)表示从R中挑选满足公式F为真的元组所构成的关系。
例如,σ2>ˊ3ˊ(R)表示从R中挑选第2个分量值大于3的元组所构成的关系。书写时,为了与属性序号区别起见,常量用引号括起来,而属性序号或属性名不要用引号括起来。

关系代数的四个组合操作
1,交(intersection)
关系R和S的交是由属于R又属于S的元组构成的集合,记为R∩S,这里要求R和S定义在相同的关系模式上。形式定义如下:
R∩S≡{t︱t∈R ∧ t∈S},R和S的元数相同。

由于R∩S = R-(R-S),或R∩S = S-(S-R),因此交操作不是一个独立的操作,它是由差操作组合而成的。
在图2.12中,R∩S的结果是只有一个元组(d,a,f)。 

2联接(join)
联接有两种:θ联接和F联接(这里θ是算术比较符,F是公式)。
① θ联接 
R ? S≡{t︱ t=<tr,ts > ∧ tr∈R ∧ ts∈S ∧triθtsj } 
θ连接是由笛卡儿积和选择操作组合而成。

② F联接 
F联接是从关系R和S的笛卡尔积中选取属性间满足某一公式F的元组, 这里F是形为F1∧F2∧…∧Fn的公式,每个FP是形为iθj的式子,而i和j分别为关系R和S的第i、第j个分量的序号。

3,自然联接(natural join)
两个关系R和S的自然联接操作具体计算过程如下:
① 计算R×S ;
② 设R和S的公共属性是A1,…,AK,挑选R×S中满足R.A1=S.A1,…,R.AK=S.AK  的那些元组;
③去掉S.A1,…,S.AK这些列。
定义:
  πi1,…,im (σR.A1=S.A1∧... ∧R.AK=S.AK(R×S)),其中i1,…,im为R和S的全部属性,但公共属性只出现一次。

4,除法(division)
设关系R和S的元数分别为r和s(设r >s >0),那么R÷S是一个(r-s)元的元组的集合。(R÷S)是满足下列条件的最大关系:其中每个元组t与S中每个元组u组成的新元组<t,u >必在关系R中。 
R÷S≡π1,2,…,r-s(R)-π1,2,…,r-s((π1,2,…,r-s(R)×S)-R)

关系代数运算的应用实例
在关系代数运算中,把由五个基本操作经过有限次复合的式子称为关系代数表达式。这种表达式的运算结果仍是一个关系。我们可以用关系代数表达式表示各种数据查询操作。

例2.7 数据库中有三个关系:
学生关系 S(S#,SNAME,AGE,SEX)
选课关系 SC(S#,C#,GRADE)
课程关系 C(C#,CNAME,TEACHER)
下面用关系代数表达式表达每个查询语句。
(1)检索学习课程号为C2的学生学号与成绩   ΠS#,GRADE(σ C#=‘C2’(SC))
(2)检索学习课程号为C2的学生学号与姓名。 ΠS#,SNAME(σ C#=‘C2’(S? SC))
(3)检索选修课程名为MATHS的学生学号与姓名。 ΠS#,SNAME(σ CNAME=‘MATHS’(S? SC ? C))
(4)检索选修课程号为C2或C4的学生学号。    ΠS#(σ C#=‘C2’ ∨C#=‘C4’ (SC))
(5)检索至少选修课程号为C2和C4的学生学号。 Π1(σ 1=4 ∧ 2=‘C2’ ∧5=‘C4’ (SC ×SC))
(6)检索不学C2课的学生姓名与年龄 ΠSNAME,AGE(S)-ΠSNAME,AGE(σ C#=‘C2’(S? SC))
(7)检索学习全部课程的学生姓名。 ΠSNAME (  S ? ΠS#,C#(SC) ÷ ΠC#(C) )
(8)检索所学课程包含学生S3所学课程的学生学号。 ΠS#,C#(SC) ÷ ΠC#(σ S#=‘S3’(SC))

关系代数的七个扩充操作
1,改名 
2,广义投影 
3,赋值 
4,外联接(outer join) 
5,外部并(outer union) 
6,半联接(semijoin) 
7,聚集操作 (max,min,avg,sum,count)

声明:因本章涉及一些特殊公式及示例,在网页中不能够正确显示,强烈建议大家下载原ppt文档,下载地址:
数据库学习教程(二)-关系模型和关系运算理论
来源:.net学习网
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf】

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 18+16=? 的结果(结果是:34)
结  果: