Целевые списки и выражения реляционного исчисления

 

Итак, WFF обеспечивают средства формулировки условия выборки из отношений БД. Чтобы можно было использовать исчисление для реальной работы с БД, требуется еще один компонент, который определяет набор и имена атрибутов результирующего отношения. Этот компонент называется целевым списком (target list).

 

Целевой список строится из целевых элементов, каждый из которых может иметь следующий вид:

 

· var.attr, где var – имя свободной переменной соответствующей WFF, а attr – имя атрибута отношения, на котором определена переменная var;

· var, что эквивалентно наличию подсписка var.attr1, var.attr2, ..., var.attrn, где {attr1, attr2, ..., attrn}включает имена всех атрибутов определяющего отношения;

· new_name = var.attr; new_name – новое имя соответствующего атрибута результирующего отношения.

 

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

 

Выражением реляционного исчисления кортежей называется конструкция вида target_list WHERE WFF. Значением выражения является отношение, тело которого определяется WFF, а множество атрибутов и их имена – целевым списком.

 

В качестве простого примера покажем выражение реляционного исчисления кортежей, результат которого совпадает с результатом операции СЛУЖАЩИЕDIVIDE BY НОМЕРА_ПРОЕКТОВ(см. рис. 3.11 из Лекции 3):

 

СЛУ1, СЛУ2 RANGE IS СЛУЖАЩИЕ

НОМЕР_ПРОЕКТА range is НОМЕРА_ПРОЕКТОВ

 

СЛУ1.СЛУ_НОМЕР, СЛУ1.СЛУ_ИМЯ, СЛУ1.СЛУ_ЗАРП
WHERE FORALL НОМЕР_ПРОЕКТА EXISTS СЛУ2
(СЛУ1.СЛУ_НОМЕР = СЛУ2.СЛУ_НОМЕР AND
СЛУ1.ПРО_НОМ = НОМЕРА_ПРОЕКТОВ.ПРО_НОМ)

 

Конечно, результатом этого выражения является отношение

 

СЛУ_НОМЕР СЛУ_ИМЯ СЛУ_ЗАРП
Иванов 22400.00
Петров 29600.00