Pergunta

Espero que a coluna seja VARCHAR2, no meu banco de dados Oracle.

Os códigos postais dos EUA são 9.

O canadense tem 7 anos.

Estou pensando que 32 caracteres seria um limite superior razoável

o que estou perdendo?

Editar] Til:12 é uma resposta razoável à pergunta graças a todos que contribuíram.

Foi útil?

Solução

Folheando Página de códigos postais da Wikipedia, 32 caracteres devem ser mais que suficientes.Eu diria que até 16 caracteres são bons.

Outras dicas

Conforme já levantado por @neil-mcguigan, a Wikipedia tem uma página decente sobre o assunto.Com base nisso, 12 caracteres devem bastar: http://en.wikipedia.org/wiki/List_of_postal_codes

O artigo da Wikipedia lista cerca de 254 países, o que é muito bom em relação UPU (União Postal Universal) tem 192 países membros.

Por que você declararia um tamanho de campo maior do que os dados reais que espera armazenar nele?

Se a versão inicial do seu aplicativo oferecer suporte a endereços dos EUA e do Canadá (o que estou deduzindo do fato de você indicar esses tamanhos em sua pergunta), eu declararia o campo como VARCHAR2(9) (ou VARCHAR2( 10) caso pretenda armazenar o hífen nos campos ZIP+4).Mesmo olhando para as postagens que outros fizeram em códigos postais entre países, VARCHAR2(9) ou VARCHAR2(10) seriam suficientes para a maioria, senão para todos os outros países.

No futuro, você sempre pode ALTERAR a coluna para aumentar o comprimento, caso seja necessário.Mas geralmente é difícil impedir que alguém, em algum lugar, decida ser "criativo" e colocar 50 caracteres em um campo VARCHAR2(50) por um motivo ou outro (ou seja,porque eles querem outra linha na etiqueta de remessa).Você também precisa testar os casos limites (cada aplicativo que exibe um ZIP lidará com 50 caracteres?).E com o fato de que quando os clientes recuperam dados do banco de dados, eles geralmente alocam memória com base no tamanho máximo dos dados que serão buscados, e não no comprimento real de uma determinada linha.Provavelmente não é grande coisa neste caso específico, mas 40 bytes por linha podem ser um pedaço decente de RAM para algumas situações.

Além disso, você também pode considerar armazenar (pelo menos para endereços nos EUA) o CEP e a extensão +4 separadamente.Geralmente é útil poder gerar relatórios por região geográfica, e você pode frequentemente querer colocar tudo em um CEP em vez de dividi-lo pela extensão +4.Nesse ponto, é útil não ter que tentar SUBSTR os primeiros 5 caracteres do CEP.

O que está faltando é um motivo pelo qual você precisa que o código postal seja tratado de maneira especial.

Se você realmente não precisa TRABALHAR com um código postal, sugiro que não se preocupe com isso.Por trabalho, quero dizer fazer processamento especial, em vez de apenas usar para imprimir etiquetas de endereço e assim por diante.

Simplesmente crie três ou quatro campos de endereço de VARCHAR2(50) [por exemplo] e deixe o usuário inserir o que quiser.

Você realmente precisar agrupar seus pedidos ou transações por código postal?Penso que não, uma vez que diferentes países têm regimes muito diferentes para este domínio.

Normalização?Os códigos postais podem ser usados ​​mais de uma vez e podem estar relacionados a nomes de ruas ou cidades.Tabela(s) separada(s).

Os códigos postais canadenses têm apenas 6 caracteres, na forma de letras e números (LNLNLN)

O Reino Unido publicou padrões: Catálogo de padrões de dados do governo do Reino Unido

Max 35 characters per line 

Endereço postal internacional:

Minimum of 2 lines and maximum of 5 lines for the postal delivery point 
details, plus 1 line for country and 1 line for postcode/zip code 

O comprimento do código postal do Reino Unido é:

Minimum 6 and Maximum 8 characters 

Se você deseja integrar códigos postais no banco de dados, é melhor usar o banco de dados de geonomes.Embora seja difícil de usar e entender, é o maior banco de dados geográfico disponível gratuitamente para usuários como nós.

Todos os outros bancos de dados têm mais ou menos probabilidade de ter os mesmos dados e estrutura.Eles apenas removem algumas informações extras/redundantes do banco de dados.Se você está fazendo isso apenas para sistemas de baixa carga, use seus serviços gratuitos, os limites são atraentes e oferecem uma interface mais fácil usando json e ajax.Você pode ver os limites aqui

Para sua informação, varchar(20) é suficiente para armazenar códigos postais

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top