Velmi nedoporučuji používat "přirozené identifikátory" (jako např. rodné číslo apod.) a především/vůbec jakékoliEXTERNÍ identifikátory jako primární klíč. Důvodů je více
- možnost duplicit. Ano, neměla by být, ale prostě v praxi někdy nastane
- změna legislativy, vedoucí např. k odstranění či nahrazení identifikátoru
- složitější přečíslování v případě jeho změny (změna pohlaví apod.)
- vazba na jeden daný identifikátor a z toho plynoucí problémy, když pak se má používat ještě jiný identifikátor(např. plánovaný přechod státní správy z RČ na číslo sociálního zabezpečení, kdy budou najednou potřebaoba identifikátory)
- složitě se musí řešit případ, kdy je třeba založit entita, která má daný identifikátor neznámý, nepřidělený apod.
V případě složeného umělého identifikátoru, na který byl původní dotaz, tak silné důvody pro použití umělého klíče nejsou, ale pořád může dojít k tomu, ževazba unikátní vazba n:m je třeba předělat na parametrickou vazbu n:m, kdy přestane platit unikátnost, a tedy je univerzálnější způsob tam mít ten umělý PK. Navíc s ním různé knihovny počítají.
Důvod, proč ho nemít, je leda rychlost, a ani tam to není černobílé: pokud není na tu tabulku třeba odkazovat, je rychlejší ho nemít, pokud odkazovat třeba je, tak složený PK bude pro selecty nejspíše pomalejší. Ale to už se pohybujeme v oblasti premature optimization: obecně bych doporučil, pokud není nějaký extra silný důvod ho nemít, tak ho tam dejte.
.... aha.... chytil jsem se na spam, prosím admina smazat :-) a tak chytře jsem to napsal :-)