Esta é uma resposta combinada dos outros (ou seja, o que aprendi). Se você sentir vontade de fazer um upvoting, você deve pelo menos fazer um upvote de um dos outros, assim como eles fizeram o trabalho real. Se você estiver mais interessado, leia as outras respostas.
Você não deve expor a chave primária dos bancos de dados, mas sim usar uma chave substituta
- Se você quiser que seus usuários consigam se lembrar (pelo menos um pouco) ou reconhecer o identificador de uma entrada. ( Resposta do Graystone28s )
- Se você quiser planejar com antecedência e considerar que pode alterar sistemas (banco de dados ou outros) que provavelmente alterarão sua PK. ( Resposta da Telastyns )
- Se você deseja garantir que seus usuários tenham uma maneira consistente de acessar dados que não serão alterados, mesmo que sua empresa mude de propriedade e os dados sejam migrados para um sistema diferente. ( Resposta de Michael Durrants )
- Se sua PK for previsível (como uma sequência), seu sistema poderá sofrer problemas de coleta de recursos. ( CodeCasters Answer ) Isso se aplica somente se o seu sistema tiver informações que valham a pena ser colhidas e que sejam acessíveis por qualquer pessoa ou pelo menos alguém que tenha interesse em colheita.
Observação: sua chave criada deve ser (meio) compreensível para seres humanos ( Resposta do Sqlvogels ).
Se o seu sistema não precisa de 1. a 4. então não há razão para não usar o banco de dados PK como seu identificador público (várias das respostas). Também a segurança não é um problema aqui (várias das respostas).