@Vetka_in_code

Как реализовать отношение для двух любых представителей,находящихся в разных частях базы данных?

Задание:Создать запрос к базе данных (БД), который выдает иерархическое отношение для двух любых представителей рода (т.е. выясняется, кто является предком, а кто - потомком).
База данных:
parent('Rurik', 'Igor').
parent('Igor', 'Olga').
parent('Olga', 'Svyatoslav Igorevich').
parent('Svyatoslav Igorevich', 'Yaropolk').
parent('Yaropolk', 'Svyatopolk Okoyanny').
parent('Svyatoslav Igorevich', 'Vladimir Svyatoy').
parent('Vladimir Svyatoy', 'Yaroslav I Mudry').
parent('Yaroslav I Mudry', 'Svyatoslav').
parent('Svyatoslav', 'Oleg').
parent('Oleg', 'Vsevolod II').
parent('Yaroslav I Mudry', 'Izyaslav I').
parent('Izyaslav I', 'Svyatopolk').
parent('Yaroslav I Mudry', 'Vsevolod I').
parent('Vsevolod I', 'Vladimir Monomah').
parent('Vladimir Monomah', 'Mstislav Veliky').
parent('Mstislav Veliky', 'Izyaslav II').
parent('Vladimir Monomah', 'Yaropolk II').
parent('Vladimir Monomah', 'Yuriy Dolgoruky').
parent('Yuriy Dolgoruky', 'Mikhail I').
parent('Yuriy Dolgoruky', 'Vsevolod Bolshoe Gnezdo').
parent('Vsevolod Bolshoe Gnezdo', 'Yuriy II').
parent('Vsevolod Bolshoe Gnezdo', 'Yaroslav II').
parent('Vsevolod Bolshoe Gnezdo', 'Konstantin I').
parent('Yaroslav II', 'Andrey').
parent('Andrey', 'Vasiliy').
parent('Vasiliy', 'Konstantin II').
parent('Konstantin II', 'Dmitriy Suzdalskiy').
parent('Yaroslav II', 'Vasiliy Kostramskoy').
parent('Yaroslav II', 'Yaroslav III Tverskoy').
parent('Yaroslav III Tverskoy', 'Mikhail II Svyatoy').
parent('Mikhail II Svyatoy', 'Alexandr II').
parent('Yaroslav II', 'Alexandr Nevskiy').
parent('Alexandr Nevskiy', 'Andrey Gorodeckiy').
parent('Alexandr Nevskiy', 'Dmitriy Pereyaslavskiy').
parent('Alexandr Nevskiy', 'Daniil Moskovskiy').
parent('Daniil Moskovskiy', 'Yuriy III Moskovskiy').
parent('Daniil Moskovskiy', 'Ioan I Kalita').
parent('Ioan I Kalita', 'Simeon Gordiy').
parent('Ioan I Kalita', 'Ioan II Krotkiy').
parent('Ioan II Krotkiy', 'Dmitriy Donskoy').
parent('Dmitriy Donskoy', 'Vasiliy I').
parent('Vasiliy I', 'Vasiliy II Temniy').
parent('Vasiliy II Temniy', 'Ioan III').
parent('Ioan III', 'Vasiliy III').
parent('Vasiliy III', 'Ioan IV').
parent('Ioan IV', 'Fedor').

Пример:
?- relations('Rurik', 'Oleg').
Rurik - предок, Oleg - потомок
Как это реализовать?
  • Вопрос задан
  • 42 просмотра
Пригласить эксперта
Ответы на вопрос 1
solotony
@solotony
покоряю пик Балмера
1) добавить поле "предок"
2) добавить поле "потомок"
3) добавить таблицу с отношением "предок, потомок"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы