查询的关系代数

时间:2017-07-28 17:34:03

标签: database relational-algebra

考虑以下关系数据库方案:

COURSES (Cno,name)
PRE-REQ(Cno, pre-Cno)
COMPLETED (student_no, Cno)

COURSES提供所有可用课程的编号和名称。

PRE-REQ提供有关哪些课程是特定课程的先决条件的信息。

COMPLETED表示学生已完成哪些课程

使用关系代数表达以下内容:

列出student_no = 2310的学生已完成所有先决条件的所有课程。

问题可以通过SQL查询解决,但无法导出等效的关系代数。

2 个答案:

答案 0 :(得分:0)

以下是RA的TUTORIAL D变体中的答案:

WITH { COMPL_2310 := (COMPLETED WHERE student_no = '2310')
                      { Cno } RENAME { Cno AS pre-Cno }
     }
COURSES WHERE ( ( RELATION{ TUPLE{*} } JOIN PRE_REQ ){ pre-Cno }
              ⊆
                COMPL_2310
              )

(与Date& Darwen的教科书相比,它使用了最近引入的一些语法糖和替代语法。)

答案 1 :(得分:0)

这可能是正确的答案

Π Cno (PRE-REQ) - Π Cno (PRE-REQ - (已完成⋈ COMPLETED.Cno = pre-Cno ^ student_no = 2310 < / sub> PRE-REQ))