Database: Storing multiple Types in single table or multiple intermediate delta tables
For  the employee table you should have two audit tables.


  1 employee_audit (employee_audit_id , ref_employee_id, reason,update_date, update_by)


and


  2 employee_audit_detail (id,ref_employee_audit_id , field_name, old_value)


So you have every value saved only once and you have a complete record,what was changed and by whom grouped the date it was change.

Programming is every time you save data for an employee , you save first a new row in employee_audit  get the last id and then enter a new row for every changed value the name of the value and old  content