2. 5. Способы представления базы данных Пять способов представления

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

1) множество фактов, каждый из которых соответствует целостному информационному элементу*) (т. е. записи) базы данных;

2) множество фактов, каждый из которых соответствует паре значений атрибут/ключ;

3) список структур, в котором каждая структура соответствует записи базы данных;

4) линейная рекурсивная структура, где каждая структура соответствует записи базы данных, к примеру, структура "кл/4";

5) рекурсивная структура в виде двоичного дерева, в которой каждый узел дерева соответствует записи базы данных.

В оставшейся части раздела показано представление базы данных "служащий/4" каждым из пяти названных способов. Для каждого представления приводится запрос, позволяющий найти всех служащих отдела 100.

1) Представление целостных информационных элементов в виде фактов

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

% Имя Отд. Должность Оклад

служащий1 (брайен, 100, оператор, 20000).

служащий1 (нэнси, 200, начальник, 71000).

служащий1 (ральф, 100, менеджер, 71500).

Нижеследующий запрос позволяет отыскать всех служащих отдела 100:

|? -служащий1 (И, 100, Д, 0).

И=бранен

Д = оператор

0=20000;

И = ральф

Д= менеджер

О = 71500;

нет

2) Представление атрибутов в виде фактов

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

отдел (брайен, 100).

должность (брайен, оператор).

оклад (брайен, 20000).

Все атрибуты служащего можно объединить при помощи правила:

служащий2 (Имя, Отд. Долж, Окл): -

отдел (Имя, 0тд),

должность (Имя, Долж),

оклад (Имя, Окл).

Это правило определяет неявную базу данных того же вида, что и приведенная ранее явная база данных "служащий1". Для такого правила можно воспользоваться предыдущим запросом, который даст те же результаты, что и ранее:

|? - служащий2 (И, 100, Д, О)

И= брайен

Д=оператор

О=20000;

И=ральф

Д = менеджер

0=71500;

нет

Применение атрибутов является более гибким средством представления базы данных, чем применение целостных информационных элементов, поскольку новые атрибуты можно добавлять без переписывания заново всей существующей базы данных. Приведем пример правила, в котором предписывается выдача премии в 1000 долл. всем служащим отдела 200. Это описывается при помощи атрибута "премия":

премия (Имя, 1000): - отдел (Имя, 200).

Для некоторых служащих можно ввести атрибут "стаж_работы":

стаж_работы (брайен, 2).

стаж_работы (нэнси, 1).

Добавление новых атрибутов "премия" и "стаж_работы" никак не повлияет на приведенное выше правило "служащий2".

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