2010-09-06 11 views
0

J'ai besoin de créer un bon/neutre/mauvais champ. lequel serait le plus compréhensible/correct.Champ MySQL à trois états

  1. un champ binaire à vide (1 = bonne, null = neutre, 0 = mauvais)
  2. un entier (1 = bonne 2 = neutre, 3 = mauvais)
  3. Un enum (bon, neutre, mauvais)
  4. Toute autre

Il est seulement informatif et sur le terrain et je ne aurai pas besoin de chercher par cela.

Répondre

2

valeurs NULL doivent être réservées soit:

  • valeurs inconnues; ou
  • valeurs non applicables;

ni ce qui est le cas ici.

Je voudrais simplement stocker une valeur CHAR moi-même, un de l'ensemble {'G','N','B'}. C'est probablement la solution la plus simple et prend peu de place tout en fournissant une valeur mnémotechnique (en convertissant facilement 'G' en 'Bon' par exemple).

Si vous êtes moins préoccupés par l'espace, vous pouvez même les stocker sous forme varchar(7) ou équivalent et stocker les valeurs réelles {'Good','Neutral','Bad'} de telle sorte que pas de traduction du tout serait nécessaire dans vos déclarations select (en supposant que ce sont les valeurs réelles que vous sera l'impression).

0

Dans Mysql, vous devriez utiliser un type enum. Vous pouvez choisir n'importe quel nom sans vous soucier de l'espace, car Mysql stocke les données sous la forme d'un entier court. Voir 10.4.4. The ENUM Type dans la documentation.