关系代数联合,连接和交叉

时间:2011-05-24 11:21:44

标签: database relational algebra

我正在学习计算机科学,正在研究数据库系统。我在抓住某些部分时遇到了困难。

说我有以下关系:

Lecturers(LecturerID, Name, DeptID)
Course(DeptID, CrsCode, CrsName, Description)

我注意到它们都共享一个共同的属性DeptID,因此它们是联合兼容的。

我如何列出由计算机科学系(CS)或电子工程系(eEng)讲师授课的所有课程?

我的回答是使用与选择的交集。以下是正确还是接近标记?

πDeptID,CrsName(Course) intersection πDeptID,Name(σDeptID = CS or DeptID = eEng(Lecturers))

我确定可以在这里使用join,但我不确定如何使用谓词。

感谢您的帮助。一旦我理解了在一些情况下使用什么,我相信其余部分会更容易。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

我会使用一个简单的INNER JOIN

SELECT DEPTID, CRSNAME
FROM COURSE A
INNER JOIN LECTURERS B on A.DEPTID=B.DEPTID
WHERE B.DEPTID='eENG' or B.DEPTID='CS'

答案 1 :(得分:0)

Departments也必须有一个表,因为你有一个DeptID字段的引用,它应该是一个INT。我假设它是DEPARTMENTS,DeptID和Code作为字段。在这种情况下:

SELECT
*
FROM 
  Course C
INNER JOIN 
  LECTURERS L on C.DeptId = L.DeptID
INNER JOIN 
  Departments D on C.DeptID = D.DeptID
WHERE 
  D.code = 'eENG' or D.code = 'CS'