Hinsichtlich Um die Struktur zu zeichnen, ist es schwierig, Kollisionen (Linien kreuz und quer) zu vermeiden, wenn mehr als 2 Generationen angezeigt werden. Also, wenn Ihre Anwendung es erlaubt, es auf zwei zu halten, das ist großartig. Ich habe eine Reihe von Programmen geschrieben, die diese Art einer Darstellung verwenden, entweder vertikal:
oder horizontal:
Wenn Sie auf einmal angezeigt mehr Generationen benötigen, können Sie Ich muss mir andere Darstellungen einfallen lassen und sie werden vielleicht ziemlich spärlich, nur damit du jeden in der gleichen Generation auf dem gleichen Level zeigen kannst.
In Bezug auf wie die Beziehungen als Datenstrukturen darstellen - nun, es ist chaotisch. Die einfachste, sauberste Sache ist, dass zwei Individuen, die Mutter und Vater derselben Person sind, "verheiratet" sind. Aber wie möchten Sie mehrere Partner, Stiefkinder und dergleichen repräsentieren? Das ist schwer zu beantworten, ohne mehr darüber zu wissen, was genau dein Programm tun soll. Vielleicht hat Ihr Datensatz diese Komplikationen nicht. Wenn es jedoch so ist, ist es besser, zuerst die komplizierten Fälle zu durchdenken - die einfachen Darstellungen eignen sich nicht für eine einfache Erweiterung, um die schweren Fälle abzudecken.
Zeichnen Sie (von Hand) einige der schwierigsten Fälle, die Sie erwarten; das wird vorschlagen, welche Art von Daten Sie aufzeichnen müssen und wie Sie sie organisieren. Die Auswahl, die Sie beim Zeichnen treffen (wer zuerst kommt, welche Symbole und Texte an den einzelnen Knoten verwendet werden usw.), wird Ihre Entscheidungen zur Datenstruktur beeinflussen.
Das Setzen von B's Mutter und A's Kind scheint redundant zu sein - und Redundanz führt zu Fehlern - wähle eins. Welcher? Nun, es gibt mehr Informationen, wenn Sie B's Mutter (A's Geschlecht) einstellen, und wir wissen, dass jede Person genau zwei Elternteile braucht, verglichen mit einer 0 oder mehr Kindern. Also würde ich dazu neigen, mit nur Einstellung B Mutter gehen; Sie können immer die Kinder eines beliebigen Individuums herausfinden, indem Sie über alles iterieren, um das Set auszuwählen, dessen Elternteil dem betreffenden Individuum entspricht. Und tatsächlich speichern Mutter & Vater Beziehungen (gegenüber einfachen Eltern-Beziehungen) kann Doppelarbeit reduzieren (vorausgesetzt, Sie speichern Geschlecht mit den Personen).
Wie möchten Sie es anzeigen? – Roman