关系代数讲解与例题
数据库关系代数运算例题
数据库关系代数运算例题摘要:1.关系代数简介2.数据库关系代数运算例题详解a.并运算b.交运算c.差运算d.笛卡尔积运算e.投影运算f.选择运算g.连接运算3.总结与展望正文:一、关系代数简介关系代数是一种对关系数据库进行操作的数学理论。
它利用基本的集合运算和关系运算对关系数据库中的数据进行查询、插入、更新和删除等操作。
关系代数的基本运算包括并、交、差、笛卡尔积、投影、选择和连接等。
二、数据库关系代数运算例题详解1.并运算例题1:给定关系R和S,求R并S的结果。
解:设R={1, 2, 3, 4}, S={3, 4, 5, 6},则R并S={1, 2, 3, 4, 5, 6}。
2.交运算例题2:给定关系R和S,求R交S的结果。
解:设R={1, 2, 3, 4}, S={3, 4, 5, 6},则R交S={3, 4}。
3.差运算例题3:给定关系R和S,求R差S的结果。
解:设R={1, 2, 3, 4}, S={3, 4, 5, 6},则R差S={1, 2}。
4.笛卡尔积运算例题4:给定关系R和S,求R与S的笛卡尔积。
解:设R={1, 2}, S={a, b},则R与S的笛卡尔积为{(1, a),(1, b),(2, a),(2, b)}。
5.投影运算例题5:给定关系T,求T中属性A的投影。
解:设T={(1, 2, 3),(2, 3, 4),(3, 4, 5)},则T中属性A的投影为{(1,3),(2,3),(3,5)}。
6.选择运算例题6:给定关系T,求满足条件“属性B大于2”的选择结果。
解:设T={(1, 2, 3),(2, 3, 4),(3, 4, 5)},则满足条件“属性B大于2”的选择结果为{(2,3,4),(3,4,5)}。
7.连接运算例题7:给定关系R和S,求R与S的连接结果。
解:设R={(1, 2),(3, 4)},S={(2, 3),(4, 5)},则R与S的连接结果为{(1,2,3),(3,4,5)}。
数据库关系代数除法讲解
数据库关系代数除法讲解 This manuscript was revised by JIEK MA on December 15th, 2012.【数据库原理】关系代数篇——除法讲解陈宇超编辑总结:除法运算的一般形式示意图如何计算R÷S呢,首先我们引进”象集”的概念,具体意义看下面的陈述即可理解关系R和关系S拥有共同的属性B、C , R÷S得到的属性值就是关系R包含而关系S不包含的属性,即A属性在R关系中A属性的值可以取{ a1,a2,a3,a4 }a1值对应的象集为 { (b1,c2) , (b2,c1) , (b2,c3) }a2值对应的象集为 { (b3,c7) , (b2,c3) }a3值对应的象集为 { (b4,c6) }a4值对应的象集为 { (b6,c6) }关系S在B、C上的投影为 { (b1,c2) , (b2,c1) , (b2,c3) }只有a1值对应的象集包含关系S的投影集,所以只有a1应该包含在A属性中为设有教学数据库有3个关系(以下四小问均用除法的思想解决)学生信息关系student(sno,sname,age,sex)学生选课关系 sc(sno,cno,score)学校课程关系 course(cno,cname)S003C00269S005C00277S005C00398有存在量词的谓词。
解决这类的除法问题一般采用双嵌套not exists来实现带全称量词的查询解决所谓forall的问题。
(1)检索所学课程包含了C002课程的学生学号解关系代数表达式:∏sno ( sc÷∏cno(σcno=’C002’ (course) )Sql语句从略(2)求至少选择了C001和C003两门课程的学生学号解关系代数表达式:∏sno ( sc÷∏cno(σcno=’C001’ or cno=’C003’(course) ) Sql语句select distinct sno from sc A where not exists(select*from course B where cno in('C002','C003')and not exists(select*from sc C where=and=))也可以采用自连接selectfrom (select*from sc where cno='C001')as s1,(select*from sc where cno='C003')as s2where=(3)求至少学习了学生S003所学课程的学生学号解关系代数表达式:∏sno ( sc÷∏cno(σsno=’S003’ (sc) )select distinct sno from sc A where not exists(select*from sc B where sno='S003'and not exists(select*from sc C where=and=))(4)求选择了全部课程的学生的学号解此例的等价自然语义是,输出这样的学号,不存在某门课程在他的选课记录里没有选这门课关系代数表达式:∏sno (sc÷∏cno(course) )Sql语句select distinct sno from sc A where not exists(select cno from course B where not exists(select*from sc C where=and=))(5)求选择了全部课程的学生的学号和姓名解关系代数表达式:∏sno,sname((student∞sc)÷∏cno(course) )Sql语句select sno,sname from student A where not exists(select cno from course B where not exists(select*from sc C where=and=))以上小问用group by结合count语句也是可以实现的,也更好理解一些。
数据库关系代数运算例题
数据库关系代数运算例题
下面是一个关系代数运算的例题:
已知有两个关系表格R和S,分别包含以下字段:
R(A, B, C)
S(C, D)
问题1: 求R和S的笛卡尔积。
解答1: 笛卡尔积可以利用关系代数的乘积运算来表示。
乘积运算使用 ×符号表示,即 R × S。
问题2: 求R和S的并集。
解答2: 并集可以利用关系代数的并运算来表示。
并运算使用∪符号表示,即 R ∪ S。
问题3: 求R和S的交集。
解答3: 交集可以利用关系代数的交运算来表示。
交运算使用∩ 符号表示,即R ∩ S。
问题4: 求R和S的差集。
解答4: 差集可以利用关系代数的差运算来表示。
差运算使用 - 符号表示,即 R - S。
问题5: 求R关于字段A的投影。
解答5: 投影可以利用关系代数的投影运算来表示。
投影运算使用π 符号表示,即π(A)(R)。
问题6: 求R关于字段A的选择条件为A=1的选择。
解答6: 选择可以利用关系代数的选择运算来表示。
选择运算使用σ 符号表示,即σ(A=1)(R)。
问题7: 求R和S的连接条件为R.C=S.C的自然连接。
解答7: 自然连接可以利用关系代数的连接运算来表示。
连接运算使用⨝符号表示,并在连接条件上加上等式。
即 R ⨝(R.C=S.C) S。
第3章 关系代数
σF(R)={t | t∈R∧ F(t)=‘真’}
其中F表示选择条件,它是一个逻辑表达式,取逻辑 值‘真’或‘假’。 选择运算实际上是从关系R中选取 使逻辑表达式F为真的元组。
第2章 关系代数
S
学号 S# S1 S2
Байду номын сангаас
姓名 SN A B
系名 SD CS CS
年龄 SA 20 21
SC
学号S#
S1
S1 S1 S1 S2 S2 S2
C5
C2 C3
D
C B
C3
C4 C5
I
J K
C1
C2 C4
S5
S6
C5
C5
B
A
第2章 关系代数
例1:求计算机科学系 CS的学生。
σSD=‘CS’( S ) 或 σ3=‘CS’( S )
S# S1 S2 S6 SN A B F SD CS CS CS SA 20 21 22
例2:求年龄大于或等于20的元组。
第2章 关系代数
例:设关系R, S, R÷S的结果分别为下图 在关系R中,A可以取四个值{a1, a2, a3, a4}。其中: a1的象集为{(b1,c2), (b2,c3), (b2,c1)} a2的象集为{(b3,c7), (b2,c3)} a3的象集为{(b4,c6)} a4的象集为{(b6,c6)} S在(B,C)上的投影为{(b1,c2), (b2,c3), (b2,c1)} 显然只有a1的象集(B,C)a1包含S在(B,C)属性组上的投影,所以 R÷S={a1}
tr ts表示由两元组tr和ts前后有序连接而成的一个元 组。 任取元组tr和ts,当且仅当tr属于R且ts属于S时,tr和ts的 有序连接即为R×S的一个元组。
代数的概念例题及解析
代数的概念例题及解析
代数学是数学的一个重要分支,其最重要的作用就是用符号表示数字和运算,用不同的符号表示数字之间的关系,并且使用特定的运算规律来求解测量和关系的问题。
下面我们来看看涉及到代数的一些简单例题,并且讲解如何解决它们:
例题一:
已知x=2y+1,求x的值。
解:
根据给出的条件,我们可以得到x=2y+1。
因此,求x的值,可以将y的值代入x的公式中,得到x=2 y + 1,即得到x的值。
例题二:
求2x-3y=4的解。
解:
根据题干,我们可以得到2x-3y=4,此时可将x的值代入解方程,得到y的值,即y=2×4-3x,此时将y的值代入解方程中求得x 的值,即x=(2×4-3y)/2,故2x-3y=4的解为x=(2×4-3y)/2,
y=2×4-3x。
例题三:
已知x + y = 7,2x - 3y值为多少?
解:
本题可以根据已知条件和代数运算法则,解出x和y的值,即x + y = 7,根据代数运算法则得2x - 3y = x + 2y - 3y = x - y
= 7 - y,即2x - 3y = 7 - y,故2x - 3y值为7-y。
以上就是涉及到代数的三个简单例题,并且讲解了如何解决它们。
从上述例题中,我们可以看出,代数的应用非常广泛,它可以帮助我们快速的解决复杂的数学问题,并且可以使我们的分析更加精确。
总之,代数学是数学的一个重要分支,它的应用非常广泛,不仅可以用来解决复杂的数学问题,而且可以让我们的分析更加精确。
此外,掌握代数知识对于学习统计分析、物理和化学等有着重要的意义。
数据库关系代数运算例题
数据库关系代数运算例题
摘要:
一、数据库关系代数简介
1.关系代数定义
2.关系代数的基本操作
二、数据库关系代数运算例题解析
1.选择运算
2.投影运算
3.连接运算
4.除运算
5.关系代数的其他运算
三、例题解答与总结
正文:
一、数据库关系代数简介
关系代数是数据库中的一个重要概念,它是一种基于数学的理论,用于描述和操作关系数据库。
关系代数定义了一组操作,包括选择、投影、连接、除等,这些操作可以用来查询和修改数据库中的数据。
二、数据库关系代数运算例题解析
1.选择运算
选择运算是从关系中选取满足特定条件的元组。
例如,给定一个学生表,包括学生ID、姓名、年龄等字段,我们可以通过选择运算选取年龄大于等于
18岁的学生。
2.投影运算
投影运算是从关系中选取特定的字段。
例如,给定一个学生表,我们可以通过投影运算选取学生的姓名和年龄。
3.连接运算
连接运算是将两个关系根据某个条件进行合并。
例如,给定一个学生表和一个课程表,我们可以通过连接运算选取学生选修的课程。
4.除运算
除运算是将一个关系分解为两个或多个关系。
例如,给定一个学生表,我们可以通过除运算将学生表分解为男生表和女生表。
5.关系代数的其他运算
除了上述四种基本运算,关系代数还包括并、差、笛卡尔积等运算。
三、例题解答与总结
通过关系代数的运算,我们可以方便地对数据库中的数据进行查询和修改。
在实际应用中,我们需要根据具体的需求选择合适的运算方法。
关系代数例题讲解
• 商品: GOODS(G#,GNAME,PRICE), 其属 性是商品编号、商品名称和单价
• 现检索仓库名称为“莘庄”的仓库里存储的 商品的编号和名称。试写出相应的关系代数 表达式
• ∏G#,GNAME(Goods∞SG∞ σ SNAME=‘莘庄’ (Store))
2021/6/16
15
• 已知:一组关系模式:
2021/6/16
17
• [例]设教学数据库中有3个关系: 学生关系 S(SNO,SNAME,AGE,SEX) 学习关系 SC(SNO,CNO,GRADE) 课程关系 C(CNO,CNAME,TEACHER)
• 下面用关系代数表达式表达每个查询语 句。
2021/6/16
18
• (1) 检索学习课程号为C2的学生学号与成绩。 •
• 试指出每个表的主键和外键。在上面两个基本表 中,写出下列查询的关系代数表达式:
• 检索每个部门经理的工资,要求显示其部门编号、 部门名称、经理工号、经理姓名和经理工资
2021/6/16
12
• 设数据库中有两个基本表:
• 职工表 EMP(E#,ENAME,AGE,SALARY,D#), 其属性分别表示职工工号、姓名、年龄、工资和 工作部门的编号。
2021/6/16
6
5. 检索wang同学不学课程的课程号
6. 检索至少选修两门课的学生学号
7. 检索全部学生都选修的课程的课程号和课程 名
8. 检索选修课程包含LIU老师所教授课程的学 生学号
2021/6/16
7
5. 检索wang同学不学课程的课程号
∏CNO(C)-∏CNO(σSNAME=‘WANG’(S)∞SC) 6. 检索至少选修两门课的学生学号
关系代数讲解与例题
关系代数关系代数是关系数据库系统查询语言的理论基础。
关系代数的9种操作:并、交、差、乘、选择、投影、联接、除、自然联接运算。
五个基本操作:选择(π) 并(∪) 差(-) 笛卡尔积(×)投影(σ) 选择四个组合操作:交(∩) 联接(等值联接)自然联接(RS) 除法(÷) 关系代数表达式:由关系代数运算经有限次复合而成的式子称为关系代数表达式。
这种表达式的运算结果仍然是一个关系。
可以用关系代数表达式表示对数据库的查询和更新操作。
关系代数(演算)要求掌握各种语句的应用,多做书中的例题可以帮助自己熟能生巧。
关系代数表达式举例用关系代数表示数据查询的典型例子[例]设教学数据库中有3个关系:学生关系S(SNO,SNAME,AGE,SEX) 学习关系SC(SNO,CNO,GRADE) 课程关系C(CNO,CNAME,TEACHER) 下面用关系代数表达式表达每个查询语句。
(1) 检索学习课程号为C2的学生学号与成绩。
πSNO,GRADE(σCNO='C2'(SC)) (2) 检索学习课程号为C2的学生学号与姓名πSNO,SNAME(σCNO='C2'(SSC)) 由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。
此查询亦可等价地写成:πSNO,SNAME(S)(πSNO(σCNO='C2'(SC)))这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。
这个表达式比前一个表达式优化,执行起来要省时间,省空间。
(3)检索选修课程名为MATHS的学生学号与姓名。
πSNO,SANME(σCNAME='MATHS'(SSCC)) (4)检索选修课程号为C2或C4的学生学号。
πSNO(σCNO='C2'∨CNO='C4'(SC)) (5)检索至少选修课程号为C2或C4的学生学号。
关系代数习题讲解
订购单 供应商号 ( 地址"北京" (供应商))
如果改成“和北京的某个供应商有业务联系的职工”, 那么就可以写成
地址"北京" (供应商) 订购单
(7)检索至少和职工E1、E4、E7都有联系 的供应商的名称。
供应商名 (订购单 (" E1", " E 4", " E7" ) 供应商)
(3)检索北京的供应商的名称。
供应商名 ( 地址"北京" (供应商))
(4)检索目前与职工E6有业务联系的供应商 的名称。
供应商名 ( 职工号 "E6" (订购单) 供应商)
(5)检索所有职工的工资都大于1220元的仓 库所在的城市。
城市 (仓库) 城市 ( 工资"1220" (职工) 仓库)
用关系代数完成检索:
(1)检索在仓库H2工作的职工的工资。
职工号,工资 ( 仓库号"WH 2" (职工))
在检索职工的工资时,应选取职工号和工 资两个属性。
(2) 检索在上海工作的职工的工资。
职工号,工资 ( 城市"上海" (仓库) 职工)
解析: 先在仓库关系中找到上海的仓库,然后与 职工关系作等值连接,得到一个新的关系 ,再从中选出职工号与工资。
注意:“所有职工的工资都大于1220的仓库”与 “含有工资大于1220的职工的仓库”不同。如果用:
城市 ( 工资"1220" (职工) 仓库)
来求解,将得的到错误的结果。
(6)检索和北京的所有供应商都有业务联系 的职工的工资。
职工号,工资 (职工 (订购单 供应商号 ( 地址"北京" (供应商))))
关系代数习题与详解
1. 先做习题2(1~3题)1.(1)简述关系代数中并、交、差、选择、投影、连接、除的定义。
答:并:关系R与关系S的并由属于R或属于S的所有元素组成。
差:关系R与关系S的差由属于R而不属于S的所有元素组成。
交:关系R与关系S的交即属于R又属于S的所有元素组成。
选择:选择是从行的角度进行的运算,选出满足条件的那些记录构成原关系的一个子集。
投影:投影是从列的角度进行运算,所得到属性列个数通常比原关系少,或者属性列的排列顺序不同。
连接:两个关系中的记录按一定条件横向结合,生成一个新的关系。
除:R中的属性包含S中的属性,R中的有些属性不出现在S中。
等值连接:当算术比较值为“=”时,是一种特殊的也是最为常用的θ连接,等值连接是从关系R与关系S的广义笛卡尔积中选取i,j属性值相等的元组。
自然连接是一种特殊的等值连接,它要求二个关系中进行比较分量i,j必须是相同属性组,并且在结果中去掉了重复的属性列。
2. 设教学库中有三个关系:学生关系S(S#,SNAME,AGE,SEX)学习关系SC(S#,C#,GRADE)课程关系C(C#,CNAME,TEACHER)请用关系代数表达式表达各个查询语句1.检索学习课程号为C2的学生学号与成绩。
答:∏s#,grade(σc=c2(SC×C))2.检索学习课程号为C2的学生学号与姓名。
答:∏s#,sname(σc=c2(S×C));3,检索选修课程答:∏c选修(C3已知R关系与S关系则R÷(πAl,A2(σA1<A4(S)))的值是什么?答:4. 已知R关系与S关系则关系代数表达式R÷S的运算结果是什么?答:5. 根据下列各图写出相应的结果图1:答:图2:答:图3:答:图4:答:图5:答:图6:答:图7:求R连接S,条件时R.B=S.A 答:求R与S的自然连接答:。
关系代数差运算详细讲解
关系代数差运算详细讲解关系代数差运算,听上去就像数学家们在茶会上讨论的深奥话题,其实说白了就是找出一个集合里,另一个集合没有的元素。
想象一下,你的朋友邀请你去派对,你准备了好久,结果到了那里,发现大家都穿了一模一样的衣服,哎呀,心里那个尴尬啊!这个时候你就希望能找到那些不在那种“人海”里的朋友,那就能轻松得多。
差运算就是这么一回事,它帮助你从一个集合中“撇掉”另一个集合里的元素。
举个简单的例子吧,假如你有一个水果篮,里面装着苹果、香蕉和橙子。
然后,你的朋友从这个篮子里拿走了两个香蕉,哎呀,真是太不讲义气了。
结果你要找出篮子里剩下的水果,差运算就是帮你清晰地告诉你,篮子里还剩下苹果和橙子。
看吧,简单明了!没啥复杂的,实际上这就像是在做一次“水果清理大行动”,只不过我们是用数学的方法来搞定而已。
说到差运算,很多小伙伴们可能会觉得它跟减法差不多,其实可不是那么回事哦。
减法是数字的事情,比如说你有五块钱,买了一杯奶茶花了四块钱,结果你就剩下一块钱,这个大家都能理解。
但差运算可不仅仅是简单的数值,它是在集合之间“斗智斗勇”,看看哪个集合的元素可以被剔除,哪个可以留下,像极了在选择电影时,想看看自己最想看的那部!差运算到底怎么用呢?好比你在班里有一群朋友,咱们把他们看作一个集合,后来你发现有一部分人没来,心里那种“哎,我只想跟这些人玩”的感觉是不是很强烈?这时候你就可以用差运算,把到场的朋友集合和全部朋友集合进行对比,看看那些“缺席”的朋友,让你心里更加踏实。
你会发现,差运算就像是一位细心的侦探,总能帮助你找出“失踪”的元素。
有些朋友可能会问,差运算在实际生活中有什么用?哦,别说!这个用处可大了。
比如说,你在整理音乐库,想找出那些你已经下载但没听过的歌曲。
只要把“已下载歌曲”的集合和“听过的歌曲”集合进行一次差运算,就能轻松找出那些“孤独的旋律”,让你的音乐之旅更加丰富多彩。
想想看,这种感觉是不是很棒?说到这里,可能还有小伙伴对如何表示差运算有些疑惑。
关系代数除法运算题
关系代数除法运算题关系代数是一种用于描述数据之间关系的数学工具,它的基本操作包括选择、投影、联接和除法等。
本文将讨论关系代数中的除法运算,并给出一些相关的例题。
一、除法运算的定义关系代数中的除法运算是指,对于两个关系R和S,求出一个关系Q,使得R除以S得到Q。
具体地说,如果R和S的属性集分别为R(A1, A2, …, An)和S(B1, B2, …, Bm),那么Q的属性集为(A1, A2, …, An-m),且Q中的每个元组t都满足以下条件:1. t的属性A1, A2, …, An-m在R中出现过;2. 对于R中的每个元组r,如果它的属性A1, A2, …, An-m与t相同,那么在S中必须存在一个元组s,使得s的属性B1, B2, …, Bm与r的属性相同。
换句话说,Q中的每个元组都是R中的一个子集,且这个子集在S中都有对应的元组。
这个定义可能比较抽象,下面我们来看一个具体的例子。
二、除法运算的例题假设有两个关系R和S,它们的属性集分别为:R(A, B, C)S(B, C)其中,R中的元组为:(1, 2, 3)(1, 2, 4)(2, 3, 4)(3, 4, 5)S中的元组为:(2, 3)(2, 4)(3, 4)现在我们要求R除以S得到的关系Q是什么。
按照除法运算的定义,我们需要找到一个属性集为(A)的关系Q,使得Q中的每个元组都是R中的一个子集,且在S中都有对应的元组。
我们可以按照以下步骤来求解:1. 找到R中所有可能的A属性值,即{1, 2, 3};2. 对于每个A属性值,找到R中所有对应的元组,即:(1, 2, 3)(1, 2, 4)(2, 3, 4)(3, 4, 5)3. 对于每个元组,检查它在S中是否有对应的元组。
例如,对于(1, 2, 3),它在S中对应的元组是(2, 3),因此我们可以将(1)作为Q中的一个元组;4. 重复步骤3,直到所有元组都被检查完毕。
经过上述步骤,我们得到的关系Q为:Q(A)123这个Q关系的含义是,R中所有A属性值为1、2、3的元组,在S中都有对应的元组。
关系代数例题讲解
• 检索每个部门经理的工资,要求显示其部门编号、 部门名称、经理工号、经理姓名和经理工资
2021/6/16
12
• 设数据库中有两个基本表:
• 职工表 EMP(E#,ENAME,AGE,SALARY,D#), 其属性分别表示职工工号、姓名、年龄、工资和 工作部门的编号。
2021/6/16
13
• 设某商业集团为仓库存储商品设计了三个基 本表:
• 仓库: STORE(S#,SNAME,SADDR),其属 性是仓库编号、仓库名称和地址。
• 存储: SG(S#,G#,QUANTITY),其属性是 仓库编号、商品编号和数量。
• 商品: GOODS(G#,GNAME,PRICE), 其属 性是商品编号、商品名称和单价
• SPJ(SNO,PNO,JNO,QTY)供应商编号、零件编号、 项目编号、供应数量(某供应商供应某种零件给 某工程项目的数量)
2021/6/16
9
要求用关系代数
• 供应工程J1零件的供应商号码SNO • 供应工程J1零件P1的供应商号码SNO • 供应工程J1零件为红色的供应商号码SNO • 没有使用天津供应商生产的红色零件的工
2021/6/16
17
• [例]设教学数据库中有3个关系: 学生关系 S(SNO,SNAME,AGE,SEX) 学习关系 SC(SNO,CNO,GRADE) 课程关系 C(CNO,CNAME,TEACHER)
• 下面用关系代数表达式表达每个查询语 句。
2021/6/16
18
• (1) 检索学习课程号为C2的学生学号与成绩。 •
• 部门(部门号,部门名称,电话号码)
关系代数例题讲解
• 现有如下关系: • 职工(职工号,姓名,性别,职务,家庭地址, 部门编号) • 部门(部门编号,部门名称,地址,电话) • 保健(保健卡编号,职工号,检查身体日期, 健康状况) 1. 用关系代数表达式写出,查找所有女科长的 姓名和家庭地址; 2. 用关系代数表达式写出,查找“办公室”的 科长姓名和家庭地址; 3. 用关系代数表达式写出,查找“财务科”中 健康状况为“良好”的职工姓名和家庭地址。
• (7)检索学习全部课程的学生姓名。 编写这个查询语句的关系代数过程如下: (a) 学生选课情况可用π SNO,CNO (SC)表示; (b) 全部课程可用π CNO (C)表示;
• (c) 学了全部课程的学生学号可用除法操作表示。 操作结果为学号SNO的集合,该集合中每个 学生(对应SNO)与C中任一门课程号CNO配在一 起都在π SCO,CNO(SC) 中出现(即SC中出 现),所以结果中每个学生都学了全部的课程 (这是"除法"操作的含义): π SNO,CNO (SC) ÷ π CNO (C)
5. 检索wang同学不学课程的课程号 ∏CNO(C)-∏CNO(σSNAME=‘WANG’(S)∞SC) 6. 检索至少选修两门课的学生学号 ∏1(σ1=4 ∧ 2!=5(SC × SC)) 7. 检索全部学生都选修的课程的课程号和课程 名 ∏CNO,CNAME,SNO(C ∞SC) ÷ ∏SNO(S) 8. 检索选修课程包含LIU老师所教授课程的学 生学号 ∏CNO,SNO(SC) ÷ ∏CNO(σTNAME=‘LIU’(C))
• 2、查询至少选修了两门课程的学生学号。
• π Sno (σ [1]=[4] ∧ [2]≠[5] (SC×SC))
• 3、查询选修了1号课程的学生姓名。
关系代数例题讲解
第七页,共33页
要求用关系代数
• 供应工程J1零件的供应商号码SNO • 供应工程J1零件P1的供应商号码SNO • 供应工程J1零件为红色的供应商号码SNO • 没有使用天津供应商生产的红色零件的工程
学生(对应SNO)与C中任一门课程号CNO配在一起 都在π SCO,CNO(SC) 中出现(即SC中出现),所 以结果中每个学生都学了全部的课程(这是"除法" 操作的含义):
π SNO,CNO (SC) ÷ π CNO (C)
第二十二页,共33页
• (d) 从SNO求学生姓名SNAME,可以用自 然连结和投影操作组合而成: π SNAME (S (π SNO,CNO (SC) ÷π CNO (C))) 这就是最后得到的关系代数表达式。
• π Sno (σ [1]=[4] ∧ [2]≠[5] (SC×SC))
第二十八页,共33页
• 3、查询选修了1号课程的学生姓名。
• π Sname (σ Cno=’1’ (S SC))
第二十九页,共33页
• 4、查询没有选修数据库课程的学生姓名。 • π Sname (S)-π Sname (σ Cname=’数据库’ ( S SC
∞SPJ ∞(σColor=’红’ (P)) 5. ∏JNO,PNO(SPJ)
÷∏PNO(σSNO=’S1’(SPJ))
第九页,共33页
• 设数据库中有两个基本表: • 职工表 EMP(E#,ENAME,AGE,SALARY,D#),
其属性分别表示职工工号、姓名、年龄、工资和 工作部门的编号。 • 部门表 DEPT(D#,DNAME,MGR#),其属性分别 表示部门编号、部门名称和部门经理的职工工号。 • 试指出每个表的主键和外键。在上面两个基本表 中,写出下列查询的关系代数表达式: • 检索每个部门经理的工资,要求显示其部门编号、 部门名称、经理工号、经理姓名和经理工资 • ∏D#,DNAME,MGR#,ENAME,SALARY(σ E#=MGR# (部门∞职工))
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关系代数
关系代数是关系数据库系统查询语言的理论基础。
关系代数的9种操作:
并、交、差、乘、选择、投影、联接、除、自然联接运算。
五个基本操作:
并(∪) 差(-) 笛卡尔积(×)投影(σ) 选择(π)
四个组合操作:
交(∩) 联接(等值联接)自然联接(RS) 除法(÷)
关系代数表达式:
由关系代数运算经有限次复合而成的式子称为关系代数表达式。
这种表达式的运算结果仍然是一个关系。
可以用关系代数表达式表示对数据库的查询和更新操作。
关系代数(演算)要求掌握各种语句的应用,多做书中的例题可以帮助自己熟能生巧。
关系代数表达式举例
用关系代数表示数据查询的典型例子
[例]设教学数据库中有3个关系:
学生关系S(SNO,SNAME,AGE,SEX)
学习关系SC(SNO,CNO,GRADE)
课程关系C(CNO,CNAME,TEACHER)
下面用关系代数表达式表达每个查询语句。
(1) 检索学习课程号为C2的学生学号与成绩。
πSNO,GRADE(σCNO='C2'(SC))
(2) 检索学习课程号为C2的学生学号与姓名
πSNO,SNAME(σCNO='C2'(SSC))
由于这个查询涉及到两个关系S和SC,因此先对这两个关系进行自然连接,同一位学生的有关的信息,然后再执行选择投影操作。
此查询亦可等价地写成:
πSNO,SNAME(S)(πSNO(σCNO='C2'(SC)))
这个表达式中自然连接的右分量为"学了C2课的学生学号的集合"。
这个表达式比前一个表达式优化,执行起来要省时间,省空间。
(3)检索选修课程名为MATHS的学生学号与姓名。
πSNO,SANME(σCNAME='MATHS'(SSCC))
(4)检索选修课程号为C2或C4的学生学号。
πSNO(σCNO='C2'∨CNO='C4'(SC))
(5)检索至少选修课程号为C2或C4的学生学号。
π1(σ1=4∧2='C2'∧5='C4'(SC×SC))
这里(SC×SC)表示关系SC自身相乘的乘积操作,其中数字1,2,4,5都为它的结果
关系中的属性序号。
比较这一题与上一题的差别。
(6)检索不学C2课的学生姓名与年龄。
πSNAME,AGE(S)-πSNAME,AGE(σCNO='C2'(SSC))
这个表达式用了差运算,差运算的左分量为"全体学生的姓名和年龄",右分量为"学了C2课的学生姓名与年龄"。
(7)检索学习全部课程的学生姓名。
编写这个查询语句的关系代数过程如下:
(a) 学生选课情况可用πSNO,CNO(SC)表示;
(b) 全部课程可用πCNO(C)表示;
(c) 学了全部课程的学生学号可用除法操作表示。
操作结果为学号SNO的集合,该集合中每个学生(对应SNO)与C中任一门课程号CNO 配在一起都在πSCO,CNO(SC)中出现(即SC中出现),所以结果中每个学生都学了全部的课程(这是"除法"操作的含义):
πSNO,CNO(SC)÷πCNO(C)
(d) 从SNO求学生姓名SNAME,可以用自然连结和投影操作组合而成:
πSNAME(S (πSNO,CNO(SC)÷πCNO(C)))
这就是最后得到的关系代数表达式。
(8)检索所学课程包含S3所学课程的学生学号。
注意:学生S3可能学多门课程,所以要用到除法操作来表达此查询语句。
学生选课情况可用操作πSNO,CNO(SC)表示;
所学课程包含学生S3所学课程的学生学号,可以用除法操作求得:
πSNO,CNO(SC)÷πCNO(σSNO='S3'(SC))。