For storing changes to records in table, I think there are 2 ways to do it (there may be more but I know of 2 ways)

1. Using trigger so that for any updates to table A ... it will automatically trigger an insert to table A_log for the previous value.

2. Using just 1 table (like table A) and simply just insert new records every time. Then on SELECT, get the latest one that matches criteria. (well, or have a column that says active/inactive or something like that)

Of these 2 approach, which design (and why) is better? Also, if there's another way to do this, I'd like to hear about it.