Модели и проектирование баз данных

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


. Как видно из определения, ППФ – это предикат первого порядка.

Примеры простых предикатов:

SX.S# = SPJX.S#;

SX.S# = ‘S1’;

SX.S# = SPJX.S#  AND SPJX.P# = ‘P1’;

NOT (SX.Ci = ‘Яя’);

IF  SX.Ci = ‘Яя’  THEN  SPJX.S# = ‘S1’;

Последний предикат – пример намеренно бессмысленного, но синтаксически правильного высказывания.

Правильно построенная формула может содержать кванторы EXISTS (существует) и FORALL  (для всякого).

Выражение EXISTS  SX  (SX.Ci = ‘Яя’) может быть прочитано так: «Существует в области определения переменной SX  кортеж со значением атрибута  Ci равным ‘Яя’». Предикат принимает значение .T., если в текущем значении отношения S  есть хотя бы один кортеж со значением Ci = ‘Яя’.

Вообще говоря, если R

– некоторое отношение, t – переменная, определенная на R, t1, t2, …, tn

– значения t (кортежи R), a f(t)



– ППФ, то формула  EXISTS t (f(t)) равносильна бескванторной формуле .F. OR f(t1)  OR  f(t2)  OR …  OR  f(tn).

Выражение FORALL  SX  (SX. Ci = ‘Яя’) может быть прочитано так: «В каждом кортеже отношения S значение атрибута Ci равно ‘Яя’».

В предыдущих обозначениях формула FORALL t (f(t)) равносильна бескванторной формуле .Т. AND f(t1) AND f(t2) AND AND f(tn). Очевидно, FORALL t (f(t)) равносильно NOT EXISTS t (NOT (f(t)).

Переменная t, входящая в ППФ, называется связанной

или свободной в зависимости от того, действует ли на формулу квантор по t.

Примеры:

f(t) – переменная t свободная;

f(t, q) – переменные t и q свободные;

EXISTS  t  (f(t, q)) – переменная t связанная, q – свободная;

FORALL

t (f(t)) AND g(t) -  первое вхождение t – связанное, второе – свободное.

В последней формуле одним и тем же символом t обозначены разные переменные, возможно, определенные на одной и той же области. В первой подформуле можно изменить имя переменной, не меняя смысла высказывания и значения предиката. Переменная служит здесь лишь для связи внутренних параметров предиката f( ) с внешним квантором. Второе вхождение переменной t

имеет совершенно иной смысл. Здесь g(t)

принимает то или иное значение в зависимости от значения переменной t. Заменить t на x, например, здесь нельзя, поскольку х и t могут принимать различные значения.

 

Связанная переменная подобна локальной переменной в языках программирования.

Формула, в которой все переменные связаны, называется закрытой. Например, FORALL x (EXISTS  y (f(x, y)))

– закрытая формула. Формула, содержащая по крайней мере одну свободную переменную, называется открытой.



Содержание раздела