una tipos sencillos resueltos paso normalizar normalizacion normales normal formas forma ejercicios ejemplos datos como mysql enums database-normalization

mysql - tipos - normalizacion de base de datos pdf



Normalización de la base de datos MySQL (3)

¿Debo implementar una normalización de la base de datos de lectura (usando tablas de unión) o debo usar el tipo ENUM para datos estáticos o dinámicos?

Por ejemplo:

Tengo una mesa de user_status con un user_status . ¿Debo crear una tabla en una tabla de status o crear una lista ENUM con los estados?

Gracias g


Depende de la arquitectura y muchos otros factores.

Por ejemplo, no permite la lectura / escritura de datos, excepto el uso de procedimientos almacenados. En este caso, puede sentirse libre de usar el tipo de datos "tinyint". Si permite leer / escribir con consultas directas, debería ser mejor usar la restricción, es decir, ENUM para evitar los estados incorrectos (si la IU o el back-end pueden poner este estado "incorrecto", por supuesto).

Por otro lado (y es posible) puede haber cambios en el flujo de datos y tal vez deba agregar nuevos estados. En este caso, necesitará: 1) no hacer nada si tiene un tipo de datos estático; 2) Altera si tienes ENUM.

Entonces ... mi respuesta es: depende de su aplicación y sus requisitos.


En mi humilde opinión, la extensión de enumeración hace que sea mucho más fácil integrar semánticas en una tabla y también mejora la eficiencia al:

  1. disminuyendo el número de combinaciones requeridas para una consulta
  2. Reduciendo el número de tablas abiertas en el DBMS

Los únicos inconvenientes que conozco son

  1. el tipo ENUM no es implementado por otro DBMS
  2. Si elige agregar valores adicionales al conjunto ENUM en una fecha posterior, está aplicando una actualización DDL, que puede llevar mucho tiempo con una tabla muy grande.

HTH

DO.


Otra cosa a considerar ...

Una enumeración solo podría actualizarse mediante una modificación de la estructura de la base de datos en otra parte; una tabla vinculada permite la creación dinámica de registros.