在关系代数中你不能做以下哪一项?

时间:2013-01-30 21:16:19

标签: relational-algebra

tldr;下面三个中的哪一个你不能写RA?

我们的教授要求我们编写3个SQL查询。然后他问我们哪一个不能用关系代数写。它们如下:

鉴于以下3个表格:

Students (sID, sName);              (Primary Key sID)
Courses (cID, cName);               (Primary Key cID)
Enrolled (sID, cID, sectID, grade)  (Primary Key sID, cID)
where      foreign key (sID) references Students,  
           foreign key (cID) references Courses. 
  1. 找到最大的学生ID。
  2. 获取COMP 4380的班级列表(由组成),并按照sName的字母顺序排列列表中的记录。 (他只是想要所有参加过该课程的学生)。
  3. 计算每门课程注册的学生人数(按课程ID确定)。
  4. 所以我们有:

    1. 涉及在整数列中查找最大值的查询。
    2. 涉及按字母顺序对结果进行排序的查询。
    3. 涉及计算多个组的查询。
    4. 我设法为#1(Details here)写了一个RA语句,所以我知道不是这样。但我不确定2和3。你怎么能对RA操作进行排序?你怎么能算多个团体?我会猜测 3是可能的,因为RA可以扩展为将计数作为聚合函数。

      以下是我提出的回答我教授原始问题的SQL语句:

      SELECT max(sID) 
      FROM Students
      
      SELECT sID, sName
      FROM Enrolled INNER JOIN Students
      WHERE cID="COMP 4380"
      ORDER BY sName
      
      SELECT count(sID), cID
      FROM Enrolled
      GROUP BY cID
      

      我无法在RA中写2和3。

1 个答案:

答案 0 :(得分:0)

标准RA中只能有1个。我们无法排序,我们无法计算标准RA中的任意数字。