Порядок выполнения запроса к процедуре "можно_путешествовать4"

Дерево доказательства, изображенное на рис. 1. 4, иллюстрирует выполнение запроса к процедуре "можно_путешествовать4".

Эта диаграмма читается точно так же, как и предыдущее дерево доказательства.

1. 7. Типы отношений Характеристики отношений

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

Ограничения, обеспечивающие целостность отношений. Свойства

Для аргументов любого бинарного отношения будет справедливо одно из следующих ограничений, обеспечивающих целостность отношения:

один-к-одному

один-к-многим

многие-к-одному

многие-к-многим

Помимо этого, некоторые отношения можно охарактеризовать наличием или отсутствием следующих свойств:

симметрия (асимметрия)

рефлексивность (нерефлексивность)

транзитивность (нетранзитивность)

Все эти свойства и ограничения, обеспечивающие целостность отношений, подробно рассматриваются далее.

Ограничения вида один-к-одному

Если бинарное отношение с аргументами Х и Y регулируется ограничением вида один-к-одному, обеспечивающим целостность этого отношения, то это означает, что для заданного значения Х существует единственное значение Y, удовлетворяющее этому отношению, а для заданного значения Y существует только одно значение X, которое удовлетворяет отношению. К примеру, отношение между человеком и его номером по социальному страхованию (сокращенно — "нсс") регулируется ограничением вида один-к-одному:

нсс ('Паула Смит', '347_22_5560').

(Примечание: любые символы, стоящие между апострофами, скажем, 'Паула Смит' в приведенном примере, образуют один атом.)

Применение ограничения, обеспечивающего целостность отношения

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

Предположим, что имеется программа сбора данных, в которой ограничения, обеспечивающие целостность отношений, принимаются во внимание при добавлении новых фактов. Далее предположим, что отношение "нсс/2" регулируется ограничением вида один-к-одному и что приведенный выше факт о номере Паулы по социальному страхованию уже содержится в базе данных. Если пользователь попытается ввести в базу еще один факт "нсс" о Пауле Смит, скажем,

нсс ('Паула Смит', '347_22_5561').

то программа сбора данных обнаружит это и откажется признать новый факт.

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

Соседние файлы в папке Гл.0,1,2,3,4,5,Предисловие