I am using MS SQL Server but in general database design I want to know what problems can arise when every row in a database has its auto generated surrogate key value.
I know some advantages, for example that there is no need to identify unique columns without NULLs for primary keys, and there is no need to manage composite primary keys, normal forms are easier to manage, and uniqueness is guaranteed.
I want to know, is there any good reason regarding to performance, or index structures, etc. that should make us use real world factful keys instead of surrogate ones?
Thanks.