129 votes

Meilleures pratiques pour stocker les adresses postales dans une base de données (SGBDR)?

Existe-il des bonnes références pour les meilleures pratiques pour le stockage des adresses postales dans un SGBDR? Il semble qu'il y a beaucoup de compromis qui peuvent être faits et beaucoup d'avantages et les inconvénients de chaque être évalués -- sûrement ce qui a été fait maintes et maintes fois? Peut-être quelqu'un a au moins écrit fait quelques leçons apprises quelque part?

Exemples de compromis, je suis en train de parler de stocker le code postal comme un entier vs un char domaine, le numéro de la maison être stockée comme un champ distinct ou d'une partie de la ligne d'adresse 1 suite/appartement/etc numéros normalisés ou simplement stockés dans un segment de texte dans la ligne d'adresse 2, comment gérez-vous les zip +4 (champs séparés ou un grand domaine, entier vs texte)? etc.

Je suis principalement concernés par les états-UNIS à ce point, mais j'imagine qu'il y a un certain nombre de meilleures pratiques en ce qui concerne vous préparer à l'éventualité de la mondialisation (par exemple, la dénomination des champs de manière appropriée comme région à la place de l'etat ou code postal au lieu d'un code postal, etc.

28voto

Andrew Ferrier Points 1623

Comme une "internationale" de l'utilisateur, il n'y a rien de plus frustrant que de traiter avec un site web qui est orientée autour de NOUS-format des adresses. C'est un peu rude au premier abord, mais devient un sérieux problème lors de la validation est également trop zélé.

Si vous êtes concernés par niveau mondial, le seul conseil que j'ai, c'est de garder les choses de forme libre. Différents pays ont différentes conventions - dans certains cas, le numéro de la maison vient avant le nom de la rue, dans certains, il vient après. Certains états, certaines régions, certains départements, certaines combinaisons de ceux-ci. Ici, dans le royaume-UNI, le code postal n'est pas un code postal, c'est un code postal contenant à la fois des lettres et des chiffres.

Je vous conseille tout simplement de ~10 lignes de chaînes de longueur variable, avec un champ distinct pour un code postal (et faire attention à la façon dont vous décrivez que de composer avec les sensibilités nationales). Permettre à l'utilisateur/client de décider de la manière d'écrire leurs adresses.

25voto

splattne Points 48126

Si vous avez besoin d'informations complètes sur la manière dont les autres pays utilisent les adresses postales, voici un très bon lien de référence (Columbia University):

Le guide compulsif de Frank sur les adresses postales
Adressage efficace du courrier international

18voto

Paul Fisher Points 6602

Vous devez absolument envisager de stocker le numéro de rue en tant que champ de caractère plutôt qu'en tant que numéro, en raison de cas particuliers tels que les "demi-numéros" ou mon adresse actuelle, qui ressemble à "129A" - mais le A n'est pas considéré comme un appartement. numéro pour les services de livraison.

8voto

Jonathan Leffler Points 299946

Vous devriez certainement consulter "Est-ce une bonne façon de modéliser les informations d'adresse dans une base de données relationnelle", mais votre question n'est pas directement en double.

Il y a sûrement beaucoup de pré-existants réponses (voir l'exemple des modèles de données à DatabaseAnswers, par exemple). De nombreux pré-existantes, les réponses sont défectueux dans certaines circonstances (pas de prélèvement sur DB Réponses à toutes les).

Une question importante à considérer est la portée de ces adresses. Si votre base de données doit composer avec des adresses internationales, vous devez être plus flexible que si vous avez à traiter avec des adresses dans un pays.

De mon point de vue, il est souvent (ce qui ne signifie pas toujours) sensible à la fois compte du 'étiquette de l'adresse de l'image" de l'adresse et les analyser séparément le contenu. Cela vous permet de gérer les différences entre le placement des codes postaux, par exemple, entre les différents pays. Bien sûr, vous pouvez écrire un analyseur et un formateur qui gèrent les excentricités de différents pays (par exemple, les adresses des états-unis ont 2 ou 3 lignes; en revanche, les Britanniques, les adresses ont beaucoup plus; une seule adresse je vous écris pour régulièrement a 9 lignes). Mais il peut être plus facile à l'homme de faire l'analyse et la mise en forme et de laisser le SGBD juste stocker les données.

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