On 29/09/14 15:00, Abelard Hoffman
wrote:
I implemented a 2 table approach over 15 years ago for an insurance application. I used both an effective_date & and an as_at_date, no triggers were involved. I think a 2 table approach gives you more flexibility. The effective_date allowed changes to be made to the table in advance of when they were to become effective. The as_at_date allowed quotes to be made, valid for a period starting at the as_at_date. End users did not query the database directly, all queries were precoded in a 4GL called Progress backed by an Oracle database. The same could be done with a WildFly Java Enterprise AppSever (or some other middleware) and a PostgreSQL backend. Different use case, but the concept is probably adaptable to your situation. You may want a change table, that has a change_number that is in each type of table affected by a change. This would help for query type #2. I would be quite happy to contract to work out the appropriate schema and develop some SQL scripts to query & update the database, if you were interested. My approach would be to create a minimal database with sample data to validate the schema design and SQL scripts. Using a flag to indicate current record, seems inflexible. As some changes may not take affect until some time in the future, and you can't query the database to see what was the situation at a particular point in the past. For example: somebody complains about something that happened last Saturday near noon, how would you query the database to what it was like then? Cheers, Gavin |