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

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

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)"

相关推荐
月光水岸New22 分钟前
Ubuntu 中建的mysql数据库使用Navicat for MySQL连接不上
数据库·mysql·ubuntu
狄加山67523 分钟前
数据库基础1
数据库
我爱松子鱼27 分钟前
mysql之规则优化器RBO
数据库·mysql
chengooooooo1 小时前
苍穹外卖day8 地址上传 用户下单 订单支付
java·服务器·数据库
Rverdoser2 小时前
【SQL】多表查询案例
数据库·sql
Galeoto2 小时前
how to export a table in sqlite, and import into another
数据库·sqlite
人间打气筒(Ada)2 小时前
MySQL主从架构
服务器·数据库·mysql
leegong231112 小时前
学习PostgreSQL专家认证
数据库·学习·postgresql
喝醉酒的小白2 小时前
PostgreSQL:更新字段慢
数据库·postgresql
敲敲敲-敲代码2 小时前
【SQL实验】触发器
数据库·笔记·sql