I carefully reviewed my data structure design in detail and found the three flaws that plagued me over the last month and a half. This may not be the sort of stuff that is interesting to read, but I want to quickly document it here, if only for my own future reference:
(1) I wanted to include all the 5 basic links, i.e. FAMC (Parent), FAMS (Spouse), HUSB, WIFE and CHIL, plus their reverse links. The result was too much redundant information, and added more confusion than help. Now I’m only including these links if there is detail information attached to them that needs to be printed, such as adoption, preferred parents, and other strange constructs that some programs include.
(2) I tried to make forward INDI and FAM references look the same as the reverse references. I now realize that is wrong. They should instead be structured similar to the other forward references such as Source references, except that the data is displayed rather than just the reference. An example is to list all the witnesses at a particular event.
(3) I did not earlier realize that the reverse INDI and FAM references should be displayed in a similar manner as the other main structures such as Source references. An example is to list all the events that a particular person witnessed.
This new general structure will allow Behold to include all the important linking information between events and people together. This is not easy to explain, but think about the two witness examples in (2) and (3) above. Once I polish it up, it will be unbelievably useful - and it will be a feature you won’t find in any other genealogy program.
With all that in hand, I finalized my data structures and worked last week at fixing some of the problems the changes introduced. I have a few formatting issues that I am going to try to resolve tonight and tomorrow morning. Then I’ll release what I’ve got. I’ve got to release it tomorrow before the current version expires.