I prefer to use start date/end dates in the master or a start date/end date in a detail table.

The problem with moving the data to a "history" table is your "report on all records active or not" reporting becomes a UNION. Also, you have the potential of a duplicated unique key in the history table if the record is deleted, re-entered, and re-deleted.

A flag, on the other hand, doesn't give you much information. Sure, you can see what is active right now, but what about on 5/10/2002? Maybe the record was deleted, re-added, and re-deleted.

All in all, it depends on the specific situation. I try to avoid having an "active" bucket and a "history" bucket, but in some cases they make sense.