Объединение реляционной алгебры, соединение и пересечение - PullRequest
0 голосов
/ 24 мая 2011

Я изучаю информатику и изучаю системы баз данных.У меня возникают трудности с определением некоторых частей.

Скажем, у меня есть следующие отношения:

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

Я отмечаю, что они оба имеют общий атрибут DeptID, поэтому они совместимы с объединением.

Как бы я перечислил все курсы, которые преподают лекторы, принадлежащие к отделу информатики (CS) или отделу электронной инженерии (eEng)?

Мой ответ будет использовать пересечение с выбором.Будет ли следующее правильно или около отметки?

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

Я уверен, что здесь можно использовать соединение, но я не уверен, как использовать предикат с ним.

Спасибо затвоя помощь.Как только я пойму, что использовать в некоторых ситуациях, я уверен, что остальное будет легче.

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 24 мая 2011

Должна быть также таблица для отделов, так как у вас есть ссылка на поле 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'
0 голосов
/ 24 мая 2011

Я бы использовал для этого простое ВНУТРЕННЕЕ СОЕДИНЕНИЕ .

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