title: Coding a cart: When the user checks out, should I copy every piece of product data into an "order product" table to save its state?
body: <p>Should I clone the entire product along with all related data into another table for posterity, effectively logging the current state of the product, as it was when the user purchased it?</p>
  
  <p>Pros: </p>
  
  <ul>
  <li>The product (as the user saw it when it was purchased) is held for posterity and never changed. If the product data changes over time, it won't change the original order information.</li>
  </ul>
  
  <p>Cons: </p>
  
  <ul>
  <li>A lot of added complexity: 
  
  <ul>
  <li>Several more tables required in the database.</li>
  <li>Similar schema to keep track of.</li>
  </ul></li>
  <li>More disk space used.</li>
  </ul>
  
  <p>Does anyone have a clever solution to this conundrum? </p>