Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите разобраться в реляционной алгебре, не знаю как писать запросы...

Александр Николаев Профи (607), закрыт 7 лет назад
Вариант 5, 10, 15
1.Получить номера преподавателей с кафедры ЭВМ, преподающих предметы по специальности, совпадающей со специальностью студенческой группы.
2.Получить специальности студенческой группы, на которых работают преподаватели кафедры АСУ.
3.Получить номера предметов, изучаемых группой АС-8.
4.Получить номера студенческих групп, которые изучают те же предметы, что и студенческая группа АС-8.
5.Получить номера студенческих групп, которые не изучают предметы, преподаваемых в студенческой группе АС-8.
Лучший ответ
Moss Bitch Мастер (1733) 8 лет назад
Гугл в помощь! Ищи статьи объясняющие и разжевывающие материал, таких полно, подберёшь для себя.)
Александр НиколаевПрофи (607) 8 лет назад
конкретно проблема в том, что команды знаю, но не знаю какие конкретно м/у собой столбцы связывать...
Moss Bitch Мастер (1733) Пробовал искать именно такое задание?
Александр НиколаевПрофи (607) 8 лет назад
3.Получить номера предметов, изучаемых группой АС-8.
Выборка: Номера WHERE Предметы = ЭВМ и С
Проекция: Группы [Кодовый номер предмета, Название предмета]

КодовыйНомерПредметаНазваниеПредмета
17П СУБД ПК
18П ВКСС

Запросы выполняются следующим образом (по выборке), а я даже не знаю правильно ли у меня или нет.
Moss Bitch Мастер (1733) У тебя изначальное задание есть? Вбей главную его часть в поиск и может хоть подобные найдёшь
Остальные ответы
The Cat Искусственный Интеллект (116106) 8 лет назад
3. (t1, t2 -- это названия табличек)

SELECT
  t1.КодовыйНомерПредмета
FROM
  t1,t2
WHERE
  t1.КодовыйНомерГруппы=t2.КодовыйНомерГруппы
  AND
  t2.НазваниеГруппы="АС-8"
;

Результат:

12П
17П
18П
Алексей Кузьминов Мудрец (11132) 8 лет назад
Запросы пишутся постепенно.
На примере 2:

Сначала получим номера преподавателей, которые на кафедре АСУ
select п. ЛичныйНомер from Преподы п where п. Кафедра='АСУ'
Гарантированно повторений нет.

Чтобы узнать специальность группы, нужно знать номера групп, которые учат эти преподы, поэтому
select р. КодовыйНомерГруппы from Расписание р, Преподы п
where p.ЛичныйНомер=п. ЛичныйНомер and п. Кафедра='АСУ'
Тут номера групп могут повторяться, если для одной группы предметы ведут разные преподаватели кафедры АСУ

Ну и собственно специальности
select г. Специальность from Группы г, Расписание р, Преподы п where
г. КодовыйНомерГруппы=р. КодовыйНомерГруппы and p.ЛичныйНомер=п. ЛичныйНомер and п. Кафедра='АСУ'
В таком запросе специальности будут повторяться, поэтому придётся использовать distinct:
select distinct г. Специальность from …

ЗЫ
По правилам реляционной алгебры нужно было бы писать через join'ы, но так выглядит проще.
Похожие вопросы