Главная » SQL, Базы данных » ПРЕДИКАТЫ И ВЫСКАЗЫВАНИЯ

0

Еще раз рассмотрим формальную версию примера 1 ("Значение статуса каждого поставщика должно находиться в пределах от 1 до 100 включительно").

FORALL s# € S#, sn 6 NAME, st € INTEGER, sc € CHAR ( IF { S# s#, SNAME sn, STATUS st, CITY sc } € S

THEN st > 1 AND st < 100 )

Эта формальная версия представляет собой логическое выражение. Но следует отметить, что в нем4  участвует переменная, а именно переменная отношения поставщиков  S. Поэтому мы не можем определить, каковым является значение этого выражения (т.е. не можем определить, какое логическое значение оно принимает), до тех пор, пока не подставим конкретное значение вместо этой переменной (вообще говоря, в действительности

4 В этом выражении участвуют также несколько переменных области значений, но, как было показано в главе 8, переменные  области  значений  не  являются  переменными  в  том  смысле,  какой  им   придается  в  языке программирования, а в данной главе термин "переменная" рассматривается именно в  том смысле, который ему придается в языке программирования (если явно не указано иное).

различные подстановки должны приводить к получению разных истинностных значений). Иными словами, данное выражение является предикатом, а переменная S служит формальным  параметром  этого  предиката.  Поэтому,  когда  возникает  необходимость "конкретизировать" данный предикат (иначе говоря,  когда нам требуется проверить ограничение), мы предоставляем в качестве  фактического параметра такое отношение, которое является текущим значением переменной отношения S (а переменная отношения S — единственный  формальный параметр), и только после этого появляется возможность вычислить это выражение.

Теперь, после конкретизации предиката (которая, по сути, сводится к  замене  его единственного формального параметра некоторым фактическим параметром), мы приходим к некоторому выражению с истинностным значением, которое вообще не включает переменных, а содержит лишь значения. Аналогичные замечания касаются и ограничений, которые распространяются на два, три, четыре или на любое другое количество переменных отношения; так или иначе, когда возникает необходимость вычислить выражение (т.е. когда  требуется  проверить  ограничение), достаточно  заменить  каждый

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

■     Солнце — это звезда.

■     Луна — это звезда.

■     Солнце находится от Земли дальше, чем Луна.

■     Джордж Буш победил на президентских выборах в США в 2000 году.

Выяснение того, какие из этих высказываний являются истинными, а какие ложными, оставляем в качестве упражнения для читателя. Но следует отметить, что не все высказывания являются истинными; широко распространенная ошибка состоит в том, что все высказывания рассматриваются исключительно как истинные.

На основании материала, приведенного в этом разделе, можно сделать  следующие выводы: ограничение, определенное формально, становится предикатом, но при проверке этого ограничения вместо формальных параметров предиката подставляются фактические параметры, в результате чего предикат сводится к высказыванию, и к такому высказыванию затем предъявляется требование, чтобы его значение было равно TRUE.

Источник: Дейт К. Дж., Введение в системы баз данных, 8-е издание.: Пер. с англ. — М.: Издательский дом «Вильямс», 2005. — 1328 с.: ил. — Парал. тит. англ.

По теме:

  • Комментарии