Mysql
 sql >> Base de données >  >> RDS >> Mysql

enum ou char(1) dans MySQL

Ni. Vous utiliserez généralement tinyint avec une table de recherche

  • char(1) sera légèrement plus lent car la comparaison utilise le classement

  • confusion :lorsque vous vous étendez à plus de A et P

  • l'utilisation d'une lettre vous limite lorsque vous ajoutez d'autres types. Voir dernier point.

  • chaque système que j'ai vu a plus d'un client, par exemple des rapports. A et P doivent être résolus en Actif et Passif pour chaque code client

  • extensibilité :ajoutez un type supplémentaire ("S" pour "Suspendu"), vous pouvez ajouter une ligne à une table de recherche ou modifier beaucoup de code et de contraintes. Et votre code client aussi

  • maintenance :la logique est à 3 endroits :contrainte de base de données, code de base de données et code client. Avec une recherche et une clé étrangère, il peut être au même endroit

  • Enum n'est pas portable

Sur le côté positif de l'utilisation d'une seule lettre ou Enum

Remarque :il existe une question DBA.SE MySQL sur les énumérations . La recommandation est d'utiliser également une table de recherche.