Основные операции реляционной алгебры.
Пять основных операций определяют реляционную алгебру: объединение, симметрическая разность, декартово произведение, проекция и выборка. Покажем, как каждая из них выражается в логической программе.
Операция объединения строит одно n-арное отношение из двух n-арных отношений r и s. Новое отношение, которое обозначим r_union_s, является объединением r и s. Это отношение задается логической программой, состоящей из двух правил:
r_union_s (X1, X2, X3, …..Xn):- r (X1, X2, X3,……Xn).
r_union_s (X1, X2, X3, …..Xn):- s (X1, X2, X3,……Xn).
Пример:
блюдо (Х):- мясо (Х).
блюдо (Х):- рыба (Х).
Из примера следует, что объединение отношений можно использовать для обобщения знаний о предметной области.
Определение симметрической разности использует понятие отрицания:
АВ=(А∩¬В)υ(¬А∩В).
r_diff_s (X1, X2, X3, …..Xn):- r (X1, X2, X3,……Xn),
not s (X1, X2, X3,……Xn).
r_diff_s (X1, X2, X3, …..Xn):- s (X1, X2, X3,……Xn),
not r (X1, X2, X3,……Xn).
Пример:
футболист_либо_волейболист (Х):- футболист (Х),
not волейболист (Х).
футболист_либо_волейболист (Х):- волейболист (Х),
not футболист (Х).
Декартово произведение r_x_s может быть определено одни правилом:
r_х_s (X1, X2, X3, …..Xm, Y1, Y2, Y3,……., Yn):- r (X1, X2, X3,……Xm),
s (Y1, Y2, Y3,……., Yn).
Пример:
обед (X,Y,Z):- закуска (X), блюдо (Y), десерт (Z).
Проекция состоит в построении отношения. Использующего лишь некоторые аргументы исходного отношения:
r13 (X1, X3):- r (X1, X2, X3).
Пример:
аптека (6, «Невский, 110», «44-67-57»).
телефон_аптеки (NomApt, TelApt):-
аптека (NomApt, _, TelApt).
Чтобы получить выборку, достаточно в теле правила записать условия отбора:
аптека (6, «Невский, 110», «44-67-57»).
телефон_аптеки (NomApt, TelApt):-
аптека (NomApt, _, TelApt), NomApt <8.
калории («артишоки», 150).
значение (X, Y, Z):- калории (X, E),
калории (Y, P),
калории (Z, D),
V=E+P+D.
обед (X,Y,Z):- закуска (X), блюдо (Y), десерт (Z).
сбалансированный_обед (X,Y,Z):- обед (X, Y, Z), значение (X, Y, Z, V), V < 800.
Операция соединения двух или нескольких отношений определяется следующим образом:
факультет (NG, F) :- вторая_цифра (NG, G2), наим_фак (G2, F).
Здесь два отношения связаны общей переменной G2.