Uno de los errores más recurrentes entre los estudiantes de sistemas es el uso incorrecto en la declaración de tipo de datos en las columnas de las bases de datos. En gran medida se debe al desconocimiento de la documentación de los mismos o algunos conceptos básicos.
Uno de los más recurrentes que he logrado observar es la confusión entre los datos numéricos y la utilización del valor de despliegue. Este tipo de detalles no son problema en los pequeños proyectos escolares pero si tienen un fuerte impacto a nivel de concepto e implementación en proyectos reales.
La confusión radica en la errónea percepción de que el valor utilizado en la declaración int(3) dentro del Query que genera una tabla representa el número de bytes que definen el rango de valores de la columna. Por lo que se usa la expresión int(3) cuando se quiere indicar la creación de una columna de tipo MEDIUMINT.
Recordemos los tipos de dato numéricos enteros:
Cada uno de ellos tiene especificado la cantidad de bytes que los datos ocuparán en la tabla y este espacio no cambia.
Cuando utilizamos la expresión INT(3) nos estamos refiriendo al formato de despliegue, no al espacio utilizado. Es decir la cantidad de espacios que se asignaran a la izquierda en caso de que el número tenga una cantidad de dígitos menor al indicado.
Esto es visible más fácilmente cuando utilizamos el atributo ZEROFILL, haciendo que en lugar de espacios utilice ceros para el formato.
Una columna especificada como: "columna int (6) ZEROFILL" llenará los números con menos de 6 dígitos con ceros a la izquierda. Si son mas grandes, el formato ya no es tomado en cuenta.
- 000001
- 000123
- 1234567
Tenemos siempre que recordar que el uso de (n) para los valores enteros siempre se refiere al formato de despliegue y nunca afecta el tamaño de los datos almacenados.
Manual Referencia Mysql
5.o: 10.2 Tipos numéricos http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html
0 comentarios:
Publicar un comentario