Домашнее задание - Реляционная алгебра: соединение
Выполняйте только если преподаватель назначил это задание. Срок сдачи сообщит преподаватель.
Задание предназначено для самостоятельной отработки материала обучающимися, пропустившими очное теоретическое занятие, либо в рамках резервного дистанционного контроля. Оценивание проводится по 4-балльной шкале.
Срок сдачи сообщит преподаватель.
Исходные данные для выполнения задания
Даны два отношения базы данных университетского учета:
Отношение R: Студенты
ID_студента
ФИО
Специальность
101
Алексеев М.
СА
102
Борисов К.
СА
103
Васильев Д.
ИС
104
Григорьев С.
ИС
Отношение S: Договоры
Номер_договора
ID_студента
Форма_оплаты
Д-801
101
Бюджет
Д-802
103
Коммерция
Д-803
105
Целевое
Обратите внимание: студент 102 и студент 104 не имеют договоров в отношении S. Договор Д-803 оформлен на студента 105, отсутствующего в отношении R.
Постройте результирующее отношение для операции естественного соединения: R ⋈ S.
Требования:
1. Определите состав атрибутов (столбцов) схемы результата. Помните о правиле исключения дублирующегося ключевого поля при Natural Join!
2. Перечислите все итоговые кортежи (строки).
3. Укажите мощность результирующего отношения (число строк) и степень (число столбцов).
Задание 2. Вычисление результата левого внешнего соединения (Left Outer Join) — 1 балл
Постройте результирующее отношение для левого внешнего соединения: R ⟕ S.
Требования:
1. Зафиксируйте, какие именно кортежи сохраняются из левого отношения R.
2. Какие значения принимают атрибуты правого отношения S для студентов Борисова (102) и Григорьева (104)?
3. Какова практическая польза левого внешнего соединения для администрации учебного заведения?
Задание 3. Анализ маркера NULL и антисоединения — 1 балл
Ответьте на аналитические вопросы:
1. Почему предикат S.ID_студента = NULL в SQL и реляционной алгебре не позволит найти студентов без договоров? Какое специальное выражение необходимо применить?
2. Как записать операцию поиска студентов, не заключивших договор, через реляционное антисоединение (Anti-Join)? Какова будет мощность результата?