Search code examples
database-schemadatabase-designgenealogy

Approach for storing circa and actual dates in genealogy data model


I am developing a geneology application, and I have a need to store dates for events. However I need to be able to support circa dates and actual dates, so I am thinking of having evendate and ceventdate (for the circa) columns so that I can index the event date when it is available.

However the more I think about the more I wonder whether I should have the following instead: eventyear, eventmonth, eventday, circa (definition) so that I can store years and months from analyzing the circa.

Thoughts?


Solution

  • I use the GEDCOM definition of dates. I think they did a pretty good job of thinking dates through and including much of what is needed.

    I recently wrote a blog post about GEDCOM dates. Some of what I said was:

    The basic date in GEDCOM is like this: dd MMM yyyy, e.g. 02 JUL 1917.

    Some things to know about that basic date: You can list either “day month year”, or “month year” or “just the year”. The day can be 1 or 2 digits, so 02 JUL 1917 or 2 JUL 1917 are allowed.

    For approximate dates, they use:

    • ABT date
    • CAL date
    • EST date

    where ABT means “about” and is for inexact date. CAL is calculated mathematically, e.g. from an event date and age, and EST is estimated based on an algorithm using some other event date.

    There are a bunch of other constructs as well, including interpreted dates and date phrases.

    Since you'll most likely want your genealogy application to import from GEDCOM and export to GEDCOM, you may want to decide on some date implementation that will be easy to translate to/from the GEDCOM format.