Disons que dans une table aléatoire, vous avez une colonne nommée status. Ses valeurs réelles seraient soit activé ou désactivé.
Est-il préférable que le type de données de cette colonne soit un int/bool (1 ou zéro) ou utilise ENUM
avec les valeurs étant enabled
et disabled
? Quels sont les avantages ou les inconvénients?
Disons qu'au lieu de seulement deux statuts valides, vous en avez 4 ou 10 ou même plus? Les avantages et les inconvénients se balancent-ils d'un côté ou de l'autre lorsque le nombre de valeurs requises augmente?
J'ai trouvé un article très bizarre mais informatif environ 8 raisons pour lesquelles il ne faut pas utiliser ENUM.
Même sans l'article, je sais
Eh bien, tout d'abord, nous avons les exigences de stockage . Je vais supposer que vous vouliez dire une minuscule (au lieu de int).
Donc, en surface, ils sont tous pareils. ENUM prend cependant certaines métadonnées pour la valeur de chaîne qui lui est associée ( ancien src )
Je dirais cependant que lorsque vous ajoutez plus de valeurs, tout avantage commence à s'éloigner de ENUM
. Surtout si vous ajoutez les valeurs une fois que la table est déjà utilisée, car vous devez modifier la structure de la table pour l'adapter.
Quel est l'avantage d'utiliser un ENUM
? Une représentation sous forme de chaîne de ce que signifie la valeur. Voilà, en ce qui me concerne. La valeur de ces informations dépend de votre application.
Je trouve que ENUM est une définition abrégée d'une table de code. Son principal avantage est qu'il évite le code requis pour rejoindre et afficher la description du code. Il facilite également la définition des valeurs si elles arrivent sous forme de chaîne.
Je trouve qu'il présente les inconvénients suivants: