title: Database normalization - same fields, different tables
body: <p>Suppose I have 2 tables. Campaigns and Advertisers. Each of these table has some of the fields exactly same as follows (these is not complete list of fields, I am showing only ones that are same):</p>
  
  <p><strong>Edit:</strong>
  As asked in the comments I will explain more closely relationships.
  Each advertiser has 0 to many campaigns. 1 campaign belongs to exactly 1 advertiser. There is another table, let's call it "Offer". When new offer is created, all of the counts columns needs to be increased (campaigns.monthly_count, campaigns.total_count, advertisers.monthly_count, advertisers.total_count). Limits columns are specific caps which the counts columns cannot exceed.</p>
  
  <p><strong>campaigns</strong></p>
  
  <pre><code>monthly_limit (int)
  total_limit (int)
  monthly_count (int)
  total_count (int)
  </code></pre>
  
  <p><strong>advertisers</strong></p>
  
  <pre><code>monthly_limit (int)
  total_limit (int)
  monthly_count (int)
  total_count (int)
  </code></pre>
  
  <p>Question is: <strong>Is it normalized database design or is there better way to do things?</strong></p>
  
  <p>I was thinking about having another table like this:</p>
  
  <p><strong>limits</strong></p>
  
  <pre><code>campaign_id (int)
  advertiser_id (int)
  monthly_limit (int)
  total_limit (int)
  monthly_count (int)
  total_count (int)
  </code></pre>
  
  <p>But this way one of the referenced columns would be always empty and I cannot use foreign keys.</p>
  
  <p>Or another option probably is something like this:</p>
  
  <p><strong>limits_campaigns</strong></p>
  
  <pre><code>campaign_id (int)
  monthly_limit (int)
  total_limit (int)
  monthly_count (int)
  total_count (int)
  </code></pre>
  
  <p><strong>limits_advertisers</strong></p>
  
  <pre><code>advertiser_id (int)
  monthly_limit (int)
  total_limit (int)
  monthly_count (int)
  total_count (int)
  </code></pre>
  
  <p>This way I would have to write probably lot more joins in the queries but I could use foreign keys.</p>
  
  <p><strong>Is there any other option which seems more appropriate and if not which of these designs is the best?</strong> </p>
  
  <p>P.S.: Just to be more specific I am using MySQL InnoDB engine.</p>