Why is this project needed? There is plenty of theoretical material on temporal data. However if you are working on a project you donot have time or maybe background to read this an find your way. And it does not pay off for practitioners to read all this academic stuff. Most of it is not available as working solution. And it will not as far as I can see in my crystal ball. Nevertheless I do recommend that you take a look at some of these resources. The toolkit definitely builds upon this work. Therefore I have chosen a dual line strategy. First I will give a short summary of the theory needed to work with this software. If you like me develop a deeper interest in temporal data there is a page with further references.
If we want to store time related data in the database we need to be specific about what time we mean.
Valid time describes at what time a certain fact applies to the domain of interest.
Example
Fred worked in the Testing department as junior tester from 15-jan-2004 until 16-dec-2007. It is clear that om 12-may-2005 Fred worked in Testing.
Transaction time describes what was recorded in the database at a certain time.
Example
The database has recorded until 19-june-2008 that Fred lives in Oxford Street 25. After 19-jan-2008 the database has record that Fred now lives on Sunset Boulevard 49. We have probably received a card from Fred that he moved on 12-june-2008. But instead of this valid time we record the database transaction time.
Bitemporal data records both valid time and transaction time.
Example
The database recorded from 21-dec-2003 until 19-jan-2008 (transaction times) that Fred lived in Oxford Street 25 since 12-aug-1991 (valid time). From 19-june-2008 (transaction time) it was recorded that Fred lived in Oxford Street 25 from 12-aug-1991 until 12-june-2008 (valid time), and after 12-june-2008 (valid time) on Sunset Boulevard 49.