关系代数表达式总结-数据库

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

关系代数表达式总结

一、并

例1 求选修了课程号为1或2的课程的学生学号。

分析:可以先求出选修了课程号为1的课程的学生学号,再求出选修了课程号为2的课程的学生学号,最后使用并运算的方法求出选修课程号为1或2的课程的学生学号。本

例也可以使用或条件来表示。

n Sno ( o Cno二’1' (SC)) U n Sno ( o Cno二'2 ' (SC))或n Sno ( oCno= ' 1 'V Cno= ' 2' (SC))

例2检索至少选修课程号为 2和3的课程的学生学号。

分析:

方法一:只涉及到一个表,但不能直接用人(为什么?)

特别注意,本例不能写为:

n Sno( oCno= ' 2' A Cno=' 3' (SC))

因为选择运算为行运算,在同一行中Cno不可能既为2,又为3。

第一步:转换(SC X SC)

笛卡尔积将垂直的条件展开为水平的条件。

选修课程号为2和3的学生:

(71=4 人2= ' 2'人5= ' 3' (SC X SC)

最后取出学生的学号:

n i( 01=4 人2= ' 2 '人5= ' 3' (SC X SC))

方法二:n Sno( oCno= ' 2' (SC)) Qn no ( o Cno= ' 3' (SC))

三、差

例3将学生信息(‘ 95001 ','李勇’,‘男’,20,‘ CS')从Student表删除。

分析:可以将这行数据看成由一个元组构成的表,将Student表与该表进行差运算。

因此,该删除操作可表示为:

Student-{ '95001 '李勇',’男',20 , ‘ CS' }

注意:但是当查询涉及到否定或全部值时,上述形式就不能表达了,就要用到差操作或除操作。

例4求没有选修课程号为 2的课程的学生学号。

分析:可以认为是在全部学号中去掉选修课程号为2的课程的学生学号,就得出没有

选修课程号为 2的学生学号。由于在并、交、差运算中,参加运算的关系要求是兼容的,故应当先投影,再进行差运算。

n Sno (Stude nt)- n Sno ( o Cno=' 2' (SC))

特别注意,本题不能写为:n Sno ( o Cno ±2 ' (SC))。因为,选择运算为行运算,并且SC 表中包含的只是选修了课程的学生学号,对那些没选任何课程的学生学号,在SC中找不到。

根据题意,要查询没有选修课程号为’2'课程的学生学号,显然包括没选任何课程的学生

学号。

当查询涉及到针对“否定”特征含义的查询要求,如“不”、“没有”等字眼,一般要

用差运算表示。

四、自然连接

例5检索不学“ 2 ”号课程的学生姓名与年龄。

分析:首先考虑“差”的问题。先求出全体学生的姓名和年龄,再求出学了” 2 ”号课

程的学生的姓名和年龄,最后执行两个集合的差操作。

n sn ame,Sage (Stude nt)- n sname,Sage ( ^Cno 二' 2' (Student

SC))

例6查询至少选修了一门其直接先行课为“ 5”号课程的学生姓名。 分析:(1 )根据题目确定要输出的列为: Sname,都在Student 表中;

(2)

根据题意,先行课程名为“ 5”,则选择的条件为 Cpno=

' 5 ',因为Cpno 在 Course 表中,所以也要用到

Course 表;

(3) 根据1 , 2两步确定用到的表名集为 {Student,Course};

(4) 因为表名集中两个表,则要用自然连接将它们连接起来,但因为这个两表不存在 共同的列,不能进行自然连接。

因此要加入中间表,中间表中应含有能与其它两个表进行自

然连接的公共列,这个表就是 SC 。将选择条件Cpno= ‘ 5 '作用于自然连接后产生的新表 上,并用投影操作选取要输出的

Sno,Cno 。

综上,该查询的关系代数表达式为:

(Course)SC) A : 1 Stuent))

五、除

1 .除法定义中的含义

分析:(1 )前提:两个关系 R(X,Y)和S(Y,Z)应该有公共属性列。

n Sname ( cjCpno 二’5 (Course) SC

n Sno,Sn ame (Stue nt))

n Sname ( n Sno ( j Cpno= ' 5

(2) 运算结果为P(X),元组来自于R 关系,只包含X 属性列 (3) R 关系中的哪些元组呢?

对于T[X]的象集包含口 Y (S) 2•除法运算的步骤

(1 )将被关系R 的属性分成两个部分,即与除关系相同的属性部分 Y ,和与除关系不

同的属性部分X 。

(2) 在除关系中,求 Y 的投影,得到目标数据集。

(3 )将被除关系进行分组。(分组原则是“值”一样的为一组)

(4) 考虑被除关系中已分好的每一元组,如果它的象集包含目标数据集(投影结果)

S

S1

R (a)

分析:在关系R 中,A 可以取四个值{a 1,

a 1的象集为

(C )

a 2, a 3, a 4}。其中:

{(b 1, C 2), (b 2, C 3), (b 2, c i )}

a 2的象集为 {(

b 3. C 7), (b 2, C 3)}

a 3的象集为 {(

b 4,

c 6)}

a 4的象集为 S 在(B , C)上的投影为 显然只有a 1的象集(B , C ) {(

b 6

, C 6)}

{(b1 , C2), (b2 , C1) , (b2 , C 3)}

a1包含了 5在(B , C )属性组上的投影,所以

R -S={a 1}o

例,R 表示选修课程,

S1、 S2、S3表示课程情况

相关文档
最新文档