2010-04-18 20 views
8

Estoy escribiendo algunos programas de asistencia. Cada miembro tendrá una tarjeta de identificación con un código de barras que usarán para registrarse en los eventos. ¿Cuánto tiempo debería estar el campo de código de barras en mi base de datos? Me gustaría aceptar los códigos de barras Code 39 y Code 128. Sé que estos son códigos de longitud variable, entonces, ¿a qué debería ajustar la longitud máxima?Longitud del campo del código de barras

Gracias!

EDITAR: Mis clientes utilizarán una variedad de herramientas de impresión de códigos de barras de terceros.

Respuesta

9

El código 128 puede hacer 128 caracteres ASCII, así que configure la longitud máxima en 128 (o más, realmente no importa).

Permítanme aclarar esa última afirmación. Los campos de texto variable usarán 1 byte por carácter (o más para los campos de tipo Unicode pero ignorémoslos por ahora) más algunos gastos generales. Esa sobrecarga puede ser tan pequeña como 1-4 bytes o tanto como 16 o más dependiendo de la base de datos.

Pero el punto es que si se almacenan los 100 caracteres en un campo o un campo VARCHAR(128)VARCHAR(1000) se sigue utilizando el misma cantidad exacta de espacio.

El único problema con el que se encuentra es el límite de filas. Esto también depende de la base de datos. En algunos, por ejemplo, toda la fila solo puede tomar hasta 64 KB de tamaño, por lo que la suma de todos los tamaños no puede exceder esa cantidad. Aparte de eso, no importa.

+8

Corrígeme si me equivoco, pero este [artículo de wiki] (http://en.wikipedia.org/wiki/Code_128) dice que el Código 128 puede codificar todos los 128 caracteres Ascii, no es que tenga 128 caracteres . Los códigos de barras en nuestros DB son de 25 caracteres de largo y no hemos tenido ninguna queja. – tkerwood

+1

@tkerwood tienes razón. Code128 no es el límite de la cantidad de caracteres, sino que es el conjunto de caracteres que puede codificarse. El resto de esta respuesta, re: varchar size en la base de datos es correcta. – Sean

+1

Ahora hay [demasiadas dudas] (http://stackoverflow.com/questions/2660560/barcode-field-length/2660568#comment29063478_2660568) (incluido el mío) un límite de 128 caracteres. Entonces tal vez es hora de corregir su declaración o proporcionar una fuente para ese límite de 128 caracteres. – miroxlav

4

Estos formatos pueden codificar fácilmente muchos dígitos, seguramente más de lo que necesita para una identificación única. Entonces, ¿no es solo la pregunta, cuánto duran sus identificaciones? ¿Hay 10 dígitos suficientes? luego 10 caracteres. O si son identificadores numéricos, ni siquiera debe almacenar como una cadena de caracteres. Use un tipo de SQL numérico.

5

No hay restricciones en el código 128 en la teoría, pero, por ejemplo, una de las especificaciones aplicadas (GS1) establece límites prácticos:

GS1-128 tiene un máximo de 48 caracteres (sin caracteres especiales) o un máximo de 6,5 "(incluyendo zona tranquila) El límite se basa en lo que ocurra primero

Fuente:. GS1-128 Symbol Specifications

+0

Los límites a los que se refiere se aplican al estándar de aplicación GS1-128 para el Código 128 en lugar de la simbología principal que no aplica tales restricciones. –

+1

@TerryBurton Sí, pero buena suerte escaneando un código de barras de 9 pies de ancho. – Beejor

+0

@ Beeejor Esto se responde más exhaustivamente aquí: http://stackoverflow.com/a/31359916/2568535 –

-1

código 39 se limita a 43 caracteres en el código ASCII completo 39 Símbolos 0-9, AZ,."." , "-" y el espacio son los mismos que sus representaciones en el código 39.

+1

43 * caracteres * diferentes en su alfabeto. No relacionado con la longitud. –

Cuestiones relacionadas