>The "serial" key is the default primary key amongst every single web development environment in existence.
Methinks thou doest take too much for granted.
Yes, serial has it's purpose, but I sincerely doubt it is "the default primary key amongst every single web development environment in existence"
I am not sure where you get your stats from. Probably you are referring to "Ruby on Rails". IMHO, RoR is something which has made it easier to code Web apps, at the cost of developers not needing to use brain power. In any case, the idea is to develop good database design. not web apps.
Point 9 is well-intentioned, but perhaps needs to be clarified/rephrased: Developers should not be creating production-grade tables devoid of well-defined business keys, period. That would be regardless of whether they're used as de facto primary keys or simply as unique keys.
Although I appreciate your argument, I think we need a little foundation in reality. The "serial" key is the default primary key amongst every single web development environment in existence.
We can make an argument within the doc to why that can be bad, but to state that it is "wrong" is just not going to get you anywhere.
JD
-- Command Prompt, Inc. - http://www.commandprompt.com/503-667-4564 PostgreSQL Centered full stack support, consulting and development. Announcing "I'm offended" is basically telling the world you can't control your own emotions, so everyone else should do it for you.