关系代数除法

文章详细介绍了关系代数中的除法运算,包括定义、求解步骤和在SQL中的实现。通过示例解释了如何使用除法运算找到‘完成’与‘DB项目’的关系,最终得出‘完成÷DB项目’的结果,即学生完成了但不在DB项目中的任务。
摘要由CSDN通过智能技术生成

关系代数的"除法"

1. 除法运算的定义:

给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算可以得到一个新的关系P(X),P是R中满足下列条件的元组在X 属性列上的投影: 元组在X上的分量值x的像集Y(x)包含S在Y上的投影的集合。

2.求解步骤过程:

第一步:找出关系R和关系S中相同的属性,即Y属性。在关系S中对Y做投影(即将Y列取出);

第二步:被除关系R中与S中不相同的属性列是X,关系R在属性X上做取消重复值的投影;

第三步:求关系R中X属性对应的像集Y;

第四步:判断包含关系,R÷S其实就是判断关系R中X各个值的像集Y是否包含关系S中属性Y的所有值。

3.SQL中除法运算的实现

R(X,Y)÷S(Y,Z)的运算用结构化语言SQL 语句可表达为下列形式:

select distinct R.X from R R1 where not exists ( select S.Y from S where not exists ( select * from R R2 where R2.X=R1.X and R2.Y=S.Y ) )

4.例如下面的“完成”和“DB项目”和它们的除法:

完成÷DB项目

下面说说我自己的理解,如何通过关系代数的除法,得到最后的完成÷DB项目

完成(Student,Task)=R(X,Y)
DB项目(Task)=S(Y)

第一步:排除R(X,Y)中Y列中不包含S(Y)的行,得到:

StudentTask
FredDatabase1
FredDatabase2
EugeneDatabase1
SaraDatabase1
SaraDatabase2

第二步:找出存在R(X,Y)中没有S(Y)中的项,即未完全包含S(Y)中的列元素,得到:

StudentTask
EugeneDatabase1

第三步:排除R(X,Y)中,第二步中得到的行.即:

StudentTask
FredDatabase1
FredDatabase2
SaraDatabase1
SaraDatabase2

第四步:得到R(X).即:

Student
Fred
Fred
Sara
Sara

第五步:消除重复.即:

Student
Fred
Sara

即得到最后结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xwhking

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值