J'ai besoin de stocker des codes postaux dans une base de données. Quelle doit être la taille de la colonne?

StackOverflow https://stackoverflow.com/questions/325041

Question

Je m'attends à ce que la colonne soit un VARCHAR2, dans ma base de données Oracle.

Les zips américains sont au nombre de 9.

Canadien a 7 ans.

Je pense que 32 caractères seraient une limite supérieure raisonnable

Qu'est-ce qui me manque?

[EDIT] TIL: 12 est une réponse raisonnable à la question Merci à tous ceux qui ont contribué.

Était-ce utile?

La solution

En parcourant la page des codes postaux de Wikipedia , 32 caractères suffisent amplement. Je dirais que même 16 caractères, c'est bien.

Autres conseils

Pourquoi déclareriez-vous une taille de champ plus grande que les données réelles que vous comptez y stocker?

Si la version initiale de votre application doit prendre en charge les adresses américaine et canadienne (ce que je déduis du fait que vous indiquez ces tailles dans votre question), je déclarerais le champ VARCHAR2 (9) ( ou VARCHAR2 (10) si vous avez l'intention de stocker le trait d'union dans les champs ZIP + 4). Même en regardant les messages que d'autres ont écrits sur les codes postaux d'un pays à l'autre, VARCHAR2 (9) ou VARCHAR2 (10) serait suffisant pour la plupart des pays, sinon tous.

En bas de la ligne, vous pouvez toujours ALTER la colonne pour augmenter la longueur en cas de besoin. Mais il est généralement difficile d’empêcher quelqu'un, quelque part, de décider de se faire "créatif". et collez 50 caractères dans un champ VARCHAR2 (50) pour une raison ou une autre (c’est-à-dire parce qu’ils veulent une autre ligne sur une étiquette d’expédition). Vous devez également traiter les cas limites (chaque application affichant un code ZIP gérera-t-elle 50 caractères?). De plus, lorsque les clients récupèrent des données de la base de données, ils allouent généralement de la mémoire en fonction de la taille maximale des données à récupérer, et non de la longueur réelle d'une ligne donnée. Ce n’est probablement pas une grosse affaire dans ce cas précis, mais 40 octets par ligne pourraient représenter une bonne quantité de RAM dans certaines situations.

En passant, vous pouvez également envisager de stocker séparément (du moins pour les adresses américaines) le code postal et l'extension +4. Il est généralement utile de pouvoir générer des rapports par région géographique. Il est souvent utile de regrouper tous les éléments d’un code postal au lieu de les décomposer par l’extension +4. À ce stade, il est utile de ne pas avoir à essayer de SUBSTR les 5 premiers caractères du code postal.

Ce qui vous manque, c'est une raison pour laquelle vous avez besoin que le code postal soit traité spécialement.

Si vous n'avez pas vraiment besoin de TRAVAILLER avec un code postal, je vous suggère de ne pas vous en préoccuper. Par travail, je veux dire faire un traitement spécial plutôt que d’utiliser simplement pour imprimer des étiquettes d’adresse, etc.

.

Créez simplement trois ou quatre champs d'adresse de VARCHAR2 (50) [par exemple] et laissez l'utilisateur saisir ce qu'il veut.

Avez-vous vraiment besoin de regrouper vos commandes ou vos transactions par code postal? Je ne le pense pas, car différents pays ont des systèmes très différents pour ce domaine.

Normalisation? Les codes postaux peuvent être utilisés plusieurs fois et peuvent être liés à des noms de rue ou à des noms de villes. Table (s) séparée (s).

Les codes postaux canadiens ne comportent que 6 caractères, sous forme de lettres et de chiffres (LNL NLN)

Le Royaume-Uni a publié des normes: Catalogue de normes de données du gouvernement britannique

Max 35 characters per line 

Adresse postale internationale:

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 

La longueur du code postal britannique est:

Minimum 6 and Maximum 8 characters 

Si vous souhaitez intégrer des codes postaux à une base de données, il est préférable d’utiliser la base de données geonames. Même s’il est difficile à utiliser et à comprendre, il s’agit de la plus grande base de données géographique disponible librement pour les utilisateurs comme nous.

Toutes les autres bases de données de ce type ont plus ou moins probablement les mêmes données et la même structure. Ils suppriment simplement certaines informations supplémentaires / redondantes de la base de données. Si vous ne le faites que pour des systèmes utilisant peu de charge et utilisant leurs services gratuits, les limites sont attrayantes et offrent une interface plus simple avec json et ajax. Vous pouvez afficher les limites ici

.

Pour votre information, varchar (20) suffit pour stocker les codes postaux

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top