I found one statement from Christian Bauer (
christian@hibernate.org) in a discussion about composite keys.
"Experience has shown that natural keys almost always cause problems in the long run. A good primary key must be
unique,
constant, and
required (never null or unknown). Very few entity attributes satisfy these requirements, and some that do are not efficiently indexable by SQL databases. You should be absolutely sure that a candidate key attribute never changes through the data's entire lifetime before promoting it a primary key.
For these reasons, we strongly recommend that new applications use synthetic identifiers (also called surrogate keys). Surrogate keys have no business meaning - they are unique values generated by the database or application. There are a number of well-known approaches to surrogate key generation."
If these requirements are met I would not use a synthetic key no matter if the field has a buisiness meaning or not. Synthetic keys are a performance hit in this situation. It would be interesting to know what problems natural keys caused as Christian mentioned.
Haug