查找未注册任何课程的学生姓名 - 学生,教师,课程,产品,已注册

时间:2018-02-28 02:55:54

标签: relational-algebra

  

根据下面的数据库,使用关系代数预测未注册课程的学生的姓名。

Students(snum, sname, major, standing, age, gpa)
Faculty(fid, fname, deptid)
Courses(cnum, cname, course_level, credits)
Offerings(onum, cnum, day, starttime, endtime, room, max_occupancy, fid)  
Enrolled(snum, onum)

我可以通过以下方式获得未参加课程的所有学生的snum:

π snum Students - π snum Enrolled

但是如何用我找到的snum来预测学生的哼唱?

1 个答案:

答案 0 :(得分:0)

每个基表都包含从某些(特征)谓词(由列参数化的语句模板)构成真正的命题(语句)的行。设计师给出了谓词。用户保持表格更新。

-- rows where student [snum] is named [sname] and has major [major] and ...
Students
-- rows where student [snum] is enrolled in offering [onum]
Enrolled

每个查询结果都包含从某个谓词中生成真命题的行。关系表达式的谓词根据其谓词非终结符从其参数表达式的谓词组合而来。 DBMS评估结果。

/* rows where
    student [snum] is named [sname] and has major [major] and ...
AND student [snum] is enrolled in offering [onum]
*/
Student ⨝ Enrolled

AND提供NATURAL JOINAND condition 提供RESTRICT condition EXISTS columns 提供PROJECT other columns OR& AND NOT& OR& MINUS。等

/* rows where
THERE EXISTS sname, major, standing, age & gpa SUCH THAT
    student [snum] is named [sname] and has major [major] and ...
*/
π snum Students

/* rows where
THERE EXISTS onum SUCH THAT
    student [snum] is enrolled in offering [onum]
*/
π snum Enrolled

/* rows where
    (   THERE EXISTS sname, major, standing, age & gpa SUCH THAT
            student [snum] is named [sname] and has major [major] and ...
    AND NOT
        THERE EXISTS onum SUCH THAT
            student [snum] is enrolled in offering [onum]
    )
AND student [snum] is named [sname] and has major [major] and ...
*/
(π snum Students - π snum Enrolled) ⨝ Students

您可以从中推出任何您不想要的列。

(请注意,我们不需要知道要查询的约束。)

Relational algebra for banking scenario
Forming a relational algebra query from an English description
Is there any rule of thumb to construct SQL query from a human-readable description?