Hi Joel:
My wife is involved in genealogy and I set myself the task of demonstrating the minimal table requirement for a genealogical db. Taking it to a proof of concept stage has convinced me of three things:
(i) Two tables are sufficient. One is a "person" table that stores a person's names and gender, together with foreign keys to parents. This is sufficient to determine any filial relationship. The other table I have called "persondates" and it stores all the significant events in a persons life but would minimally record birth marriage and death. This second table would also need to allow for a foreign key to link to a spouce in the case of a marriage event.
(ii) It would not be best practice to have a "cross reference table". This would be akin to recording the result of a calculation. Grandma's brother will always be my Great Uncle because that is what we call our father's/mother's parent's parents' male children. We search out the link when we need it rather than recording all the possible options.
(iii) I can't remember what the third thing was but it was really good!
(I love Tennessee, having had five very enjoyable years in Grad School at Vanderbilt 75-80)
Regards
Godfrey
Godfrey Nicholson
Ofek Technologies Ltd
Auckland
New Zealand