关系代数过滤查询的结果

时间:2016-03-20 05:36:04

标签: database relational-algebra

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

学生(Ssn,姓名,专业,Bdate)

课程(课程编号,Cname,部门)

ENROLL(Ssn,课程#,季度,年级)

BOOK_ADOPTION(课程编号,季度,Book_isbn)

TEXT(Book_isbn,Book_title,Publisher,Author)

我想解决的问题是:

检索采用由其发布的教科书的部门的名称 仅限Addison-Wesley。

我无法弄清楚如何过滤结果,以便如果我的课程已经转换为Addison-Wesley不再出版的书籍。

我非常感谢所有的帮助!

2 个答案:

答案 0 :(得分:0)

阅读查询时,我不清楚它是否涉及所有采用的书籍或本季度采用的书籍。

首先考虑的是,这是所有采用的书籍,下面是可能解决方案的草图:

  1. 找出关系R(Dept,Book_isbn),该关系列出了任何一个季度任何课程所采用的所有部门。

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

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

  4. 在第二种情况下,在第1步中将列表限制为本季度采用的所有书籍。

答案 1 :(得分:0)

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

  1. 查找“Addison-Wesley”未发表的所有书籍
  2. 在第1步中将结果关系与Book_Adoption和Course相结合,并在部门上进行项目 - 这将使所有使用过未通过“Addison-Wesley”发布的书籍的部门
  3. 参加部门的课程表和项目以获得所有可能的部门
  4. 在步骤3中减去关系 - 步骤2中的关系
  5. πTourse.Dept(Course) - (πTrourse.Dept(((σText.Publisher≠'Addison-Wesley'(Text))⨝Book_Adoption)⨝Course))

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