看得懂的——数据库中的“除”操作

通过一个例子来解释数据库中的"除"操作

R➗S其实就是判断关系R中X各个值的象集Y是否包含关系S中属性Y的所有值

求解步骤

第一步

找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影(即将Y列取出);所得结果如下:

第二步

被除关系R中与S中不相同的属性列是X,关系R在属性X上上做取消重复值的投影为(X1,X2);

第三步

求关系R中X属性对应的象集Y

"象集":给定一个集合A到B的映射,且a属于A,b属于B.如果元素a和元素b对应,那么,我们把元素b叫做元素a的象,元素a叫做元素b的原象. 所以所有的b构成的集合叫做象集. 也就是a在对应法则f作用下产生的b的集合,叫做象集.

根据关系R的记录,可以得到与X1值有关的记录和与X2有关的记录,如下图所示:

第四步:判断包含关系

R➗S其实就是判断关系R中X各个值的象集Y是否包含关系S中属性Y的所有值,对比即可发现:

X1的象集只有Y1,不能包含关系S中属性Y的所有值,所以排除掉X1;

X2的象集包含了关系S中属性Y的所有值,所以R➗S的最终结果就是X2.

例题实战

现在我们来做一道题来练习一下

1、求S与R中的重复属性------A、B,并在S中对其做投影,得到A:c,B:3;

2、找出R中有但是S中没有的字段------C,关系R在字段A上做取消重复值的投影{2,1};

3、 求关系R中C字段对应的象集

C A B

2 a 1

1 b 2

1 c 3

4、判断包含关系:判断R中C的各个值的象集是否包含Y中A、B的所有值

对比发现只有C = 1的时候满足条件

所以R/S = 1,此题选择C项,

"并把正确答案涂在答题卡上(doge)"

相关推荐
前方一片光明1 小时前
SQL SERVER——生成sql:删除所有log表中,user_name是某用户的数据
数据库·sql·oracle
Gauss松鼠会2 小时前
【GaussDB】在duckdb中查询GaussDB的数据
数据库·sql·database·gaussdb
虹科网络安全2 小时前
艾体宝洞察 | Redis vs ElastiCache:哪个更具成本效益?
数据库·redis·缓存
自在极意功。2 小时前
MyBatis 动态 SQL 详解:从基础到进阶实战
java·数据库·mybatis·动态sql
老邓计算机毕设2 小时前
SSM校园订餐系统7z0dm(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·菜品管理系统·ssm 框架·ssm 框架开发·校园线上订餐平台
sxlishaobin3 小时前
MySQL- explain
数据库·mysql
曹牧3 小时前
Oracle:判断一个字符串出现次数
数据库·oracle
源代码•宸3 小时前
Leetcode—620. 有趣的电影&&Q3. 有趣的电影【简单】
数据库·后端·mysql·算法·leetcode·职场和发展
快乐肚皮3 小时前
MySQL递归CTE
java·数据库·mysql·递归表达式
2301_800256114 小时前
地理空间数据库中的CPU 和 I/O 开销
数据库·算法·oracle