2010-01-12 9 views

Répondre

7

Oui, ce serait un type de données approprié car il applique votre domaine.

Si vous voulez ajouter (ou effectuer d'autres opérations mathématiques) ensemble, cependant, un type de données numérique peut être meilleur.

+3

En effet, ou si vous aviez l'intention de les faire la moyenne. TINYINT est probablement plus approprié, assurez-vous juste de contraindre les valeurs dans votre application. –

+0

Ah bon point merci! Donc, par exemple, si je voulais calculer la note moyenne pour un produit enum serait un mauvais choix, non? Dois-je juste utiliser un int et contraindre par programmation l'entrée à entre 1 & 5> –

+0

@Jordan, mes pensées exactement. ENUM brille vraiment si vous avez une liste fixe de textes, et il n'y a pas de connotation numérique –

9

Je suggère d'utiliser

TINYINT UNSIGNED NOT NULL 

ou, pour une meilleure compatibilité ANSI/SQL, utilisez:

SMALLINT NOT NULL 

Avec un type entier, il est beaucoup plus facile de faire des calculs. ENUM n'est pas mauvais, mais il y a un risque de gâchis car c'est une sorte de double string/int (sous les couvertures, c'est un int, mais de l'extérieur, c'est une chaîne). Et en effet, si vous ressentez le besoin d'aller à 3 étoiles, ou 10 étoiles ou plus, la migration sera beaucoup moins douloureuse.