Изменения

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

Datalog и рекурсия

6 байт убрано, 12:07, 20 декабря 2021
Получить имена обоих родителей каждого человека (Name, Father, Mother)
Пусть есть таблица <code>Person(Id, Name, MotherId, FatherId)</code>
====Получить имена обоих родителей каждого человека (Name, Father, Mother)====
Атомы в Datalog находятся в неявной конъюнкции, поэтому чтобы записать утверждение Запишем конъюнкцию атомов: "FId FatherId - отец NName", а MId "MotherId - мать NName", "Имя FatherId - FatherName", запишем их через запятую"Имя MotherId - MotherName": Parents(NName, FNFatherName, MNMotherName) :- Person(_, NName, FIdFatherId, MIdMotherId), Person(FIdFatherId, FatherName, _, FN, _), Person(MIdMotherId, MNMotherName, _, _). 
====Получить для каждого человека всех его родителей (Name, Parent)====
Воспользуемся тем, что в Datalog при определении отношений дважды, они объёдиняются:
Анонимный участник

Навигация