Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОЛОГ.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
98.8 Кб
Скачать

47. Создание базы данных, располагающейся в оперативной памяти.

Использование баз данных, располагающихся в оперативной

памяти (резидентных), вполне оправданно, если эта БД имеет не

слишком большой объем.

Для начала необходимо задать начальные данные и создать

саму базу. Затем наступает черед системы управления базой

данных (СУБД), ориентированной на диалог с пользователем. Лю-

бая система такого рода должна содержать как минимум такие

возможности:

1) занесение в базу новых данных ;

2) удаление данных из базы ;

3) выборка и вывод содержащихся в базе данных.

Для работы с таблицей данных необходим предикат, кодирующий эту ин-

формацию.

player(p_name, /* полное имя игрока (string) */

t_name, /* название команды (string) */

p_number, /* номер игрока (integer) */

pos, /* позиция игрока (string) */

height, /* рост (string) */

weight, /* вес (string) */

nfl_exp, /* стаж выступлений (integer) */

college) /* университет (string) */

Турбо-Пролог требует, чтобы все утверждения одного и

того же предиката были сгруппированы в одном месте. В соот-

ветствии с этим требованием группа предиката player записы-

вается в виде:

player("Dan Marino","Miami Dolphins",13,"QB",

"6-3",215,4,"Pittsburgh").

Следующей фазой создания БД является задание соответствующих описаний типов.

domains

p_name, t_name, pos, height, college = string

p_number, weight, nfl_exp = integer

Предикаты динамической базы данных описываются в разделе программы database.

database

dplayer(p_name, t_name, p_number, pos,

height, weight, nfl_exp, college)

Когда программа запускается на счет, утверждения дина-

мической БД помещаются в оперативной памяти отдельно от

"обычных" утверждений.

В разделе predicates следует описать все другие преди-

каты, используемые в программе.

predicates

repeat /* повтор */

do_mbase /* цель */

assert_database /* создание БД */

menu /* интерфейс в виде меню */

process(integer) /* различные операции из перечня меню */

clear_database /* очистка БД */

player(p_name, t_name, p_number, pos,

height, weight, nfl_exp, college)

error /* выдача сообщения об ошибке

Как уже ранее говорилось, в начале работы программы не-

обходимо занести в динамическую БД предназначенную для нее

информацию, содержащуюся в статической БД. Эту задачу выпол-

няет предикат assert_database. Предикат clear_database пред-

назначен для решения смежной задачи: очиски БД перед оконча-

нием работы программы. Предикат player предназначен для задания начального содержимого базы данных. Когда программа начинает работу, эта информация засылается в утверждения предиката dplayer.

Предикат do_mbase является главным правилом (модулем)

программы. Он также присутствует в целевом утверждении. Пре-

дикат menu определяет правило, осуществляющее интерфейс с

пользователем при помощи меню. Предикат process(integer) оп-

ределяет различные правила, выполняющие все возможные опера-

ции над БД.

Раздел программы goal содержит правило do_mbase:

goal

do_mbase.

Исходная информация для БД помещается в начале раздела

clauses. Когда программа запускается на счет, подцель assert_

database создает утверждения dplayer, содержащие такие же

данные, что и утверждения статического предиката player, и

заносит эти утверждения в динамическую БД. После этого можно

добавлять, удалять или просматривать данные, выбирая соот-

ветствующие опции меню.