Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 3 Реляционная алгебра.doc
Скачиваний:
4
Добавлен:
16.09.2019
Размер:
438.27 Кб
Скачать

3.7.9. Деление r  s

Результатом операции деления является набор кортежей отношения R, определенных на множестве атрибутов C, которые соответствуют комбинации всех кортежей отношения S.

Эту операцию можно представить с помощью основных операций:

T1  ПС(R)

T2  ПС((S x Т1) – R)

Т  Т1 – Т2

Например,

Создать список всех арендаторов, которые осматривали объекты недвижимости с тремя комнатами.

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

Клиент№,Недвижимость№(Осмотры))  (ПНедвижимость№(Комнаты=3(ОбъектыНедвижимости)))

Следует отметить, что реляционная алгебра в первоначально предложенном Коддом варианте не содержит операций для внесения изменений в данные, необходимые на практике. Это связано с тем, что такие операции (удаление, обновление, вставка) достаточно очевидны. Сложность для разработчиков систем всегда вызывала спецификация необходимых данных, т.е. способ указания, выделения из базы тех данных, которые нужно либо извлечь, либо обновить или удалить. Реляционная алгебра впервые позволила специфицировать данные не построчно, как некий алгоритм перебора записей, а в терминах отношений. В последующих исследованиях реляционной модели предлагались различные дополнения языка реляционной алгебры. Предлагалось добавить такие операции как обновление и удаление, операции вычисления итоговых значений и т.п.

Основное назначение реляционной алгебры – служить инструментом для построения теории реляционных баз данных. Реляционная алгебра никогда не была реализована в реальных (коммерческих) СУБД как язык запросов к данным. Однако в процессе обработки запроса, реляционная система в конечном итоге выполняет некоторую последовательность реляционных операций.

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

3.8. Реляционное исчисление

Это название произошло от части математической логики, которая называется исчислением предикатов. В контексте баз данных оно существует в двух формах: реляционного исчисления кортежей (предложено Коддом) и реляционного исчисления доменов (предложено Лакруа и Перо). Под предикатом подразумевается истинностная функция с параметрами. Если Р – предикат, то множество всех значений переменной x, при которых Р становится истинным, записывается следующим образом:

{x | P(x)}

Предикаты могут соединяться с помощью логических операций (AND), (OR) и (NOT). В зависимости от области определения переменных x существует две формы: исчисление кортежей и исчисление доменов. В исчислении кортежей переменная x может принимать значения только данного отношения, а в исчислении доменов – данного домена.