查询的关系代数过滤结果

Relational Algebra Filtering Results of a query

寻求一些帮助解决使用关系代数的练习,table 模式如下:

学生(社会号、姓名、专业、出生日期)

COURSE(课程#,Cname,部门)

注册(Ssn、课程#、季度、年级)

BOOK_ADOPTION(课程#,学季,Book_isbn)

TEXT(Book_isbn, Book_title, 出版商, 作者)

我想解决的问题是:

检索采用其出版的教材的部门名称 仅限 Addison-Wesley。

我不知道如何过滤结果,这样如果我有一门课程已经切换到不再由 Addison-Wesley 出版的书籍。

非常感谢大家的帮助!

看查询,不清楚是指曾经采用过的所有书籍还是本季度采用的书籍。

考虑到第一种可能,即所有被采用的书籍,这里是一个可能的解决方案的草图:

  1. 找到关系 R(Dept, Book_isbn) 列出所有部门在任何课程、任何季度采用的书籍。

  2. 找出 Addison-Wesley 出版的所有书籍的关系 S(Book_isbn)。

  3. 然后,使用单个代数运算符(哪个?),您可以获得结果。

在第二种情况下,在第 1 步将列表限制为当前季度课程中采用的所有书籍。

感谢Renzo的帮助,我找到了答案!

  1. 查找 'Addison-Wesley'
  2. 未出版的所有书籍
  3. 将步骤 1 中的结果关系与 Book_Adoption 和课程以及部门项目相结合 - 这将提供所有使用过非 'Addison-Wesley'[=21= 出版的书籍的部门]
  4. 参加课程 table 并在部门上进行项目以获得所有可能的部门
  5. 减去第 3 步中的关系 - 第 2 步中的关系

πCourse.Dept(课程)-(πCourse.Dept(((σText.Publisher≠'Addison-Wesley'(文本))⨝Book_Adoption)⨝课程))

我用关系代数计算器测试了这个答案并给出了想要的结果!