A Family-Tree Database, Part 2

This is not my first attempt at a family tree, and I've tried professional programs and web sites before, one of which produced the following output, after I'd fed it some information about Toalsters that I remembered:

It's blurry, I admit, but it gives a quick view of what parts a family tree (or a family net for out purposes) consists of: People connected by Marriage to their spouses and by Birth to their parents and children.

To put it more abstractly, we need three elements in our family net:

  • People. Every Person has certain attributes, like a name, birth date and others, not usually found in family trees, like a postal address, CV, list of photos etc. Some Persons may not have all available attributes, such as a list of children, and some may have more than one attribute of the same kind, e.g. multiple marriage partners. Some Persons may have attributes whose values are not known, e.g. the eact birth date of someone we only know to have been born between 1890 and 1910. There must be some way of keeping track of such approximate, or even unnown but known to be existing (for someone who was defintely married, but we don't know when or to whom).
  • Marriages, having at least two attributes, obviously two Persons. A Marriage in our sense may just be a partnership (with children but without an legal commitment), there may be a starting (and possibly an ending) date involved, places, offspring etc.
  • Births connecting one Person to a pair of parents. If a child's mther, but not father, are known, then a “Dummy” Person must be introduced, since we know that someone of this kind must exist, even if we know no more about this Person. Such a Dumy may later acquire new attributes, for instance when the Dummy's name is discovered, or other children are borh to the Dummy. Therefore, all these Dummy Persons must be separate entities.

A complete example of such a structure is what we might call an atomic or minimal family, including a mother and father, their marriage and a child:

My next step will be to make up a list of attributes each data element (Person, Marriage an Birth) shold support.