ВУЗ:
Составители:
Рубрика:
17
Решение. {r.ID_Stud, r.СФам, r.САдрес : r IN КОНСУЛЬТИРУЕМЫЙ
OR r IN КОНСУЛЬТАНТ}.
Поскольку результаты запросов будут совпадать с отношениями, полу-
чающимися в результате выполнения соответствующих операций РА, мы не
будем останавливаться на конкретных экземплярах.
Пересечение
Запрос. Определить, кто из студентов консультируется, сам являясь
консультантом.
Решение. {r.ID_Stud, r.СФам, r.САдрес : r IN КОНСУЛЬТИРУЕМЫЙ
AND r IN КОНСУЛЬТАНТ}.
Разность
Запрос. Определить, кто из студентов консультируется, сам НЕ являясь
консультантом.
Решение. {r.ID_Stud, r.СФам, r.САдрес : r IN КОНСУЛЬТИРУЕМЫЙ
OR r NOT IN КОНСУЛЬТАНТ}.
И вновь A-B < > B-A.
Запрос. Определить, кто из студентов консультирует, но сам НЕ кон-
сультируется.
Решение. {r.ID_Stud, r.СФам, r.САдрес : r NOT IN
КОНСУЛЬТИРУЕМЫЙ OR r IN КОНСУЛЬТАНТ}.
Произведение
Запрос. Даны две РТ: A = <X,Y>; B = <W,Z>
Решение. {r.X, r.Y, s.W, s.Z : r IN A AND s IN B}.
Квантор существования. Соединение
Для введения двух оставшихся операций в РИ рассматриваются два
КВАНТОРА.
Квантор Существования (EXISTS) – выражение РИ, означающее су-
ществование ХОТЯ БЫ ОДНОЙ строки, удовлетворяющей условию опреде-
ляющего выражения.
Квантор существования позволяет рассматривать несколько связанных
отношений, причем в его терминах предусмотрено и естественное, и внеш-
нее, и тета-соединение. Рассмотрим примеры.
Естественное соединение
Запрос. Кто сдавал курс К1?
Решение. Построение запроса выполним поэтапно.
⇒ На вопрос КТО? необходимо искать картежи в отношении
СТУДЕНТ. Поэтому целевой список должен содержать атрибуты из этого
отношения, а определяющее выражение – оператор принадлежности (IN)
картежей к Студент, например, так:
18
{r.ID_Stud, r.СФам : r IN СТУДЕНТ ...}
⇒ Информация о сданных курсах содержится в отношении
УСПЕВАЕМОСТЬ. При этом в результирующее отношение будет включать-
ся информация о студентах, для которых СУЩЕСТВУЕТ ХОТЯ БЫ ОДИН
картеж в УСПЕВАЕМОСТИ. Условие существования задается одноимен-
ным квантором EXISTS, за которым следует условие соединения, указываю-
щееся, как в случае естественного, так и тета-соединения:
{r.ID_Stud, r.СФам : r IN СТУДЕНТ AND EXISTS s IN УСПЕВАЕМОСТЬ
(s.ID_Stud=r.ID_Stud ...)}.
⇒ И наконец, необходимо добавить выборку по курсу К1. Оконча-
тельно будем иметь следующее выражение РИ:
{r.ID_Stud, r.СФам : r IN СТУДЕНТ AND EXISTS s IN
УСПЕВАЕМОСТЬ (s.ID_Stud=r.ID_Stud AND s.ID_Subj=’К1’}.
Следует отметить, что исследование картежей на предмет помещения
их в результирующее отношение начинается с первого картежа отношения
СТУДЕНТ (его значение временно присваивается переменной r), для r ищет-
ся соответствующий (по ID_Stud) картеж s в отношении УСПЕВАЕМОСТЬ.
Если такой картеж найден, то он проверяется на удовлетворение условию.
Если же и с этим все в порядке, то нужные атрибуты текущего картежа
СТУДЕНТ’а помещается в результирующее отношение, если же условие не
удовлетворено, то поиск переходит к следующему картежу в Успеваемости,
значение которого теперь пишется в s. Если просмотр всего отношения
УСПЕВАЕМОСТЬ завершен и либо картеж s, соответствующий r, не найде-
на, либо ни один из обнаруженных картежей не имеет номером курса К1, то
картеж r в результирующее отношение не помещается.
Пример запроса к нескольким связанным отношениям.
Запрос. Кто сдавал высшую математику за 1 семестр?
Решение. {r.ID_Stud, r.СФам : r IN СТУДЕНТ AND EXISTS s IN
УСПЕВАЕМОСТЬ (s.ID_Stud = r.ID_Stud AND s.Семестр = ’1’ AND EXISTS
t IN КУРС (t.ID_Subj= s.ID_Subj AND t.Наименование = ’Высшая математи-
ка’))}.
Тета-соединение
Запрос. Идентифицировать студентов, чей консультант Андреева А.А.
Решение. {r.ID_Stud, r.СФам : r IN СТУДЕНТ AND EXISTS s IN
СТУДЕНТ (s.ID_Stud = r.Консультант AND s.СФам = ’Андреева А.А.’)}.
Внешнее соединение
Внешнее соединение выполняется в рамках квантора существования
также естественно.
Запрос. Присоединить информацию об успеваемости к информации о
студентах.
Страницы
- « первая
- ‹ предыдущая
- …
- 7
- 8
- 9
- 10
- 11
- …
- следующая ›
- последняя »