Мне нужно построить семейное дерево в php и MySQL. Я очень удивлен отсутствием настраиваемого программного обеспечения для построения генеалогических деревьев с открытым исходным кодом, но я отвлекся. Я потратил много времени, читая о хранении орграфов MySQL и генеалогических деревьев. Для меня все имеет смысл: иметь таблицу с узлами (люди) и таблицу с ребрами (отношения).
Единственная проблема, с которой я столкнулся, это то, что я не уверен в наилучшем способе хранения отношений, которые не обязательно являются смежными, например, родственные отношения и отношения между бабушкой и дедушкой. Сначала я не думал, что это будет большим делом, потому что я могу просто незаметно принудить одного из родителей (у каждого есть родители), который разрешит эти связи.
Однако мне также нужно иметь возможность хранить отношения, которые могут не иметь общего родителя, такие как романтические партнеры. Все, что я прочитал, предполагает отношения между родителями и детьми, но поскольку романтические партнеры не имеют общего родителя (надеюсь), я не уверен, как сохранить его в таблице границ. Должен ли я использовать другую таблицу, или что? Если это в той же таблице, как мне это представить? Пока я делаю это с незнакомыми отношениями, я мог бы делать это и с семьей.
Подводя итог, три вопроса:
- Как мне представить латеральные отношения?
- Если у боковых отношений есть общий родитель, как мне их сохранить? Должен ли это быть флаг
family
в таблице, где хранятся другие боковые связи?
- Как сохранить отношения родитель-потомок, если дочерний элемент находится на расстоянии двух или более ребер (прародителя), но непосредственный родитель недоступен?
Любая помощь приветствуется, и если у кого-нибудь есть какие-либо предложения по созданию программного обеспечения для построения генеалогического дерева javascript / html, это было бы замечательно.