Originally posted by Bear Bibeault:
I'm no DB guru, but those who are have repeatedly told me that primary keys should have no semantic meaning. It's just an opaque identifier that carries no data of its own.
From a data modeling standpoint, using a surrogate key instead of a natural key removes the business requirements from your database key structure. If requirements change for the data related to the business, you do not have to change the key structure of your database. This decoupling can sometimes be a disadvantage from a user standpoint with ad-hoc queries.
The advantage of a natural key is that it allows the user with business knowledge to query the data without understanding surrogate key relationships.
From a SQL standpoint, it really makes little difference with respect to your query beyond performance of number keys joining to number keys.