title: 1:1 relationship. should I create a new table for a single optional value?
body: <p>Let's say I have purchases.
  Those purchases can be optionally be refunded.</p>
  
  <p>I want to know if a purchase was refunded and what date did that occur. </p>
  
  <p>Should I have a single table for purchases and a column named "refunded_date" that by default is <code>null</code> and that will contain the date when refunded?</p>
  
  <p>Or should I create a new table called <code>refunds</code> where I have the <code>purchase_id</code> and the <code>refund_date</code>?</p>
  
  <p>From a Relational Model point of view I learned I should be creating a new table for it, but it will definitely take more disk space and will complicate queries (having to use a LEFT JOIN) and probably even make them slower.</p>
  
  <p>Example one:</p>
  
  <pre><code>Purchases
  ============
  id | product | purchase_date | email | license | refund_date
  -------------------------------------------------------------
  1  |    X    |        X      |    X  |    X    |     NULL
  2  |    X    |        X      |    X  |    X    |  2020-02-12
  </code></pre>
  
  <p>Case 2:</p>
  
  <pre><code>Purchases
  ============
  id | product | purchase_date | email | license
  ---------------------------------------------- 
  1  |    X    |        X      |    X  |    X   
  2  |    X    |        X      |    X  |    X    
  
  
  Refunds
  ============
  id | product_id | date
  ---------------------------------------------- 
  30  |    2      |  2020-02-12    
  </code></pre>