No sé sobre mySQL, pero en SQL Server le permitirá definir campos tales que el número total de bytes utilizados es mayor que el número total de bytes que realmente se pueden almacenar en un registro. Esto es algo malo. Tarde o temprano obtendrá una fila donde se alcanza el límite y no puede insertar los datos.
Es mucho mejor diseñar la estructura de su base de datos para considerar los límites de tamaño de fila.
Además, sí, no desea que las personas pongan 200 caracteres en un campo donde el valor máximo debería ser 10. Si lo hacen, casi siempre son datos incorrectos.
Usted dice, bueno, puedo limitar eso en el nivel de la aplicación. Pero los datos no ingresan a la base de datos solo desde una aplicación. A veces las aplicaciones múltiples lo utilizan, a veces los datos se importan y, a veces se arregla manualmente desde la ventana de consulta (actualizar todos los registros para agregar un 10% al precio, por ejemplo). Si alguna de estas otras fuentes de datos no conoce las reglas que pone en su aplicación, tendrá datos inútiles en su base de datos. La integridad de los datos debe aplicarse en el nivel de la base de datos (lo que no impide que también se verifique antes de intentar ingresar datos) o no tiene integridad. Además, según mi experiencia, las personas que son demasiado perezosas para diseñar su base de datos a menudo también son demasiado perezosas para poner realmente los límites en la aplicación y no hay ningún control de integridad de datos.
Tienen una palabra para las bases de datos sin integridad de datos, inútil.
¿Pero por qué debería establecer la longitud a 20 en absoluto? Si no hay diferencia, simplemente puedo configurarlo en 255 para todos los campos, ¿o no? – caw
ver mi edición - elaboro un poco más. – OneNerd
Gracias. Por lo tanto, no hace ninguna diferencia al almacenamiento y rendimiento convergentes, ¿verdad? Pero puede ser útil, sin embargo, p. si quieres cortar cuerdas para evitar las largas. Pero también podría lograr esto antes si utilizara substr() en PHP o una función similar en otro idioma. – caw