使用关系代数查找元素的适当子集
Finding proper subset of elements using relational algebra
我有一个 table 由学生和考试列组成的考试,我需要找到所有参加了学生 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
然后我陷入了如何区分考试较少的人和参加不相关考试的人的问题
'a proper subset' 我的意思是对于 2 个集合 D 和 E,D 是 E 的真子集当且仅当 D 包含在 E 中并且 D 不等于 E,所以 E 中有一个元素不在 D 中。
我正在使用《数据库系统基础知识》(Elmasri,Navathe)一书中的关系代数。第 239 页
要找到参加考试与 A 无关的学生,首先要找到那些考试:
R1 ← π exam (Exams) - examsA
然后在这组中找到至少参加过一次考试的学生:
studentsUnrelated ← π student (Exams ⨝(Exams.exam = R1.exam) R1)
然后你也可以删除这些学生,以找到那些只参加了 A 考试的适当子集的学生。
我有一个 table 由学生和考试列组成的考试,我需要找到所有参加了学生 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
然后我陷入了如何区分考试较少的人和参加不相关考试的人的问题
'a proper subset' 我的意思是对于 2 个集合 D 和 E,D 是 E 的真子集当且仅当 D 包含在 E 中并且 D 不等于 E,所以 E 中有一个元素不在 D 中。
我正在使用《数据库系统基础知识》(Elmasri,Navathe)一书中的关系代数。第 239 页
要找到参加考试与 A 无关的学生,首先要找到那些考试:
R1 ← π exam (Exams) - examsA
然后在这组中找到至少参加过一次考试的学生:
studentsUnrelated ← π student (Exams ⨝(Exams.exam = R1.exam) R1)
然后你也可以删除这些学生,以找到那些只参加了 A 考试的适当子集的学生。