ВУЗ:
Составители:
Рубрика:
19
Решение. {r.ID_Stud, r.СФам, r.САдрес, r.Консультант, s.ID_Subj,
s.Семестр, s.Оценка : r IN СТУДЕНТ OR EXISTS s IN УСПЕВАЕМОСТЬ
(s.ID_Stud = r.ID_Stud)}.
Квантор всеобщности. Деление
Второй тип квантора – квантор всеобщности введен для построения за-
просов, требующих операции деления отношений.
Квантор всеобщности (FORALL) – выражение РИ, обозначающее,
что некоторое условие применимо к каждому картежу определенного типа.
Запрос. Перечислить идентификационные номера студентов, которые
сдали все предметы хотя бы за один семестр.
Решение. Построение запроса выполним поэтапно.
⇒ Поскольку требуются идентификационные номера студентов, то не-
обходимо искать записи в отношении СТУДЕНТ. Поэтому целевой список
должен содержать атрибут ID_Stud из этого отношения, а определяющее вы-
ражение оператор принадлежности IN картежей к Студент, например, так:
{r.ID_Stud : r IN СТУДЕНТ ...}.
⇒ Так как нас интересуют студенты, сдававшие хотя бы один раз
КАЖДЫЙ курс, то к отношению КУРС следует применить квантор всеобщ-
ности:
{r.ID_Stud : r IN СТУДЕНТ AND FORALL s IN КУРС (...)}.
⇒ И наконец, так как нас интересуют CТУДЕНТЫ, которые
СДАВАЛИ каждый курс, то соответствующие картежи должны существовать
в отношении УСПЕВАЕМОСТЬ:
{r.ID_Stud : r IN СТУДЕНТ AND FORALL s IN КУРС (EXISTS t IN
УСПЕВАЕМОСТЬ (t.ID_Subj= s.ID_SubjAND t.ID_Stud = r.ID_Stud))}.
Эквивалентность РА и РИ
На самом деле, вводя понятия РИ, мы одновременно показывали его
аналогичность РА. Для наглядной иллюстрации эквивалентности подходов
сведем все операции в таблицу (см. табл. 1).
Таблица 1
Операция Описание Синтаксис РА Синтаксис РИ
Проекция На входе – одно отноше-
ние Т1. Выбор из отно-
шения отдельных атри-
бутов
[Т1.поле1,
Т2.поле2, ...]
{r.поле1, r.поле2, ... :
r IN Т1}
Выборка На входе – одно отноше-
ние Т1. Выбор из отно-
шения отдельных карте-
жей, удовлетворяющих
условию выбора
SELECT (T1 :
[условие вы-
бора])
{r.поле1, r.поле2, ... :
r IN Т1 AND [усло-
вие выбора]}
20
Операция Описание Синтаксис РА Синтаксис РИ
Объединение На входе – два объеди-
нительно-совместимых
отношения Т1 и Т2.
Включение в результи-
рующее отношение (РО)
всех картежей, которые
входят ХОТЯ БЫ В
ОДНО отношение
Т1 U Т2{r.поле1, r.поле2, ... :
r IN Т1 OR r IN Т2}
Пересечение На входе – два объеди-
нительно-совместимых
отношения Т1 и Т2.
Включение в РО всех
картежей, которые вхо-
дят В ОБА отношения
ОДНОВРЕМЕННО
T1 ^ T2
{r.поле1, r.поле2, ... :
r IN Т1 AND r IN
Т2}
Разность На входе – два объеди-
нительно-совместимых
отношения Т1 и Т2.
Включение в РО всех
картежей, которые вхо-
дят в Т1 и не входят в Т2
Т1-Т2
{r.поле1, r.поле2, ... :
r IN Т1 AND r NOT
IN Т2}
Произведение На входе – два отноше-
ния Т1 и Т2. РО состоит
из ВСЕХ картежей Т1, к
КАЖДОМУ из которых
присоединены ВСЕ кар-
тежи из Т2
Т1 * Т2
{r.поле1, r.поле2, ... ,
s.поле1, s.поле2, ...: r
IN Т1 AND s IN Т2}
Соединение На входе - два отноше-
ния Т1 и Т2, имеющих
атрибуты связи Т1.п1 и
Т2.п2. Возможно совпа-
дение Т1 и Т2, но не по-
лей связи. РО содержит
соответствующие дан-
ные из обоих отношений
1. Естествен-
ное С.: JOIN
(Т1, Т2).
2. Тета-С.:
JOIN (T1, T2 :
Т1.п1 <опера-
тор сравне-
ния> Т2.п2 ).
3. Внешнее С.:
OUTERJOIN
(T1, T2).
1,2 {r.п3 : r IN Т1
AND EXISTS s IN
Т2 (s.п1 <оператор
сравнения> s.п2) }.
3. {r.п3 : (r IN Т1
AND EXISTS s IN
Т2 (s.п1 <оператор
сравнения> s.п2 ))
OR (r IN Т1 AND
NOT EXISTS s IN
Т2 (s.п1 <оператор
сравнения> s.п2 ))}.
Страницы
- « первая
- ‹ предыдущая
- …
- 8
- 9
- 10
- 11
- 12
- …
- следующая ›
- последняя »