Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
билеты 13-16.docx
Скачиваний:
4
Добавлен:
11.01.2022
Размер:
339.88 Кб
Скачать

Билет 15

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

Сначала некоторое предисловие

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

Введем ограничения на конечность реальных отношений в БД, чтобы исключить возможность формирования выражений типа {tï-R(t)}, не имеющих смысла. Это выражение обозначает все возможные, не принадлежащие R кортежи, арность которых согласуется с t.

А теперь к сути:

С этой целью в реляционном исчислении рассматривают только безопасные выражения {t ïφ(t)}, для которых выполняется условие, что каждый компонент (элемент столбца) любого кортежа t, удовлетворяющего φ(t) является элементом некоторого множества элементов D(φ). Множество D(φ) определяется как функция фактических отношений, которые указываются в φ(t), и констант, присутствующих в формуле φ(t) и элементов кортежей тех отношений, которые указаны в φ(t). Так как все отношения в БД предполагаются конечными, то и множество D(φ) – конечно:

Где – константы, встретившиеся в формуле – проекции кортежей фактических отношений , встретившихся в формуле (в данном случае – компоненты кортежей).

При таком определении множества D(φ) справедливо следующее:

Например, если задано выражение {tïcÚR(t)}, где R – бинарное отношение, то

Реляционное исчисление является безопасным, если выполняются следующие условия:

1) из истинности φ(t) следует, что каждый компонент кортежа t принадлежит D(φ);

2) для любой подформулы вида ($u)(φ1(u)), входящей в состав ф, из истинности φ1(и) следует, что и принадлежит D(φ1);

3) для любой подформулы вида ("u)(φ1(u)), входящей в состав φ, из истинности φ1(u) следует, что и не принадлежит D(φ1), или же, что то же самое, из истинности Øφ1(u) следует, что и принадлежит D(φ1 ).

При выполнении этих условий выражение {t|φ(t)} является безопасным. Выражению ("u)(φ1(u)) эквивалентно выражение Ø($u)(Øφ1(u)).

На основании вышеизложенного можно утверждать, что если формула φ(t) такова, что любая ее подформула вида ($u)(φ1(t)) или ("u)(φj(t)) безопасна, то безопасно каждое выражение вида {tïR(t)Ùφ(t )}. Действительно, любой кортеж, удовлетворяющий формуле (R(t)Ùφ(t)), принадлежит в соответствии с этой формулой отношению R, следовательно, каждый из его компонентов будет принадлежать также и множеству элементов D(R(t)Ùφ(t)). Тогда в силу выполнения условия 1 (выполнение условий 2 и 3 задано как исходная предпосылка) выражение {t|R(t)Ùφ(t)} – безопасное. Если в φ(t) найдется хотя бы одна из подформул вида ($u)(φi(t)) или ("u)(φj(t)), которая окажется не безопасной, то тогда и выражение {t|R(t)Ùφ(t)} не будет безопасным. Если в формуле φ(t) вообще отсутствуют подформулы вида ($u)(φi(t)) или ("u)(φj(t)) – или соответствующие им эквивалентные -Ø("u)(Øφi(t)) или Ø($u)(Øφj(t) ), – то выражение (t|R(t)Ùφ(t)} всегда является безопасным.

Например, если φ(t) = ØR2(t), то получим безопасное выражение {tïR1(t)ÙØR2(t)}, соответствующее операции разности отношений в реляционной алгебре (R1 – R2).

Безопасным является также выражение {t|R(t)}, соответствующее выражению R (точнее – переменной R, обозначающей отношение).

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

Теорема. Если Е – выражение реляционной алгебры, то существует эквивалентное ему безопасное выражение в реляционном исчислении с переменными-кортежами

Для основных операций реляционной алгебры укажем следующие соответствующие выражения реляционного исчисления на переменных-кортежах.

  1. Операции объединения (R1 È R2соответствует выражение

  1. Операции разности (R1 – R2соответствует выражение

Рассматривается все множество кортежей t, таких, что принадлежит R1 и не принадлежит R2.

  1. Операции декартова произведения (R1 Ä R2) соответствует выражение

Рассматривается все множество кортежей t арности (k+m), таких, что существует кортеж и, принадлежащий R1, и существует кортеж υ, принадлежащий R2, причем k первых компонентов кортежа t образуют компоненты кортежа и, а следующие т компонентов кортежа t образуют компоненты кортежа υ.

  1. Операции проекции соответствует выражение

  1. Операции селекции соответствует выражение {tïR(tF'}, где F' – это выражение F, в котором каждый операнд, обозначающий компонент i, заменен на t[i].

Соседние файлы в предмете Программная инженерия