Je m'attends à ce que la colonne soit un VARCHAR2, dans ma base de données Oracle.
Les zips américains sont 9.
Le Canadien a 7 ans.
Je pense que 32 caractères serait une limite supérieure raisonnable
Qu'est-ce que je rate?
[EDIT] TIL: 12 est une réponse raisonnable à la question Merci à tous ceux qui ont contribué.
database
oracle
globalization
postal-code
EvilTeach
la source
la source
Réponses:
En parcourant la page des codes postaux de Wikipedia , 32 caractères devraient être plus que suffisants. Je dirais que même 16 caractères, c'est bien.
la source
Comme déjà soulevé par @ neil-mcguigan, wikipedia a une page décente sur le sujet. Sur la base de ces 12 caractères devraient le faire: http://en.wikipedia.org/wiki/List_of_postal_codes
L'article de wikipedia répertorie environ 254 pays, ce qui est plutôt bien pour l' UPU (Union postale universelle) qui compte 192 pays membres.
la source
Pourquoi déclareriez-vous une taille de champ supérieure aux données réelles que vous prévoyez d'y stocker?
Si la version initiale de votre application prend en charge les adresses américaines et canadiennes (ce que je déduis du fait que vous appelez ces tailles dans votre question), je déclarerais le champ comme VARCHAR2 (9) (ou VARCHAR2 ( 10) si vous avez l'intention de stocker le trait d'union dans les champs ZIP + 4). Même en examinant les messages que d'autres ont publiés sur les codes postaux d'un pays à l'autre, VARCHAR2 (9) ou VARCHAR2 (10) serait suffisant pour la plupart sinon tous les autres pays.
En bas de la ligne, vous pouvez toujours MODIFIER 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 d'être «créatif» et de mettre 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 tester les cas limites (est-ce que chaque application qui affiche un ZIP gère 50 caractères?). Et avec le fait que 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 qui seront extraites, et non de la longueur réelle d'une ligne donnée. Ce n'est probablement pas un gros problème dans ce cas précis, mais 40 octets par ligne pourraient être une bonne quantité de RAM dans certaines situations.
En passant, vous pouvez également envisager de stocker (au moins pour les adresses américaines) le code postal et l'extension +4 séparément. Il est généralement utile de pouvoir générer des rapports par région géographique, et vous pouvez souvent vouloir tout mettre dans un code postal plutôt que de le décomposer par l'extension +4. À ce stade, il est utile de ne pas avoir à essayer de SUBSTRER les 5 premiers caractères du code postal.
la source
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 effectuer un traitement spécial plutôt que de simplement utiliser 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 entrer ce qu'il veut.
Avez-vous vraiment besoin de regrouper vos commandes ou transactions par code postal? Je ne pense pas, car différents pays ont des régimes très différents dans ce domaine.
la source
Normalisation? Les codes postaux peuvent être utilisés plusieurs fois et peuvent être liés à des noms de rue ou de ville. Table (s) séparée (s).
la source
Les codes postaux canadiens ne comportent que 6 caractères, sous forme de lettres et de chiffres (LNLNLN)
la source
Le Royaume-Uni a publié des normes: UK Government Data Standards Catalog
Adresse postale internationale:
La longueur du code postal britannique est:
la source
Si vous souhaitez intégrer des codes postaux dans la base de données, il est préférable d'utiliser la base de données Geonames. Même si elle est difficile à utiliser et à comprendre, c'est la plus grande base de données géographique disponible gratuitement pour des 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 le faites uniquement pour des systèmes à faible charge, utilisez leurs services gratuits, les limites sont attrayantes et offrent une interface plus simple en utilisant json et ajax. Vous pouvez voir les limites ici
Pour votre information, varchar (20) est suffisant pour stocker les codes postaux
la source