Правильно построенные формулы

Правильно построенная формула (ППФ) служит для выражения условий, накладываемых на кортежные переменные.

Простые условия

Основой ППФ являются простые условия, представляющие собой операции сравнения скалярных значений (значений атрибутов переменных или литерально заданных констант). Например, конструкции

СЛУЖАЩИЙ.СЛУ_НОМ = 2934 и

СЛУЖАЩИЙ.СЛУ_НОМ = ПРОЕКТ.ПРОЕКТ_РУК

являются простыми условиями.

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

Более сложные варианты ППФ строятся с помощью логических связок NOT, AND, OR и IF ... THEN с учетом обычных приоритетов операций (NOT > AND > OR) и возможности расстановки скобок. Так, если form – ППФ, а comp – простое сравнение, то NOT form, comp AND form, comp OR form и IF comp THEN form являются ППФ.

Для примеров воспользуемся отношениями СЛУЖАЩИЕ, ПРОЕКТЫ и НОМЕРА_ПРОЕКТОВ (см. рис. 1).

Правильно построенные формулы - student2.ru


Рис. 1. Примерные значения отношений СЛУЖАЩИЕ, ПРОЕКТЫ и НОМЕРА_ПРОЕКТОВ

Правильно построенной является следующая формула:

IF СЛУЖАЩИЙ.СЛУ_ИМЯ = 'Иванов'THEN (СЛУЖАЩИЙ.СЛУ_ЗАРП >= 22400.00 AND СЛУЖАЩИЙ.ПРО_НОМ = 1)

Эта формула будет принимать значение true для следующих значений кортежной переменной СЛУЖАЩИЙ:

СЛУ_НОМЕР СЛУ_ИМЯ СЛУ_ЗАРП ПРО_НОМ
Иванов 22400.00
Петров 29600.00
Сидоров 18000.00
Федоров 20000.00
Иванова 22000.00
Петров 29600.00
Сидоренко 18000.00
Федоренко 20000.00
Иваненко 22000.00
 

Кванторы

При построении ППФ допускается использование кванторов существования (EXISTS) и всеобщности (FORALL). Если form – это ППФ, в которой участвует переменная var, то конструкции EXISTS var (form) и FORALL var (form) представляют собой ППФ. По определению, формула EXISTS var (form) принимает значение true в том и только в том случае, если в области определения переменной var найдется хотя бы одно значение (кортеж), для которого ППФ form принимает значение true. Формула FORALL var (form) принимает значение true, если для всех значений переменной var из ее области определения ППФ form принимает значение true.

Пусть здесь и далее в этом разделе СЛУ1 и СЛУ2 представляют собой две кортежные переменные, определенные на отношении СЛУЖАЩИЕ. Тогда ППФ

EXISTS СЛУ2 (СЛУ1.СЛУ_ЗАРП > СЛУ2.СЛУ_ЗАРП)

для текущего кортежа переменной СЛУ1 принимает значение true в том и только в том случае, если во всем отношении СЛУЖАЩИЕ найдется такой кортеж (ассоциированный с переменной СЛУ2), чтобы значение его атрибута СЛУ_ЗАРП удовлетворяло внутреннему условию сравнения. Легко видеть, что эта формула принимает значение true только для тех значений кортежной переменной СЛУ1, которые соответствуют служащим, не получающим минимальную зарплату. Соответствующее множество кортежей показано на рис. 2a (для тела отношения СЛУЖАЩИЕ из рис. 1).

Правильно построенные формулы - student2.ru


Рис. 2. Примеры правильно построенных формул с кванторами

Правильно построенная формула

FORALL СЛУ2 (СЛУ1.СЛУ_ЗАРП Правильно построенные формулы - student2.ru СЛУ2.СЛУ_ЗАРП)

для текущего кортежа переменной СЛУ1 принимает значение true в том и только в том случае, если для всех кортежей отношения СЛУЖАЩИЕ (связанных с переменной СЛУ2) значения атрибута СЛУ_ЗАРП удовлетворяют условию сравнения. Снова легко видеть, что формула принимает значение true только для тех значений кортежной переменной СЛУ1, которые соответствуют служащим, получающим максимальную зарплату. Соответствующее множество кортежей показано на рис. 2b.

Наши рекомендации