I'm writing an app that contains the following tables: (1) employee_type, (2) employee and (3) employee_action.
Employee_action is foreign-keyed to employee, and contains a description of what happened and the date of the event, just as you might expect.
However, employees can change their type over time (promotion, demotion, relocation, etc). If my schema was just as simple as this, then you might generate a historical report that says that John was the CEO of the company when he was out delivering pizzas 10 years ago.
What would be the best way for me to save the fact that employees had a certain set of characteristics at the time that they performed an action, which are not necessarily their characteristics at the present time?
I'm stating my problem simply here. I have a lot more tables than 3, and the employees position is not the only characteristic that i'm worried about. It's not an option for me to just denormalize everything and make a history table with every possible employee field in it.
Thanks, I hope this is clear.