Pergunta

O que é "melhor"maneira de armazenar endereços internacionais em um banco de dados?Responda na forma de um esquema e uma explicação dos motivos pelos quais você optou por normalizar (ou não) da maneira que fez.Explique também por que você escolheu o tipo e o comprimento de cada campo.

Observação:Você decide quais campos considera necessários.

Foi útil?

Solução

Texto simples de formato livre.

Validar todos os códigos post/CEP do mundo é muito difícil;uma lista fixa de países é demasiado sensível do ponto de vista político;Estado/região/outra subdivisão administrativa obrigatória é simplesmente inadequada (muitas vezes me perguntam em que condado moro - quando não moro, porque a Grande Londres não é um condado).

Mais especificamente, é simplesmente desnecessário.É altamente improvável que seu aplicativo modele endereços de maneira séria.Se quiser um endereço postal, peça o endereço postal.A maioria das pessoas não é tão estúpida a ponto de inserir algo diferente de um endereço postal e, se o fizerem, podem dar adeus ao item recém-comprado.

A exceção a isso é se você estiver fazendo algo que está naturalmente restrito a um país.Nesta situação, deverá pedir, digamos, o par {código postal, número da casa}, que é suficiente para identificar um endereço postal.Imagino que você possa conseguir coisas semelhantes com o CEP estendido nos EUA.

Outras dicas

No passado, modelei formulários que precisavam ser internacionais após os formulários de endereço de entrega ups/fedex em seus sites (pensei que se eles não soubessem como lidar com um pedido internacional, todos estaríamos perdidos).Os campos que eles usam podem ser usados ​​como referência para configurar seu esquema.

Em geral, você precisa entender por que deseja um endereço.É para envio/envio?Então, há realmente apenas um requisito: separar o país.As demais linhas são de formato livre, a serem preenchidas pelo usuário.A razão para isso é a estratégia comum de encaminhamento de correspondência:qualquer correspondência recebida de um país estrangeiro é encaminhada sem olhar para as outras linhas de endereço.Assim, as informações detalhadas são analisadas apenas pelo classificador de correspondência localizado no próprio país.Assim como o receptor, eles estarão familiarizados com as convenções nacionais.

(A UPS pode agrupar alguns pequenos países europeus, por exemplo.todos os Países Baixos são provavelmente servidos pela Bélgica - a ideia ainda se mantém.)

Acho que adicionar país/cidade e texto de endereço será suficiente.país e cidade devem ser separados para relatórios.Gerentes sempre solicite esse tipo de relatório que você não espera e não prefiro executar uma consulta LIKE em um banco de dados grande.

Não dar respeito indevido ao Facebook.No entanto, a estrutura geral do banco de dados parece ser negligenciada em muitas aplicações web que são lançadas todos os dias.Obviamente, não acho que exista uma solução perfeita que cubra todas as variáveis ​​potenciais com estrutura de endereço sem algum trabalho duro.Dito isto, combinado com o preenchimento automático, o Facebook consegue obter dados de entrada de localização e eliminar a maioria de suas entradas redundantes.Eles fazem isso organizando seu banco de dados bem o suficiente para fornecer informações de preenchimento automático com baixo custo e baixo erro ao cliente em tempo real, permitindo que eles escolham mais ou menos o local correto em uma lista existente.

Acho que a melhor solução é acessar um banco de dados de terceiros que contenha o escopo geográfico desejado e usá-lo para propagar inicialmente as informações de localização do usuário.Isso permitirá que você evite fazer o trabalho de base para criar o seu próprio.Com alguma sorte, você pode reduzir a carga em seu servidor, permitindo que seus novos usuários recebam as informações corretas de preenchimento automático diretamente de seu fornecedor terceirizado.Eventualmente, você poderá preencher a maior parte do preenchimento automático para informações de localização, como cidade, país, etc.a partir de informações contidas em seu próprio banco de dados a partir de dados de entrada do usuário.

Você precisa fornecer um pouco mais de detalhes sobre como planeja usar os dados.Por exemplo, campos como Cidade, Estado, País podem ser texto na tabela única ou códigos vinculados a uma tabela separada com uma chave estrangeira.

O mais simples seria

Address_line_01 (requerido, não em branco) ADDEREN_LINE_02 ADDERENT_LINE_03 Cidade do Landmark (obrigatória) PIN (NECESSÁRIO) Província_district State (requerido) País (exigido)

Todos os itens acima podem ser Texto/Unicode com comprimentos de campo apropriados.

Números de telefone, conforme aplicável.

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