#алгоритм #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 как самая известная, библиотеки-коннекторы есть подо все что шевелится
Комментариев нет:
Отправить комментарий