Over de meeste opmerkingen van Peter heb ik nog geen mening (kijk nog te kort naar de database, maar de laatste klopt. Je maakt het jezelf nodeloos ingewikkeld, omdat je systeem niet gaat werken. Een stamboom is (normaal gesproken) niet eindig, en heeft ook geen begin. Meestal begin je er gewoon mee, en start je dus met het invoeren van personen. Ok, dat heb je gedaan: al je familieleden staan er in. En je vrienden

.
Volgende stap: de kinderen. Daarvoor heb je nu een aparte tabel, maar dat is onzinnig, zoals zal blijken. Want kinderen blijven niet klein, die gaan een relatie aan, en krijgen zelf óók kinderen. En hun kinderen ook weer.
En dan kom je historische gegevens tegen van je ouders, en die ga je óók invoeren als persoon. En dan blijkt dat die mensen óók kinderen hebben (jou bijvoorbeeld), en dat wil je dan ook weer ergens kwijt Tipje van de sluier: niet in jouw extra tabel

). En hoe meer je graaft, hoe meer gegevens je vindt en hoe meer personen je gaat toevoegen met kinderen.
Hoe los je dit dus op? Heel simpel: voeg in de tabel tPersonen twee velden toe die je vult met de PersoonID van de betreffende ouder(s). En daarmee is je stamboomprobleem gelijk opgelost, want als je een persoon opvraagt met kinderen, kun je met de juiste query ook gelijk de kinderen zien. En, indien gewenst, de kinderen van die kinderen. Die 'stamboom' kun je net zo diep maken als je zelf wilt of nodig hebt.
Je hoeft dus alleen een recursieve tabel te hebben waarin je alle gegevens per persoon invult,
inclusief twee velden voor de resp. (biologische) ouders.
Daarmee heb je tegenwoordig, zoals Peter al aangaf, wél een nieuw probleem, want wat doe je met ouders van hetzelfde geslacht? In de ene variant heb je op zijn minst een draagmoeder nodig, waarvan nog maar de vraag is of die het leuk vind om in jouw database vastgelegd te worden, en in de andere een donor, waarvoor hetzelfde geldt. Als die al niet anoniem is.
Dat moet je dus óók opvangen. De anonieme donor is het makkelijkst (denk ik) door daar een aparte persoon voor te maken, en dat geldt ook voor een anonieme draagmoeder. Bij een erkende draagmoeder zou je die persoon als persoon kunnen opvoeren, maar dan zou je dus in de personentabel
drie oudervelden nodig hebben. Overigens lost die constructie óók het probleem op van een erkende donor, want die kan je dan waarschijnlijk ook als persoon opvoeren.
Ik ben het wel met Peter eens dat je de tabel voor familiegebeurtenissen gewoon in één tabel moet houden, want een gebeurtenis is nu eenmaal een eenmalige activiteit, waar je hooguit middels een koppeling meerdere personen kan hangen. Zo zijn bij een huwelijk doorgaans twee personen betrokken

.
Nog een puntje: je slaat de NAW gegevens op in de tabel tPersoon. Dat kan, maar lijkt mij niet handig want dan heb je geen enkele historie meer over de personen. Zelf zou ik dus een koppeltabel gebruiken waarin je de verschillende adressen (en periodes) opslaat zodat je daarmee je stamtabel een stuk leuker maakt. Zelf heb ik bijvoorbeeld foto's die gerelateerd zijn aan oudere adressen, en die kun je dus aan die adressen koppelen. Om maar wat te noemen.
Ik zou dus in ieder geval eerst eens goed nadenken over het totale concept, want ik zou op deze manier niet doorgaan. Terug dus naar de tekentafel

.