sql >> Base de Datos >  >> RDS >> Mysql

enum o char(1) en MySQL

Ninguno de los dos. Por lo general, usaría tinyint con una tabla de búsqueda

  • char(1) será un poco más lento porque la comparación usa intercalación

  • confusión:A medida que se extiende a más de A y P

  • usar una letra lo limita a medida que agrega más tipos. Ver último punto.

  • cada sistema que he visto tiene más de un cliente, por ejemplo, informes. A y P tienen que resolver en Activo y Pasivo en cada código de cliente

  • extensibilidad:agregue un tipo más ("S" para "Suspendido"), puede colocar una fila en una tabla de búsqueda o cambiar una gran cantidad de código y restricciones. Y tu código de cliente también

  • mantenimiento:la lógica está en 3 lugares:restricción de base de datos, código de base de datos y código de cliente. Con una búsqueda y una clave externa, puede estar en un solo lugar

  • Enum no es portátil

En el lado positivo de usar una sola letra o Enum

Nota:hay una pregunta de MySQL relacionada con DBA.SE sobre Enums . La recomendación es usar una tabla de búsqueda allí también.