Quoting a bit more:
Fabian Pascal, in his book SQL and Relational Basics, notes that the decision should be based upon the principles of minimality (choose the fewest columns necessary), stability (choose a key that seldom changes), and simplicity/familiarity (choose a key that is both simple and familiar to users)
This also has it wrong to ask for a "familar to users" key. At least when you're from the surrogate key camp, because then you'd rather say users should never ever see the primary keys of any records, as they are really seperate from the net data, merely identifiers, nothing else.
Also look at
[URL unfurl="true"]http://www.datraverse.com/technology/sql.php[/url]
Obviously Fabian Pascal is of the camp preferring natural over surrogate keys. That explains it, because you can't guarantee any natural key to be invariant. "If you cannot find an obvious natural key, reconsider your design" is another argument of that camp.
There is a bit of truth in that, because if multiple records only differ in their primary key and that key is surrogate, it means you have redundant data beside that surrogate key. Still there are many situations that still is valid, eg think of measurements, any measurements, which are in a certain range can produce redundant, yet still relevant data. You can also consider that argument of redundancy with surrogate keys and a good normalization, so this also is no argument against surrogate keys, it's just an argument to design your database differently.
Everything speaks for surrogate keys as the only relevant type of primary keys, today. I think there is few disagreement on that, and the article SkipVought points to is making that very clear.
Bye, Olaf.