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