>Here at my job we have a database modeler in our group. He is insistent that all tables use 'Natural Keys' and not surrogate keys. I am not trying to start a battle or anything, but is this really even still a debate? It does not matter how much logical reason I provide him, he is propagating his plan across the company and it does not seem to matter what the impact will be. This is a global company in 140 countries with data centers all over the world.
>
>My only questions is: Has something changed and I missed it? We are talking about values that users see and will want to change being used as primary keys on the tables.
My two cents -
For OLTP applications, I prefer surrogate keys over natural keys.
For Data Warehouse/Business Intelligence databases, then ABSOLUTELY use surrogate keys.
As for whether to use integer values or GUIDs for a surrogate....depends on whether you need global uniqueness across domains/servers. If so, then a GUID is the way to go. But if you only need uniqueness within the database, the SQL 2012 Sequence Object (sort of a little integer factory generator) is a good way to go.