Ver Mensaje Individual
  #4 (permalink)  
Antiguo 22/12/2014, 17:46
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Varchar como FK

Estás confundiendo representación visual de un dato, con requisitos de almacenamiento. Son cosas completamente diferentes.
Un numero de factura se almacena como INT UNSIGNED, lo mismo que cualquier otro código numérico secuencial. El que luego se represente con un ancho de 8 dígitos, rellenado a la izquierda con ceros es un problema de programación, no de datos. El dato sigue siendo el mismo sin importar como lo representes luego.
Si más adelante quieres que salga con un formato determinado, es decir con una cantidad de ceros a la izquierda, directamente en la consulta, eso también se puede, y es muy sencillo, sin por eso necesitar corromper los datos de la tabla.
Puedes hacerlo así:
Código SQL:
Ver original
  1. mysql> SELECT CONCAT(LPAD(12, 4,'0'), '-', LPAD(340, 8,'0')) FACTURA;
  2. +---------------+
  3. | FACTURA       |
  4. +---------------+
  5. | 0012-00000340 |
  6. +---------------+
  7. 1 ROW IN SET (0.05 sec)
O simplemente manejarlo por programación (OFF TOPIC en este foro).

El único caso donde se debe usar obligatoriamente un VARCHAR para almacenar un código es cuando se trata de un código de barras, porque los ceros tienen valor de representación, es decir, son parte del valor a almacenar. Pero se trata de un caso especial y sólo para esos códigos.
Asimismo, los códigos que se guardan obligatoriamente como VARCHAR son sólo los que llevan letras...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)