Hasta hace poco. No acostumbraba a utilizar el campo ENUM como tipo de dato en una tabla.
La duda que planeo queda clara en el siguiente ejemplo:
//SIN ENUM
create table 'usuarios'(
usuario_id INT,
nombre VARCHAR(100),
usuario_tipo_id INT
) TYPE=innodb;</code>
)
(Siendo usuario_tipo_id una fk a usuario_tipo_id de la tabla inferior).
create table 'usuarios_tipos'( usuario_tipo_id INT, descripcion VARCHAR(200) )
ó
// CON ENUM
create table 'usuarios'(
usuario_id INT,
nombre VARCHAR(100),
tipo ENUM
) TYPE=innodb;</code>
)
¿Cuándo tomar una decisión u otra?
Decisión 1:
- El tipo de usuarios es gestionado desde la aplicación.
- El tipo de usuarios puede crecer o es incierto
- Cuando existe un gran número de tipo de usuarios.
- El dato lo muestro por pantalla y es sensible a que el sitio cambie de idioma.
Decisión 2:
- Existe un número limitado de tipos de usuario y siempre es el mismo.
- Nuestra base de datos ya es suficientemente grande y se nos está complicando bastante.
- Cuando no voy a filtrar por ese tipo (por ejemplo porque los voy a mostrar en ventanas diferentes y con una gestión independiente).
- Si queremos utilizarlo a estilo booleano, para que no nos olvidemos cual es el verdadero o cuál es el falso (ejemplo: active ENUM (‘no_active’,’active’)