In truth, I'm less interested in genealogy than in writing computer code. When I first started working with relational database management systems (RDBMS), with relational FileMaker Pro, I figured a family tree would be an interesting case study so I created a family tree database program, not so much to capture data but to exercise all the relationships created by family. Once I had the app functioning I started adding my immediate family data. In 2002 I discovered a distant cousin in Australia whose father had emigrated from Germany to South Africa in the 1930s to escape NAZI Germany. Genealogy was one of his hobbies and he recorded the family as far back as my father's grandfather who was probably born between 1820 and 1850. I now have 192 names and about seven generations in the database. Very meager information, just names, dates and a few brief notes.
From a computational point of view, it is very interesting. All you have to enter is a name and links to father, mother and spouse (or spouses). That is enough for the software to build a complete family tree. The challenge I'm taking up now is how to create an interface to "traverse the tree" (geek speak for understanding and navigating the family tree). I've downloaded "Reunion" to see how they do it. I was not overwhelmed.
Years ago I worked on a Help Documentation System and I ran into the same "navigation" problem. There the solution is simple, keep the structure flat, two or three layers deep only. But a family tree is as deep as the number of generations recorded in the database, no getting around it. Therefore the solution has to be a better graphical interface for drilling down and getting back up, without "getting lost in hyper-space" as I used to term the problem.
But I'm getting ahead of myself. When you hear "cloud computing" they are talking about the data being on a web server somewhere and visualizing (and manipulating) the data in a browser on a computer, tablet or smart-phone. It no longer makes sense to write code for a computer (Reunion). Instead, the new way is the web-app which is what I'm doing with my FamilyTree. Being on the web it has all the advantages of a social network. Once I work out a passwords system that limits editing privileges to close family, I want to make it available to all my family. Then we can have a dozen people updating our tree.
Google Makes Life Simple
When I started Software Times I wanted to create a discussion forum modeled on CompuServe. Try as hard as I might I never managed to get an algorithm working that would display the discussion threads as required and research was much more difficult because they had not yet invented search engines. Now, with Google, you can find a dozen articles explaining the intricacies of hierarchical databases, how to store them and how to navigate them.
Sex Makes Life Complicated
Most hierarchical databases deal with simple, single parent trees, much like asexual reproduction, where a single parent gives birth (by division) to a single offspring at a time. Maybe it's a sibling and not really an offspring as in sexual reproduction. But with sexual reproduction each node or child has two parents, not one, and this complicates the hierarchical tree structure.
Finding immediate family in a genealogical family tree is a simple computation but not so when you want to find all descendants or all ancestors of a particular person. An asexual hierarchical databases looks very much like a tree but a genealogical database looks more like a forest with the trees joined by marriage. This problem is relatively easy to solve by creating a single common ancestor or NULL node. I have yet to figure out how to deal with the fact that we have two parents, not one. This is what I'm working on now.
select ancestors using query like a recursive function
Storing Hierarchical Data in a Database Article
- the family tree software for Macintosh, iPhone, and iPad.