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

enum ou char(1) no MySQL


Nenhum. Você normalmente usaria tinyint com uma tabela de pesquisa

  • char(1) será um pouco mais lento porque a comparação usa collation

  • confusão:À medida que você estende para mais de A e P

  • usar uma letra limita você à medida que você adiciona mais tipos. Veja o último ponto.

  • cada sistema que eu vi tem mais de um cliente, por exemplo, relatórios. A e P devem ser resolvidos para Ativo e Passivo em cada código de cliente

  • extensibilidade:adicione mais um tipo ("S" para "Suspenso") você pode uma linha para uma tabela de pesquisa ou alterar muito código e restrições. E seu código de cliente também

  • manutenção:a lógica está em 3 lugares:restrição do banco de dados, código do banco de dados e código do cliente. Com uma pesquisa e chave estrangeira, pode estar em um só lugar

  • Enum não é portátil

No lado positivo de usar uma única letra ou Enum

Observação:há uma pergunta relacionada ao DBA.SE MySQL sobre Enums . A recomendação é usar uma tabela de pesquisa lá também.