title: Database design for point in time "snapshot" of data?
body: <p>How to design a database that supports a feature that would allow the application user to create a snapshot of their data at a point in time, a bit like version control.</p>
  
  <p>It would give the user the ability to go back and see what their data looked like in the past.</p>
  
  <p>Assume that the data being "snapshotted" is complex and includes joins of multiple tables.</p>
  
  <p>I'm looking for a way to give each application user the ability to snapshot their data and go back to it. Whole database snapshots is not what I'm looking for.</p>
  
  <p>EDIT: Thanks for your answers. The 6NF answer is compelling as is the suggestion to de-normalise the snapshot data due to its simplicity.</p>
  
  <p>Clarification: this is not a data warehousing question, nor is it a question about DB backup and restore; its about how to build a schema that allows us to capture the state of a specific set of related data at a point in time. The snapshots are generated by the application users when they see fit. Users do not snapshot the entire DB, just the data object they are interested in.</p>