关系代数习题补遗

学习目标:

  • 1. 关系代数表示查询的技巧总结
  • 2. 主属性和非主属性
  • 3. 外连接,左连接和右连接
  • 4. 关系的完备性概念
  • 5. 关系数据语言的特点及分类

在完成关系数据库的习题和补充习题时,发现上一篇知识总结虽然能完成大部分题目但还是有些遗漏之处,这篇进行补遗。麻烦看官老爷点赞关注支持一下动力猿吧!

学习内容:

1. 关系代数表示查询的技巧总结

给几个关系表然后用关系代数表示查询是必考的内容,正常人做题的时候肯定不会在心里默念8种5种运算是什么,都是看到什么想什么。所谓的技巧就是做多了题看要求就知道八成用什么操作。

上来肯定要写待求属性的投影 π \pi π这是雷打不动的,因为题目问的肯定是“满足xx要求的供应商号”、“······的教师姓名”等单独的列属性。

接下来就看要求,我们都知道这个要求五花八门,看似轻描淡写,实则绝对不会让你只用一张表的信息就轻松解决的。如果一定要分类,我把这个要求分为特殊字和自然连接,其中自然连接要求是最常见的常规操作,有时也渗透在特殊字里。时间关系,我先解释这两大类型的要求,最后给课本和习题解析上的例子大家反复琢磨下面的话我相信会有收获。

自然连接太过常见,那就是:
要求没有特殊字(比如“供应给工程J1红色零件的供应商号”),但要求的属性和待求属性不在一张表里。自然连接最大的作用就是把不同的表联系起来。仔细琢磨下面的话:先写个待求属性的投影 π \pi π()。你下一步用到哪个表(先用 σ \sigma σ完成题目要求的条件筛选)就在括号里连接上哪个表(我一般都用投影,投影的目的是仅保留绝对有用的信息来减小计算量,能投影的列仅包括待求属性还有与下张表连接所需的公共属性)。当然最粗暴的做法就是括号里连接的全是表名,这样也对就是计算量大点。

例如第五版课本P72页 6(3)求供应工程J1零件为红色的供应商号码SNO

特殊字是什么呢,我看题目一般有这三类:
(1)“不在”和“没有”:应该用差 —— 操作,比如查询“不在计算机系工作的教师代码”、“没有使用红色零件的工程号”。应当先获取“所有的教师代码”(这个直接在教师表投影就行),然后减去“在计算机系工作的教师代码“”(这就是个自然连接要求)。

例如第五版课本P72页 6(4)求没有使用天津供应商生产的红色零件的工程号JNO

(2)“至少”、“done全部”:应该用除 ÷ \div ÷操作,如至少选修了物理和英语的学生名/选修了全部课程的学生。除数很简单就是要求的属性投影,比如全部的课程名的投影。被除数就是在除数的基础上增加一列待求属性的投影比如学生姓名和课程名的投影。

例如第五版课本P72页 6(5)求至少用了供应商S1所提供的全部零件的工程号JNO

(3)“比所有都高/低的”:这个用关系演算语言里的SQL聚合函数非常容易,但是关系代数实现得绕一下,需要先换名(关系R换名出新的R’),再非等值连接(R和R’非等值连接投影出不符合“最”的结果),最后作差得到符合“最”的结果。特殊字只有这个是比较新鲜的。

例如第五版习题解析与实验指导P26页 5.4

2.主属性和非主属性

这里是个坑,虽然带个“主”字,但主属性和非主属性不是针对主码的而是针对所有候选码的。候选码中出现过的属性都叫主属性,非主属性就是排除所有候选码里的属性(主属性)最后剩下的属性。

3. 外连接,左连接和右连接

(1)这三个新概念都是对自然连接结果的补充,我们以图为例形象地讲解。通过上篇我们知道自然连接的过程要求关系R和S参与连接的元组公共属性是相同的,即必须配上对如下图。

在这里插入图片描述

(2)外连接:觉得自然连接这人太苛刻了,因为公共属性列B中很可能有配不上对的值(该值仅在一个关系里出现,比如b4出自R,而b5出自S),你不能不管人家呀!于是这样吧,在自然连接的结果上进行补充,配不上对的B值出自哪个关系我就把哪个关系的对应元组完整写上,另一个关系既然没有元组配对就直接写NULL了。

在这里插入图片描述

(3)左连接:外连接的一种(所以又叫左外连接),俺只和左边关系R亲,只考虑R中配不上对的B值补充连接结果。
在这里插入图片描述

(4)右连接:外连接的一种(所以又叫右外连接),俺只和右边关系S亲,只考虑S中配不上对的B值补充连接结果。
在这里插入图片描述

4. 关系完备性的概念

关系完备性是描述查询语言的概念。如果一个查询语言能够表示关系代数可以表示的所有查询(说明其表达能力很完备啊),我们就称这个查询语言具有关系完备性。
值得注意的是关系演算是具有关系完备性的。

5. 关系数据语言的特点及分类

了解即可,关系数据语言可以分为三类:关系代数语言、关系演算语言、具有关系代数和关系演算双重特点的语言。

在这里插入图片描述


学习产出:

第二章关系数据库能考的知识基本上总结完了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值