• Surrogate keys are practically always the only way to go for ease of development as well as performance, especially in large databases. A single column int or bigint will always perform better than some multi-column natural key with one or two char/varchar columns. Think of the costly index(es) on that beast and the cost of having to potentially have that combination in lower tables as well instead of the one int PK that could be down there.

    The column means nothing to users and you know you can always identify one row by one int key. Programming / development is made much easier by this as well.