>>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.
>
>As Janice Booth says, "Natural Keys aren't". I don't have a problem with setting up natural keys as candidates, but in every case where some has said "this value will always be unique/never change" they've lied <g>.
In 1991 I was writing the invoicing module for a customer. Due to the nature of the business, they had at least three different kinds of invoices, calculated differently. One of the first two was weird, having the rebate applied after taxes - which meant they were losing the tax on rebate - but hey, customer is always right. For the third kind, I had to ask how does the rebate apply - before or after taxes. The guy said "don't worry, this kind of invoice never had nor will ever have a rebate on it". I duly quoted him in a dated comment in the code.
Come 1993, he said something about fixing the third type of invoice to introduce rebate. I didn't say a thing, just pulled up my code and pointed my finger to the comment.