Изменения

Перейти к: навигация, поиск

Datalog и рекурсия

972 байта добавлено, 00:53, 20 декабря 2021
Примеры запросов
Ivans(Id, LastName) :-
Students(Id, <font color=green>'Иван'</font>, LastName).
===Имена родителей===
Пусть есть таблица <code>Person(Id, Name, MotherId, FatherId)</code>
====Получить имена обоих родителей каждого человека (Name, Father, Mother)====
Атомы в Datalog находятся в неявной конъюнкции, поэтому чтобы записать утверждение "FId - отец N, а MId - мать N", запишем их через запятую:
Parents(N, FN, MN) :- Person(_, N, FId, MId),
Person(FId, _, FN, _), Person(MId, MN, _, _).
====Получить для каждого человека всех его родителей (Name, Parent)====
Воспользуемся тем, что в Datalog при определении отношений дважды, они объёдиняются:
Parents(N, FN) :- Person(_, N, FId, _),
Person(FId, FN, _, _).
Parents(N, MN) :- Person(_, N, _, MId),
Person(MId, MN, _, _).
==Ограничение отношений==
Анонимный участник

Навигация