Помогите перевести SQL-запрос в реляционную алгебру - PullRequest
1 голос
/ 12 марта 2010

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

Запросы, с которыми я сталкиваюсь больше всего:

SELECT COUNT( cs.student_id ) AS counter
FROM course c, course_student cs
WHERE c.id = cs.course_id
AND c.course_name = 'Introduction to Database Design'

SELECT COUNT( cs.student_id ) 
FROM Course c
INNER JOIN course_student cs ON c.id = cs.course_id
WHERE c.course_name = 'Introduction to Database Design'

и

SELECT COUNT( * ) 
FROM student
JOIN grade ON student.f_name = "Andreas"
AND student.l_name = "Pedersen"
AND student.id = grade.student_id

Я знаю, что нотация может быть немного сложна для вставки в форум HTML, но, возможно, просто используйте какое-то общее имя или греческое имя.

Заранее спасибо Mestika

1 Ответ

0 голосов
/ 15 марта 2010

"и вот глава о реляционной алгебре"

Где ??? Кажется, это ни на что не указывает.

Во всяком случае, примеры, которые вы приводите, являются примерами того, что в литературе с алгебраической перспективой обычно называют «агрегациями», или «обобщениями», или некоторыми такими.

В отличие от «базовых» операторов, таких как JOIN, PROJECT и т. Д., Консенсус в отношении того, как обращаться с такими «агрегатными операторами», относительно невелик. Имейте в виду, что не существует такого понятия, как «реляционная алгебра», и что различные реализации совершенно свободны в выборе набора алгебраических операторов, которые они делают доступными для своих пользователей !!!

...