我有一个名为“考试”的表格,由学生和考试组成,我需要找到所有参加A级考试的学生。
数据样本可以是:
student exam
A 1
A 2
B 1
B 3
C 1
C 2
D 1结果应该是
student
D 因为只有D参加了A考试的适当子集,所以B没有出现在结果中,因为他参加了A没有参加的考试
到目前为止我想出的是:
参加A学生参加的所有考试
examsA ← π exam (σ student='A' (Exams))将考试关系除以学生A所参加的考试
studentsNoGood ← Exams ÷ examsA现在我让所有的学生参加了完全相同的考试,那些参加了更多的考试的学生,通过减法,我发现只有那些考试较少的学生和那些没有参加学生“A”考试的学生。
lessExamsOrNotSubset ← Exams - studentNoGood然后我坚持要区分那些考试少的人和那些参加无关考试的人。
对于“一个真子集”,我的意思是,对于2组D和E,D是E的一个适当子集,当且仅当D包含在E中,D不等于E,所以E中有一个元素不存在于D中。
我正在使用数据库系统基础(Elmasri,Navathe)一书中的关系代数。第239页
发布于 2019-12-30 13:54:59
要找到那些参加了与A无关的考试的学生,首先要找到那些考试:
R1 ← π exam (Exams) - examsA 然后找到这组中至少有一次考试的学生:
studentsUnrelated ← π student (Exams ⨝(Exams.exam = R1.exam) R1)然后,你也可以删除这些学生,找到那些只参加了A考试的适当子集的学生。
https://stackoverflow.com/questions/59530509
复制相似问题