Идея, която идва от схемата Geneapro и RootsMagic .
person
------
person_id
name (etc)
life_event_types
----------------
life_event_type_id
life_event_type_description (divorce, marriage, birth, death)
life_events
-----------
life_event_id
life_event_type_id
life_event_description
life_event_date
life_event_roles
----------------
life_event_role_id
life_event_role (mother, father, child)
person_event_role
-----------------
person_id - who
life_event_id - what happened
life_event_role_id - what this person did
Така че бихте могли да имате житейско събитие от тип "раждане", а role_id ви казва кои са били родителите и кой е детето. Това може да се разшири и до бракове, смъртни случаи, разводи, приемни родители, заместващи родители (където може да имате 3 или 4 родители с много сложна връзка) и т.н.
Що се отнася до съхраняването на по-отдалечени връзки, можете да ги изчислите. Например, можете да изчислите бащата на всеки, като получите лицето, което има ролята на „баща“ със съответстващ event_id. След това можете да получите бащата на този човек и имате дядото на първоначалния човек. Навсякъде, където някой е неизвестен, създайте лицето с неизвестни данни.