Tenho uma tabela Produtos, 2 opções:
Deixe o usuário digitar o PK porque alguns usuários podem inserir códigos de barras ou não (nesse caso, o aplicativo deixará o usuário livre para inserir qualquer coisa, por exemplo, suas próprias convenções de código, como Oreo Icecream IC-O). Obviamente, preciso adicionar algumas validações para evitar PK com milhares de caracteres e muito mais.
Use o PK de incremento automático e crie outro campo para um "SecondaryCode", mas para o usuário esta será a chave primária, algumas validações para SecondaryCode aqui também e isso parece estranho usar um SecondaryCode como um PK.
Existe alguma razão muito ruim para não escolher a primeira opção? Teoricamente é bom e mais fácil de gerenciar, mas não me sinto confortável em expor algo importante como uma chave primária. Talvez eu esteja esquecendo de algo óbvio.