首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用关系代数求元素的真子集

用关系代数求元素的真子集
EN

Stack Overflow用户
提问于 2019-12-30 12:01:41
回答 1查看 323关注 0票数 1

我有一个名为“考试”的表格,由学生和考试组成,我需要找到所有参加A级考试的学生。

数据样本可以是:

代码语言:javascript
复制
student exam
A       1
A       2
B       1
B       3
C       1
C       2
D       1

结果应该是

代码语言:javascript
复制
student
D       

因为只有D参加了A考试的适当子集,所以B没有出现在结果中,因为他参加了A没有参加的考试

到目前为止我想出的是:

参加A学生参加的所有考试

代码语言:javascript
复制
examsA ← π exam (σ student='A' (Exams))

将考试关系除以学生A所参加的考试

代码语言:javascript
复制
studentsNoGood ← Exams ÷ examsA

现在我让所有的学生参加了完全相同的考试,那些参加了更多的考试的学生,通过减法,我发现只有那些考试较少的学生和那些没有参加学生“A”考试的学生。

代码语言:javascript
复制
lessExamsOrNotSubset ← Exams - studentNoGood

然后我坚持要区分那些考试少的人和那些参加无关考试的人。

对于“一个真子集”,我的意思是,对于2组D和E,D是E的一个适当子集,当且仅当D包含在E中,D不等于E,所以E中有一个元素不存在于D中。

我正在使用数据库系统基础(Elmasri,Navathe)一书中的关系代数。第239页

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-30 13:54:59

要找到那些参加了与A无关的考试的学生,首先要找到那些考试:

代码语言:javascript
复制
R1 ← π exam (Exams) - examsA 

然后找到这组中至少有一次考试的学生:

代码语言:javascript
复制
studentsUnrelated ← π student (Exams ⨝(Exams.exam = R1.exam) R1)

然后,你也可以删除这些学生,找到那些只参加了A考试的适当子集的学生。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59530509

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档