sql >> Base de Datos >  >> RDS >> PostgreSQL

SQL:¿Ventajas de un ENUM frente a una relación de uno a muchos?

Ejemplo que se muestra usando PostgreSQL, pero otros RDBMS tienen una sintaxis similar

Eso es incorrecto. No es un requisito de ISO/IEC/ANSI SQL, por lo que las bases de datos comerciales no lo proporcionan (se supone que debe proporcionar tablas de búsqueda). El extremo pequeño de la ciudad implementa varios "extras", pero no implementa los requisitos más estrictos, o el gruñido, del extremo grande de la ciudad.

Tampoco tenemos ENUMs como parte de un DataType, eso es absurdo.

La primera desventaja de los ENUM es que no es estándar y, por lo tanto, no es portátil.

La segunda gran desventaja de los ENUM es que la base de datos está cerrada. Los cientos de herramientas de informe que se pueden usar en una base de datos (independientemente de la aplicación), no pueden encontrarlas y, por lo tanto, no pueden proyectar los nombres/significados. Si tuviera una tabla de búsqueda de SQL estándar normal, ese problema se elimina.

La tercera es, cuando cambias los valores, tienes que cambiar DDL. En una base de datos SQL estándar normal, simplemente inserta/actualiza/elimina una fila en la tabla de búsqueda.

Por último, no puede obtener fácilmente una lista del contenido del ENUM; puede hacerlo con una tabla de búsqueda. Más importante aún, tiene un vector para realizar cualquier consulta de Dimensión-Hecho, eliminando la necesidad de seleccionar de la gran tabla de Hecho y GROUP BY.