title: Should I use a surrogate key or use the natural keys?
body: <p>I am building a list type to let users make lists of various things in my system. The list elements therefore need references to both the type and identifier of the things they will be pointing at.</p>
  
  <p>For instance, I will allow users to make lists of products. The list elements will therefore need to know that they are holding products (so look in the products table), and will need the product ID.</p>
  
  <p>Some of the things lists will be storing will have non-numeric identifiers. </p>
  
  <p>So, should I put my id/type pair in the list element, or should I create a new table that creates a surrogate key for the id/type pair as a simple int and use that...? </p>
  
  <p>The surrogate key will take an extra lookup/join to get the key pair, but I won't need to mash two columns into my list elements table.</p>