Реляционное исчисление кортежей: примеры

А. Создадим список всех менеджеров, зарплата которых превышает 25000 фунтов стерлингов.

Б. Создадим список всех сотрудников, которые отвечают за работу с объектами недвижимости в Глазго.

Атрибут staffNo в отношении PropertyForRent содержит табельный номер того сотрудника, который отвечает за работу с данным объектом недвижимости. Этот запрос можно сформулировать иначе: "Для всех сотрудников, данные о которых нужно привести в списке, в отношении PropertyForRent имеются кортежи, соответствующие этим сотрудникам, причем значение атрибута city в каждом таком кортеже равно 'Glasgow' ".

Обратите внимание, что в такой формулировке запроса нет никакого указания на стратегию выполнения запроса — СУБД предоставляется свобода выбора операций для выполнения данного задания, а также порядка выполнения этих операций. Эквивалентная формулировка данного запроса в реляционной алгебре будет выглядеть так: "Выбрать такие кортежи отношения PropertyForRent, в которых значение атрибута city равно 'Glasgow', и выполнить их объединение с отношением Staff ". Как видите, здесь порядок выполнения операций задается неявно, но вполне однозначно.

В. Создадим список всех сотрудников, которые в данный момент не работают с объектами недвижимости.

Используя правила эквивалентности логических операций, это выражение можно переписать так:

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

При ответе на этот запрос следует учитывать, что формулировку "клиенты, которые осматривали любой объект недвижимости в городе 'Glasgow' ", можно заменить формулировкой "клиенты, для которых в отношении Viewing имеются данные об осмотре ими объектов недвижимости в городе 'Glasgow' ".

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

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

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

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: