Представление родственных связей (генеалогического дерева) в виде графа
Прочитал статью Фамильный вики-движок Bonsai: 6 лет спустя и вспомнил что в своё время были планы сделать что-то подобное. После того как я попробовал использовать некоторые существующие решения (особенно одно в котором предлагалось при добавлении человека указать кем он является по отношению к другим и список на 100500 позиций вида сын, дочь, мама, папа, дедушка и т.д. и т.п. ) была разработана собственная схема хранения родственных связей в виде графа. В качестве вершин графа выступают люди, а в качестве ребер отношения между людьми. При этом типов отношений всего два: Родитель->Ребенок (связь имеет направление от родителя к ребенку) Брачный союз (связь равноправна и не имеет направления) С помощью отношений этих двух видов возможно задать родство любой сложности.