title: Deciding between an artificial primary key and a natural key for a Products table
body: <p>Basically, I will need to combine product data from multiple vendors into a single database (it's more complex than that, of course) which has several tables that will need to be joined together for most OLTP operations.</p>
  
  <p>I was going to stick with the default and use an auto-incrementing integer as the primary key, but while one vendor supplies their own "ProductiD" field, the rest do not and I would have to do a lot of manual mapping to the other tables then to load the data (as I would have to first load it into the Products table, then pull the ID out and add that along with the other information I need to the other tables).</p>
  
  <p>Alternatively, I could use the product's SKU as it's primary key since the SKU is unique for a single product, and all of the vendors supply a SKU in their data feeds.  If I use the SKU as the PK then I could easily load the data feeds as everything is based off of the SKU, which is how it works in the real world.  However the SKU is alphanumeric and will probably be slightly less efficient than an integer-based key.</p>
  
  <p>Any ideas on which I should look at?</p>