39 votes

Quelle est la "meilleure" façon de stocker des adresses internationales dans une base de données ?

Qu'est-ce que le " meilleur "Comment stocker des adresses internationales dans une base de données ? Répondez sous la forme d'un schéma et d'une explication des raisons pour lesquelles vous avez choisi de normaliser (ou non) comme vous l'avez fait. Expliquez également pourquoi vous avez choisi le type et la longueur de chaque champ.

Note : Vous décidez des champs que vous jugez nécessaires.

25voto

DrPizza Points 9355

Texte simple et libre.

La validation de tous les codes postaux/zip du monde est trop difficile ; une liste fixe de pays est trop sensible sur le plan politique ; l'obligation d'un État/région/autre subdivision administrative est tout simplement inappropriée (on me demande trop souvent dans quel comté je vis - alors que ce n'est pas le cas, car le Grand Londres n'est pas du tout un comté).

Plus précisément, c'est tout simplement inutile. Il est très peu probable que votre candidature fasse l'objet d'une modélisation des adresses de quelque manière que ce soit. Si vous voulez une adresse postale, demandez l'adresse postale. La plupart des gens ne sont pas stupides au point de mettre autre chose qu'une adresse postale, et s'ils le font, ils peuvent dire adieu à leur nouvel achat.

L'exception à cette règle est si vous faites quelque chose qui est naturellement limité à un seul pays de toute façon. Dans ce cas, vous devriez demander, par exemple, la paire {code postal, numéro de maison}, qui suffit à identifier une adresse postale. J'imagine que vous pourriez obtenir des résultats similaires avec le code postal étendu aux États-Unis.

9voto

The Brawny Man Points 447

Dans le passé, j'ai modelé les formulaires qui devaient être internationaux en fonction des formulaires d'adresse de livraison ups/fedex sur leurs sites web (je me suis dit que s'ils ne savent pas comment gérer une commande internationale, nous sommes tous fichus). Les champs qu'ils utilisent peuvent servir de référence pour la mise en place de votre schéma.

5voto

MSalters Points 74024

En général, vous devez comprendre pourquoi vous voulez une adresse. Est-ce pour l'expédition/le courrier ? Dans ce cas, il n'y a qu'une seule exigence, celle de séparer le pays. Les autres lignes sont libres et doivent être remplies par l'utilisateur. La raison en est la stratégie commune de transfert du courrier : tout courrier entrant pour un pays étranger est transféré sans regarder les autres lignes d'adresse. Ainsi, les informations détaillées ne sont analysées que par le trieur de courrier situé dans le pays même. Tout comme le destinataire, il connaît les conventions nationales.

(UPS peut regrouper certains petits pays européens, par exemple tous les Pays-Bas sont probablement desservis par la Belgique - l'idée reste valable).

2voto

Cem Kalyoncu Points 4740

Je pense que l'ajout du pays/de la ville et du texte de l'adresse sera suffisant. Le pays et la ville doivent être séparés pour les rapports. Responsables toujours demander ce genre de rapports que vous n'attendez pas et je ne préfère pas lancer une requête LIKE dans une grande base de données.

2voto

Matt Points 21

Ne pas donner à Facebook un respect excessif. Cependant, la structure globale de la base de données semble être négligée dans de nombreuses applications web lancées chaque jour. Évidemment, je ne pense pas qu'il existe une solution parfaite qui couvre toutes les variables potentielles de la structure de l'adresse sans un certain travail. Cela dit, avec la saisie automatique, Facebook parvient à éliminer la majorité des entrées redondantes des données de localisation. Pour ce faire, ils organisent suffisamment bien leur base de données pour fournir au client des informations d'autocomplétion en temps réel, à faible coût et sans erreur, ce qui leur permet de choisir plus ou moins le bon emplacement à partir d'une liste existante.

Je pense que la meilleure solution est d'accéder à une base de données tierce qui contient l'étendue géographique souhaitée et de l'utiliser pour ensemencer initialement les informations de localisation de l'utilisateur. Cela vous permettra d'éviter d'avoir à faire le travail de création de votre propre base de données. Avec un peu de chance, vous pourrez réduire la charge de votre serveur en permettant à vos nouveaux utilisateurs de recevoir les informations de complétion automatique correctes directement de votre fournisseur tiers. En fin de compte, vous serez en mesure de remplir la plupart des champs de saisie automatique pour les informations de localisation telles que la ville, le pays, etc. à partir des informations contenues dans votre propre base de données, à partir des données saisies par les utilisateurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X