一、关系代数的9种操作:
关系代数中包括了:并、交、差、乘、选择、投影、联接、除、自然联接等操作。
五个基本操作:
并(∪)、差(-)、笛卡尔积(×)、投影(σ)、选择(π)
四个组合操作:
交(∩)、联接(等值联接)、自然联接(RcrossS)、除法(÷)
注2:等值连接表示先做笛卡尔积(×)之后,对相应列进行选择或等值关联后的结果(仅筛选行、不筛选列)
注2:自然连接表示两个关系中若有相同名称的属性,则自动作为关联条件,且仅列出一列
二、关系代数表达式:
由关系代数运算经有限次复合而成的式子称为关系代数表达式。这种表达式的运算结果仍然是一个关系。可以用关系代数表达式表示对数据库的查询和更新操作。
三、举例说明:
设教学数据库中有3个关系:
学生关系S(SNO,SNAME,AGE,SEX)
学习关系SC(SNO,CNO,GRADE)
课程关系C(CNO,CNAME,TEACHER)
(1) 检索学习课程号为C2的学生学号与成绩
------------------------------------
SELECT SNO,GRADE
FROM SC
WHERE CNO='C2'
------------------------------------
π SNO,GRADE(σCNO='C2'(SC))
************************************
(2) 检索学习课程号为C2的学生学号与姓名
------------------------------------
SELECT SC.SNO,S.SNAME
FROM SC,S
WHERE SC.SNO=S.SNO
AND SC.CNO='C2'
------------------------------------
π SNO,SNAME(σCNO='C2'(ScrossSC))
此查询涉及S和SC,先进行自然连接,然后再执行选择投影操作。
----
π SNO,SNAME(S)cross(πSNO(σCNO='C2'(SC)))
自然连接的右分量为"学了C2课的学生学号的集合"。
此表达式比前一个表达式优化,执行起来要省时间、省空间。
************************************
(3) 检索选修课程名为MATHS的学生学号与姓名
------------------------------------
SELECT SC.SNO,S.SNAME
FROM SC,S,C
WHERE SC.SNO=S.SNO
AND SC.CNO=C.CNO
AND C.CNAME='MATHS'
------------------------------------
π SNO,SANME(σCNAME='MATHS'(ScrossSCcrossC))
************************************
(4) 检索选修课程号为C2或C4的学生学号
------------------------------------
SELECT SNO
FROM SC
WHERE CNO='C2'
OR CNO='C4'
------------------------------------
π SNO(σ CNO='C2'∨CNO='C4'(SC))
************************************
(5) 检索至少选修课程号为C2或C4的学生学号
------------------------------------
SELECT SA.SNO
FROM SC AS SA,SC AS SB
WHERE SA.SNO=SB.SNO
AND SA.CNO='C2'
AND SB.CNO='C4'
------------------------------------
π 1(σ1=4∧2='C2'∧5='C4'(SC×SC))
************************************
(6) 检索不学C2课的学生姓名与年龄
------------------------------------
SELECT SNAME,AGE
FROM S
MINUS
SELECT S.SNAME,S.AGE
FROM SC,S
WHERE SC.SNO=S.SNO
AND SC.CNO='C2'
(Oracle)
------------------------------------
π SNAME,AGE(S)-πSNAME,AGE(σCNO='C2'(ScrossSC))
************************************
(7) 检索学习全部课程的学生姓名
------------------------------------
这个定义用SQL表示比较麻烦,略过
------------------------------------
π SNO,CNO(SC)÷πCNO(C)
先用除法取出选取所有课程的SNO集(除法可以理解为一个Filter)
π SNAME(S cross (πSNO,CNO(SC)÷πCNO(C)))
再关联S表取出SNAME
************************************
(8) 检索所学课程包含S3所学课程的学生学号
------------------------------------
这个定义用SQL表示比较麻烦,略过
------------------------------------
π SNO,CNO(SC)÷ πCNO(σSNO='S3'(SC))
同样运用了除法的特性
************************************
(9) 将新课程元组('C10','PHYSICS','YU')插入到关系C中
------------------------------------
INSERT INTO C VALUES('C10','PHYSICS','YU')
------------------------------------
(C∪('C10','PHYSICS','YU'))
记住该符号的用法
************************************
(10) 将学号S4选修课程号为C4的成绩改为85分
------------------------------------
UPDATE SC SET GRADE=85
WHERE SNO='S4'
AND CNO='C4'
------------------------------------
(SC-('S4','C4',?)∪('S4','C4',85))
先用'-'实现DELETE功能,再用'∪'实现INSERT功能
注意使用?来表示检索时忽略该字段值
************************************
四、关系代数表达式的优化:
目的:为了系统在执行时既省时间又能提高效率。
基本策略:先做选择,运用投影去除多余属性等等。
优化算法:语法树(尽量提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值)
例如:
π SNO,SNAME(σGRADE>60(ScrossSC)) 进行优化后转换为:
π SNO,SNAME(πSNO,SNAME(S)crossπSNO(σGRADE>60(SC)))
--即提前做选择操作;在每个操作后,应做个投影操作,去掉不用的属性值
又如:
S(S#,SNAME,AGE,SEX)
SC(S#,C#,GRADE)
C(C#,CNAME,TEACHER)
π CNAME,TEACHER(σSEX='女'(ScrossSCcrossC)) 进行优化后转换为:
πCNAME,TEACHER(CcrossπC#(πS#,C#(SC)crossπS#(σSEX='女'(S))))
分享到:
相关推荐
关系代数表达式总结-数据库关系代数表达式总结-数据库关系代数表达式总结-数据库
数据库关系代数表达式学习.doc
简述关系代数中并、交、差、选择、投影、连接、除及关系代数表达式
数据库关系代数练习习题.docx
数据库关系代数习题.pdf
数据库关系代数复杂查询部分例题
这是数据库的一个课程设计,用vs2008编写,具体使用方法在debug文件夹中.
关系代数表达式总结-数据库
D 的 SQL 关系代数生成器 关于 Regal (RElational ALgebra) 是一个用于以编程方式生成 SQL 的无依赖库,旨在用作 ORM 的 SQL 生成器(尽管它可以单独使用)。 该 API 以 Ruby 的为模型,并尝试提供类似的功能。 它的...
之前学习了一下关系代数表达式,现在再学习一下元组关系的演算,这样就全了。这篇东西的符号打出来费了好多时间,比较麻烦,还好看着还能看懂,关键是全文本的,好下面开始正文。 为了讨论方便,先允许关系的基数是...
关系数据库习题及模拟题.rar 内含课本答案
关系代数解释器,模拟关系代数。 内有解释器使用教程,对于关系代数理解十分有益。
3.设有关系R(A,B,C)和关系S(B,C,D),那么与R⋈S等价的关系代数表达式[] A.σ1=5(R⋈S) B.σ1=5(R×S) C.σ1=2(R⋈S) D.σ1=2(R×S) 4.与域表达式 { ab | (c) (R(ac) ∧ R(cb))} 等价的关系代数...
4、查询CS系选数据库(课程名)的同学的学号和成绩 5、查询所有男同学都选了的课程,列出课程号。 6、查询选择了C01(课程号)课程的同学的学号和姓名 7、查询没有选C01(课程号)课程的同学的学号和姓名 错误答
数据库理论详解,上课时用的。希望对大家有一定帮助
则在该表中查询信息系(IS系)全体学生的关系代数表达式是 。 A.π Sdept (Student) B.σSdept (Student) C.π Sdept=’IS’ (Student) D.σSdept=’IS’ (Student) ( )3. 对基本表S,执行操作DROP TABLE S...
数据库技术是计算机科学技术中发展最快的领域之一,也是应用最广泛的技术之一,它已成为计算机信息系统与应用系统的核心技术和重要基础。《数据库系统原理》是计算机信息管理专科生的专业必修课程。 本课程的任务是...
《数据库原理与应用》第二章习题...有两个关系式S(A,B,C,D)和T(C,D,E,F),分别包括N1,N2个元组,N2>N1>0,对下列每个关系代数表达式,计算在使表达式有意义的情况下,可以得到的最大、最小元组的数目以及列的数目。
(2) 写出与下列SQL语句对应的关系代数表达式 SELECT XM,R. DWH , DWM FROM R, S π XM, R.DWH,DWM (R×S) (3) 写出与下列SQL语句对应的关系代数表达式 SELECT R. XM,R. XB,S. DWM EROM R, S WHERE R...
2005-01数据库原理试题.doc2005-01数据库原理试题.doc