Vou fazer com que usuários internacionais usem meu banco de dados, mas não sei como o sistema de correspondência opera fora dos EUA.
Os conceitos "Cidade", "Estado, País e possivelmente" CEP "são suficientes para capturar qualquer hierarquia (mesmo que tenha apenas 2 níveis de profundidade: (cidade / país)
database
internationalization
goodguys_activate
fonte
fonte
intl_addrs_line_3
para obter informações adicionais que não são capturadas por cidade, estado / província, país, código postal.Respostas:
Use um único campo de texto sem formatação!
A menos que você esteja construindo um banco de dados para otimização da entrega ou outro uso altamente local, basta seguir em frente e armazenar o endereço completo como um campo de texto com quebras de linha padrão.
Se houver informações adicionais necessárias, como código postal ou rua para classificação e agrupamento para obter um desconto por correspondência em massa, você poderá armazená-las em um campo adicional ou apenas determiná-las na hora do correio por meio de algumas lógica bastante simples. (Ou você pode atribuir a cada endereço uma chave permanente e obter informações sobre descontos fornecidas por meio de outras tabelas.)
Agora, não estou dizendo que você não deve fornecer um formulário de endereço com várias partes com listas de cidades e estados e talvez uma referência automática à API de endereço de serviço postal de um país , mas não perguntou sobre como criar um formulário para entrada do usuário, você perguntou como armazenar o endereço em um banco de dados.
Obviamente, se você fizer esse formulário, poderá armazenar um blob JSON ou XML para que os campos possam ser preenchidos novamente, mas esses dados não são necessariamente necessários para o banco de dados ...
fonte
SELECT * FROM Customers C INNER JOIN PostalCodes P ON C.Address LIKE '%'+P.code + '%'
E já observei que é possível incluir os campos distintos de agrupamento e classificação, no mesmo registro ou em uma tabela separada com uma relação de muitos para muitos entre endereços e aspectos de classificação.Como em tudo, existe um padrão internacional. Nesse caso, é a ISO / IEC 19773 Parte 08: Estrutura de dados para dados postais da UPU . Mas, como sempre, com os padrões internacionais, eles são realmente complexos. Este possui 30 páginas e define cerca de 50 elementos possíveis que podem fazer parte de um endereço postal completo para cobrir qualquer esquema de endereçamento possível usado em algum lugar do mundo.
Embora essa possa ser a maneira correta de armazenar um endereço, pode não ser a praticável .
Para obter uma visão geral de como os endereços em diferentes países são exibidos, consulte o artigo da Wikipedia sobre endereços postais . Como você vê, quase todos os países usam pessoa, número da casa, rua e cidade (mas existem alguns casos estranhos, como o Irã, onde os edifícios têm nomes em vez de números ou o Japão, onde algumas cidades usam sistemas de coordenadas ). Além disso, alguns países são divididos em regiões e alguns os dividem ainda mais em sub-regiões. A maioria dos países usa CEPs de tamanhos diferentes, e geralmente você pode esperar que eles carreguem as mesmas informações que região, sub-região e cidade, mas geralmente ainda se espera que essas informações verifiquem se o CEP está correto.
Então, o que isso significa para o desenvolvedor de um banco de dados de endereços verdadeiramente internacional? Seja flexível. Não faça nenhum campo obrigatório e permita alguns campos opcionais de uso geral que podem ser usados para representar peculiaridades regionais.
fonte