cómo elegir el tipo de campo adecuado en Laravel y MySQL: boolean, enum, string, integer, tinyInteger
cómo elegir el tipo de campo adecuado en Laravel y MySQL: boolean, enum, string, integer, tinyInteger
Cuando diseñamos una base de datos en Laravel con MySQL, uno de los aspectos más importantes es elegir el tipo de campo correcto para cada dato. Una mala elección puede traer problemas de validación, rendimiento o incluso inconsistencias en tu aplicación.
1. Caso real: el campo state
Supongamos que tenemos un campo para indicar si un registro está activo o no:
$table->boolean('state')->nullable();
Esto significaba que el campo podía tomar tres estados: true (1), false (0), null (sin definir).
$table->boolean('state')->default(1);
default elimina la posibilidad de valores null.2. Caso real: el campo esoportunidad
$table->boolean('esoportunidad')->nullable();
Aquí también se permite un tercer estado (null) cuando no se define el valor.
3. Caso real: el campo perfilcoincide
$table->enum('perfilcoincide', ['iniciar', 'si', 'no'])->default('iniciar');
En este caso usamos enum porque tenemos una lista de valores fijos y limitados.
4. Comparativo de tipos de campo en Laravel/MySQL
| Tipo de campo | ¿Qué almacena? | Ejemplo de uso | Ventajas | Desventajas |
|---|---|---|---|---|
boolean |
0, 1 y opcionalmente NULL | activo/inactivo | Simple y rápido | No sirve si necesitas más de 2 estados |
enum |
Lista de valores fijos | si/no/iniciar | Restringe valores | Difícil de modificar en producción |
string |
Texto corto | Nombres, correos | Flexible | No valida opciones |
integer |
Números enteros | Edad, cantidades | Soporta rangos grandes | Ocupa más espacio que tinyInteger |
tinyInteger |
Números pequeños (-128 a 127) | Flags, niveles bajos | Muy eficiente en espacio | Rango limitado |
5. ¿Cuándo conviene usar cada uno?
- ✅ boolean: solo para dos estados (activo/inactivo).
- ✅ boolean nullable: cuando necesitas un tercer estado indefinido.
- ✅ enum: para listas cortas y fijas.
- ✅ string: cuando los valores pueden variar mucho.
- ✅ integer / tinyInteger: cuando trabajas con números.
6. Recomendaciones finales
boolean para flags binarios.✔ Usa
enum para listas cerradas.✔ Usa
string para valores dinámicos.✔ Recuerda
nullable() si necesitas permitir null.🚀 Conclusión
Elegir el tipo de campo adecuado en Laravel y MySQL no es un detalle menor: influye en la claridad, consistencia y rendimiento de tu base de datos. La clave está en pensar en los estados reales que tendrá tu aplicación y elegir el tipo que mejor los represente.