Digamos que en una tabla aleatoria, tienes una columna llamada estado . Sus valores del mundo real estarían habilitados o deshabilitados .
¿Es mejor que el tipo de datos de esta columna sea int / bool (1 o cero) o que se use ENUM
con los valores siendo enabled
y disabled
? ¿Cuáles son las ventajas o desventajas?
Digamos que en lugar de solo dos estados válidos, ¿tiene 4 o 10 o incluso más? ¿Las ventajas y desventajas se balancean hacia un lado u otro a medida que aumenta el número de valores requeridos?
mysql
database-design
datatypes
Jake Wilson
fuente
fuente
Respuestas:
Encontré un artículo muy extraño pero informativo sobre 8 razones por las cuales uno no debería usar ENUM.
Incluso sin el artículo, lo sé
fuente
units
modelo para artículos de una tienda donde cada registro debe tener propiedades para sus unidades relacionadascomposition
. es decir, Ton, Kg, gmBueno, primero tenemos los requisitos de almacenamiento . Voy a suponer que te referías a un tinyint (en lugar de int).
Entonces, en la superficie, son todos iguales. Sin embargo, ENUM toma algunos metadatos para el valor de cadena asociado con él ( src anterior )
Sin embargo, a medida que agrega más valores, cualquier ventaja comienza a alejarse
ENUM
. Especialmente si agrega los valores después de que la tabla ya está en uso, porque tiene que alterar la estructura de la tabla para acomodarla.¿Cuál es la ventaja de usar un
ENUM
? Una representación de cadena de lo que significa el valor. Eso es todo, en lo que a mí respecta. Lo valioso que sea depende de su aplicación.fuente
Encuentro ENUM es una definición abreviada de una tabla de códigos. Su principal ventaja es que evita el código requerido para unirse y mostrar la descripción del código. También facilita la configuración de los valores si llegan en forma de cadena.
Creo que tiene las siguientes desventajas:
fuente