title: Should every MySQL table have an auto-incremented primary key?
body: <ul>
  <li>I understand the value of primary keys.</li>
  <li>I understand the value of indexes. </li>
  </ul>
  
  <p>Should <strong>every</strong> MySQL table have an auto-incremented primary key (ideally with INT field type)?</p>
  
  <h2>Update</h2>
  
  <p>@Raj More's answer seems most efficient. The issue when I think about it, however, is how this auto-incremented primary key ID will relate to other tables. For example:</p>
  
  <h2>table 1</h2>
  
  <pre><code>ID  |   firstname  |   lastname | email
  ----------------------------------------
  1   |    john      |   doe      | 1@email.com
  2   |    sarah     |   stow     | 2@email.com
  3   |    mike      |   bro      | 3@email.com
  </code></pre>
  
  <h2>table 2</h2>
  
  <pre><code>ID  | memberid |    display      |    address
  --------------------------------------------
  1   |    1     | funtime zone    |   123 street
  2   |    3     | silly place llc |  944 villa dr 
  </code></pre>
  
  <p>In the example above, a consumer may come to the site and choose to register for a free product/service. If the consumer chooses, they are able to give additional information (stored in table 2) for additional mailing, etc. The problem I see is in how these tables relate to the 'primary key auto-incremented field'. In table 2, the 'memberid' relates to table 1's ID but this is not 'extremely' clear. Any new information placed into table 2 will increment by 1 whereas not <strong>all</strong> consumers will choose to participate in the table 2 required data.</p>