Страницы

Поиск по вопросам

среда, 26 февраля 2020 г.

Алгоритм генеалогическое дерево

#алгоритм #php #mysql


Есть задумка сделать вывод данных генеалогического дерева. Допустим что данные вводятся
сверху вниз и нет пока дополнительных ответвлений, просто ёлка, т.е. ни любовниц ни
отчимов пока нет. Вопросы следующие
 1. Каким образом осуществить привязку между поколениями и внутри поколений?
 1.2 Допустим, заполняя таблицу я сразу же привязываю супруга к ID супруги, а в строке
супруги указываю ID потомства, но тогда позже возникнут затруднения при указании детей
не от данного супруга.
 2. Как лучше заполнять базу? Сделать 1 таблицу с данными о людях и 2 таблицу с данными
о связях или тут можно придумать что-то?
Может у кого то есть готовый подходящий скрипт, или кто то натыкался на похожий алгоритм?
Буду рад любой помощи))
Хорошо, делаю таблицу families

    famID   int(11) // PRIMARY KEY
    wedding date //Дата свадьбы
    divorce date //Дата развода
    dive       tinyint(1) //Состояние брака
    father   int(11) // ID номер из individuals 
    mother  int(11) // ID номер из individuals

И таблицу individuals

    1   ID      int(11) // PRIMARY KEY
    2   name        varchar(50) //Имя
    3   firstname   varchar(50) //Фамилия
    4   gender      char(1) //Пол
    5   birth       date //Дата рождения
    6   death       date //Дата смерти
    7   comment     varchar(200) //Комментарии
    8   famC        int(11) //famID

Итак, families будет отображать все связи, если это муж с женой, то присваивается
famID номер. Если их ребенок, то в individuals записывается в famC номер семьи родителей.
Вроде должно работать...    


Ответы

Ответ 1



Как вариант Вы можете в таблице person хранить всю нужную Вам информацию о человеке, в том числе и id-шники его родителей (foreign key). В другой таблице хранить "свидетельства о браке" в одной колонке id мужа, в другой - id жены. При таком раскладе Вы всё что угодно сможете вытворять. SQL - штука гибкая. Надеюсь помог.

Ответ 2



Для обработки генеалогических данных традиционно используется специально разработанный для этого язык - Пролог используйте графовые БД neo4j как самая известная, библиотеки-коннекторы есть подо все что шевелится

Комментариев нет:

Отправить комментарий