Just saw this StackOverflow article:
Database development mistakes made by application developers [closed]
via this Twitter conversation between me and @coding_insights.
The article had this as one of the answers:
"3. Using natural rather than surrogate (technical) primary keys"
followed by an explanation of why that person thinks so.
I tend to agree with that comment, based on my own experience working on many database-backed projects.
Though it seems counter-intuitive, using surrogate keys seems to be a better and more robust approach.
The commenter gave many reasons for using surrogate keys instead of natural keys, (and as I said, I've experienced at least some of those reasons), so I won't repeat them here; go take a look at that article.
- Vasudev Ram - Dancing Bison Enterprises