• I would also take into consideration what is accessing the data. Entity Framework in .NET positively hates compound primary keys when generating POCO classes. Therefore, by default have an identity key, even on small tables just to make life easy. I agree with you about the downsides on the SQL side, but they are not outweighed by the consuming client and its own downfalls.

    Just to play devils advocate I guess.