2010-04-18 15 views
8

Piszę oprogramowanie do obsługi obecności. Każdy członek będzie miał kartę identyfikacyjną z kodem kreskowym, której będą używać do logowania się na zdarzenia. Jak długo powinno znajdować się pole z kodem kreskowym w mojej bazie danych? Chciałbym zaakceptować kody kreskowe Code 39 i Code 128. Wiem, że są to kody o zmiennej długości, więc do czego mam ustawić maksymalną długość?Długość pola kodu kreskowego

Dzięki!

EDYCJA: Moi klienci będą używać różnych zewnętrznych narzędzi do drukowania kodów kreskowych.

Odpowiedz

9

Kod 128 może wykonać 128 znaków ASCII, więc ustaw maksymalną długość na 128 (lub wyższą, tak naprawdę nie ma znaczenia).

Pozwolę sobie wyjaśnić to ostatnie oświadczenie. Zmienne pola tekstowe będą używały 1 bajta na znak (lub więcej dla pól typu Unicode, ale zignorujmy je teraz) plus trochę narzutów. Ten narzut może wynosić od 1 do 4 bajtów lub 16 lub więcej w zależności od bazy danych.

Ale chodzi o to, że jeśli można przechowywać 100 znaków w polu VARCHAR(128) lub pole VARCHAR(1000) nadal używa dokładnie taką samą ilość miejsca.

Jedynym problemem, który napotkasz, są limity wierszy. To również zależy od bazy danych. Na przykład, na przykład, cały rząd może mieć tylko 64K, więc suma wszystkich rozmiarów nie może przekroczyć tego. Poza tym to nie ma znaczenia.

+8

Popraw mnie, jeśli się mylę, ale ten [artykuł wiki] (http://en.wikipedia.org/wiki/Code_128) mówi, że kod 128 może kodować wszystkie 128 znaków ascii, a nie ma 128 znaków . Kody kreskowe w naszych bazach danych mają długość 25 znaków i nie mieliśmy żadnych skarg. – tkerwood

+1

@tkerwood masz rację. Kod128 nie jest ograniczeniem liczby znaków, ale jest zestawem znaków, który można zakodować. Reszta tej odpowiedzi, ponownie: rozmiar varchar w bazie danych jest poprawny. – Sean

+1

Teraz jest [zbyt wiele wątpliwości] (http://stackoverflow.com/questions/2660560/barcode-field-length/2660568#comment29063478_2660568) (w tym moje) o limicie 128 znaków. Może więc nadszedł czas, aby poprawić oświadczenie lub podać źródło dla tego limitu 128 znaków. – miroxlav

4

Te formaty mogą z łatwością kodować dużą liczbę cyfr, z pewnością więcej niż potrzebujesz dla unikalnego identyfikatora. Więc nie chodzi tylko o to, jak długie są twoje identyfikatory? Czy 10 cyfr jest dużo? następnie 10 znaków. Lub jeśli są to identyfikatory numeryczne, nie powinieneś nawet przechowywać ich jako ciąg znaków. Użyj liczbowego typu SQL.

5

żadnych ograniczeń Code 128 w teorii, ale na przykład, jeden z zastosowanych specyfikacji (GS1) ustala praktyczne ograniczenia:

GS1-128 posiada maksymalnie 48 znaków (bez znaków specjalnych) lub maksymalnie 6,5 "(włącznie spokojnej okolicy) Limit bazuje na co nastąpi wcześniej

Źródło:.. GS1-128 Symbol Specifications

+0

Ograniczenia, do których się odnosisz, odnoszą się do standardu aplikacji GS1-128 dla kodu 128, a nie do rodzica, który nie stosuje takich ograniczeń. –

+1

@TerryBurton Tak, ale powodzenia w skanowaniu 9-metrowego kodu kreskowego. – Beejor

+0

@Beejor Odpowiedzi udzielono dokładniej: http://stackoverflow.com/a/31359916/2568535 –

-1

Kod 39 jest ograniczona do 43 znaków w kodzie ASCII 39 Pełna Symbole 0-9, AZ,".” , "-" i spacja są takie same jak ich reprezentacje w Kodzie 39.

+1

43 * różne * znaki w alfabecie. Niezwiązane z długością. –