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:
- disminuyendo el número de combinaciones requeridas para una consulta
- Reduciendo el número de tablas abiertas en el DBMS
Los únicos inconvenientes que conozco son
- el tipo ENUM no es implementado por otro DBMS
- 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.