Cuándo utilizar el tipo de dato ENUM en bases de datos MySQL

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:

  1. El tipo de usuarios es gestionado desde la aplicación.
  2. El tipo de usuarios puede crecer o es incierto
  3. Cuando existe un gran número de tipo de usuarios.
  4. El dato lo muestro por pantalla y es sensible a que el sitio cambie de idioma.

Decisión 2:

  1. Existe un número limitado de tipos de usuario y siempre es el mismo.
  2. Nuestra base de datos ya es suficientemente grande y se nos está complicando bastante.
  3. Cuando no voy a filtrar por ese tipo (por ejemplo porque los voy a mostrar en ventanas diferentes y con una gestión independiente).
  4. 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’)

1 comentario en “Cuándo utilizar el tipo de dato ENUM en bases de datos MySQL

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.