title: How to store paid and unpaid orders in database?
body: <p>I'm designing a database where I need to store <strong>paid orders</strong> and <strong>unpaid orders</strong> of a <strong>customer.</strong> Both categories of orders have <strong>same attributes and relationships</strong> with other tables.</p>
  
  <p>I have come up with two designs:</p>
  
  <p><strong>1. Separate tables for the two categories of orders:</strong><img src="https://i.stack.imgur.com/AM2KR.png" alt="enter image description here"><strong>Pros:</strong> This design helps me to quickly differentiate between the orders in cart and those which are paid. Whenever a customer revisits my website, I just need to lookup the UnpaidOrder table for that particular customer and my cart is ready.</p>
  
  <p><strong>Cons:</strong> Whenever the payment for an order in UnpaidOrder table is made, I need to move the corresponding rows (of UnpaidOrder and other tables linked with it) to PaidOrder table and its corresponding tables. Also this design will require 2x number of tables: eg. UnpaidOrderDeliveryAddress, UnpaidOrderCreditCard, ... for relationships with UnpaidOrder and PaidOrderDeliveryAddress, PaidOrderCreditCard, ... for PaidOrder.</p>
  
  <p><strong>2. Common table for both categories and an extra Status attribute:</strong><img src="https://i.stack.imgur.com/oCQxJ.png" alt="enter image description here"><strong>Pros:</strong> I don't need to move multiple rows on payment of an unpaid order. Also, the number of tables for corresponding relationships is halved.</p>
  
  <p><strong>Cons:</strong> I'm storing an extra Status attribute for each row. Whenever a customer revisits my website, I need to lookup the Order table and I need to check the Status attribute (paid/unpaid) of each row for that particular customer. As a result, the cart will take a longer time to load.</p>
  
  <hr>
  
  <p><strong>My questions are:</strong></p>
  
  <ul>
  <li>Which is the better design in terms of performance, keeping in mind that there are numerous users and it is a heavy application?</li>
  <li>Are there any good alternatives for my requirement?</li>
  </ul>