Логические программы и модель реляционной базы данных
Логические программы можно рассматривать как мощное расширение модели реляционной базы данных. Дополнительные возможности возникают здесь за счет применения правил. Многие введенные понятия имеют содержательные аналоги в теории баз данных, верно и обратное. Основные операции реляционной алгебры легко выражаются в логическом программировании.
Процедуры, построенные исключительно из фактов, соответствуют отношениям, при этом арность отношения совпадает с арностью процедуры. Пять основных операций определяют реляционную алгебру: объединение, симметрическая разность, декартово произведение, проекция и выборка. Покажем, как каждая из них выражается в логической программе.
Операция объединения строит одно n-арное отношение из двух n-арных отношений r и s. Новое отношение, которое обозначим r_union_s, является объединением r и s. Это отношение непосредственно задается логической программой, состоящей из двух правил:
r_inion_s(X,...,X
) ¬ r(X
,...,X
)
r_inion_s(X,...,X
) ¬ s(X
,...,X
)
Определение симметрической разности использует понятие отрицания. Введем предикат not. Интуитивно ясно, что цель not G истинна относительно программы Р, если G не является логическим следствием Р.
Определяется n-арное отношение r_diff_s для n-арных отношений r и s:
r_diff_s(X,...,X
)¬ r(X
,...,X
),not s(X
,...,X
).
r_diff_s(X,...,X
)¬ s(X
,...,X
),not r(X
,...,X
).
Декартово произведение может быть определено одним правилом. Если r – m-apное отношение, а s – n-арное, то (m+ n)-арное отношение r_х_s определяется так:
r_x_s(X,…,X
) ¬ r(X
,…,X
),s(X
,…,X
)
Проекция состоит в построении отношения, использующего лишь некоторые аргументы исходного отношения. Определение в любом конкретном случае не вызывает сложностей. Например, проекция r13 оставляет первый и третий аргументы трехарного отношения, т. е.
r13(Х,Х
) ¬ r(Х
,Х
,Х
).
Так же просто описывается любой конкретный случай выборки. Рассмотрим отношение, описывающее наборы, в которых третьи элементы больше вторых, и отношение, в котором первый элемент есть Смит или Джонс. В обоих случаях для иллюстрации используется трехарное отношение r. Первый пример состоит в построении отношения r1:
r1(Х,Х
,Х
) ¬ r(Х
,Х
,Х
),Х
>Х
.
Второй пример состоит в построении отношения r2, использующего дизъюнктивное отношение смит_или_джонс:
r2(Х,Х
,Х
) ¬ r(Х
,Х
,Х
), смит_или_джонс(Х
)
смит_или_джонс(смит).
смит_или_джонс(джонс).
Некоторые производные операции реляционной алгебры непосредственно выражаются в конструкциях логического программирования. Мы опишем две из них – пересечение и объединение. Если r и s- некоторые n-арные отношения, то их пересечение, r_meet_s, тоже является n-арным отношением, задаваемым единственным правилом:
r_meet_s(X,...,X
) ¬ r(X
,...,X
),s(X
,...,X
)
Прямому объединению точно соответствует конъюнктивный вопрос с общими переменными.