Скачиваний:
28
Добавлен:
01.05.2014
Размер:
356.35 Кб
Скачать

Процедура "характер"

Процедура "характер" показывает все текущие критерии выбора, связанные с заданным состоянием.

характер (Мир) :-

послать (Мир, за (тип. Т)),

write ('тип: '),

(nonvar (Т), write (Т); true), nl,

послать (Мир, за (марка, М)),

write (' марка: '),

(nonvar (М), write (М); true), nl,

послать (Мир, за (вес. В)),

write (' вес: '),

(nonvar (В), write (В); true), nl,

послать (Мир, за (поверхность, П) ),

write (' поверхность: '),

(nonvar (П), write (П); true), nl,

послать (Мир, за (цвет. Ц) ),

write ('цвет: '),

(nonvar (Ц), write (Ц); true), nl, ;

6.7. Описание изменений базы данных

Динамическая база данных это база данных, в которую время от времени требуется вносить изменения, отражающие изменения структуры описываемой системы. Один из методов реализации динамической базы данных заключается в деструктивном редактировании базы данных при необходимости внесения в нее изменений. К сожалению, при деструктивном редактировании исчезает возможность возврата к состоянию базы данных, существовавшему ранее. Это затрудняв анализ изменений базы данных.

Аксиома фреймов является альтернативной концепцией реализации динамической базы данных. Если необходимо внести изменение, то исходная база данных остается неизменной, а записывается собственно изменение. Текущая форма базы данных получается при использовании ее исходной формы с учетом сделанных изменений. Ниже формулируется аксиома фреймов, в которой U обозначает любое отношение, а состояние S + 1 является результатом выполнения действия А в состоянии S.

Аксиома фреймов

Отношение U будет соблюдаться в состоянии S + 1,

являющемся результатом выполнения действия А б состоянии S,

если U соблюдается в состоянии S,

а А не влияет на U.

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

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

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

либо будет перекрыта новым значением (т.е. изменится), либо будет опровергнута (т.е. удалена). Помимо этого, в новое состояние могут быть введены новые фразы.

Мир кубиков

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

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

Описываемая версия мира кубиков основывается на базе данных, состоящей из фактов "на/3", при помощи которых задается положение кубиков. Факт «на(S, А, В)» означает, что в состоянии S кубик А находится на верхней части кубика В. Процедура "поместить" позволяет пользователю перемещать кубики, входящие в мир, на другие места, что соответствует переходам к новым состояниям базы данных "на". Начальное состояние базы данных "на" носит название "I", следующее состояние -"2 "и т.д.

Характеристики отношения "на"

Отношение "на" — это отношение либо между двумя кубиками в некотором состоянии, либо между кубиком и столом. Согласно определению данное отношение несимметрично, нерефлексивно и нетранзитивно. Все кубики имеют одинаковый размер, отношение "на" между двумя кубиками регулируется ограничением вида один-к-одному, обеспечивающим целостность. Иными словами, если кубик А уже находится на кубике В, то на кубике В не может быть никаких других кубиков. На столе может поместиться более одного кубика.

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

Первоначально база данных, описывающая мир кубиков, состоит из следующих фактов:

на(1, а, стол).

на(1, б, стол).

на(1,в,а).

на(1, г. в).

текущее_состояние (1).

Факт "текущее_состояние" содержит наименование самого последнего состояния базы данных.

Соседние файлы в папке Гл.6,7,Прилож.,Допол