Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Usar char como chave primária/estrangeira é um não, não?


Desempenho não é realmente o principal problema, pelo menos não para mim. A questão é mais sobre chaves substitutas versus chaves naturais.

Os códigos de país não são estáticos. Eles podem e mudam. Os países mudam de nome (por exemplo, Etiópia para Eritreia). Eles surgem (por exemplo, a dissolução da Iugoslávia ou da União Soviética) e deixam de existir (por exemplo, Alemanha Ocidental e Oriental). Quando isso acontece, o código padrão ISO muda.

Mais em Mudanças de nome desde 1990:países, cidades e mais

As chaves substitutas tendem a ser melhores porque quando esses eventos acontecem, as chaves não mudam, apenas as colunas na tabela de referência mudam.

Por esse motivo, eu estaria mais inclinado a criar tabelas de países e moedas com uma chave primária int.

Dito isto, os campos-chave varchar usarão mais espaço e terão certas desvantagens de desempenho que provavelmente não serão um problema, a menos que você esteja realizando um grande número de consultas.

Para completar, você pode consultar Erros de desenvolvimento de banco de dados cometidos por AppDevelopers .