Ms-access – Implementing a family database using Access 2010

database-designms access

A while ago I asked this question about using Access 2007 to implement a family tree model. I had all the tables and relationships mapped out in a UML diagram but realised it was getting out of hand (for a "fun" project), so I carried on with what I was doing (storing all my data in Excel).

I've realised now that I still want to find a way to do this in Access 2010, simply to be able to query the data in a number of ways using SQL. The forms will also be a much better way for me to capture the data and represent it visually. Before I start drawing up the UML diagram again (want to start it with a fresh approach), I would like to know if anyone has any advice about the feasibility of doing such a project in Access?

I have been using Family Tree Maker (genealogical software) to store the family data as well, but I do not like some of its features, and there are features I feel it is lacking. I'm also not too concerned about actually having a physical family tree drawn and populated in front of me, but merely a way to store all the data in perfectly normalised tables and relating them correctly so I can query the data in a variety of ways.

edit I should clarify that it is not strictly a family database, but also a "membership" type database as well, where people are divided into various groupings not necessarily dependent on family relations. The TRIBE -> CLAN -> FAMILY -> SIM relations are quite simple, but adding in the CLASS cuts across family lines.

Best Answer

You can certainly create a database such as you describe using Access, if that is what you want to do. I don't see any reason why it would not be feasible. If you want to include other relationships (tribe/clan/family), make those part of your logical data model at the start.

"Perfectly normalized" is a relative term. Normalize according to what you are trying to accomplish. 5th normal form probably isn't going to help in a reporting database where denormalized happens to be what is needed. What you need is a data model that matches what you plan to do with it. Define the entities and relationships in terms of the problems you need to solve. Normalize where needed, and denormalize where needed.

MS Access is OK, I guess, as a front-end GUI builder, if your expectations aren't too great. I've never worked with an Access application that was really well done. A few of them have looked impressive, but they were hard to use. I'm not saying that it is not possible to develop a good one, but I suspect that a lot of people give up before they arrive there.

Whenever I have tried to develop using Access I have run into an endless series of restrictions on what I could do. The SQL dialect itself has many limitations, and the VB programming environment is full of pitfalls. I haven't worked with it now for some years, and I don't know if it has moved on to VB.Net since then, but working with "On Error" in the versions I used was awful. If you are going to do everything in Access then you are probably going to be stuck doing GEDCOM imports and refreshes in VB.

On the other hand there are many things you can do with the forms features, if you know them well. If you don't, you may waste a lot of time trying to do things and failing because you didn't know the particular trick for that task. I say this as somebody that doesn't know all the tricks.

I would like to be able to import my data into a SQL database as well, in order to do queries against it that typical genealogy software does not do. I came across your question while looking to see what might already be out there.

I would be inclined to use SQL Server, because SQL Server development is what I do for a living. If you don't know it well, it can present a steep learning curve. But importing, refreshing, and exporting GEDCOM data is straightforward, if not especially easy, using Integration Services, standard reports can be created using Reporting Services (or even Report Builder), and I might even see possible applications for attribute management using Master Data Services. This is all on top of a powerful database engine, and all of these components are available in the Developer Edition for about the cost of a genealogy software package, if you don't count the time to develop the application, which could be quite a lot.

Personally, I don't have time to develop something like this right now, and I will keep on looking. Good luck.