Dans mon dernier article, j'écrivais sur la manière de s'assurer que votre modèle de données gère correctement les informations globales :nombres, devises, numéros de téléphone, adresses, dates et fuseaux horaires, entre autres. Cependant, j'ai réalisé que de nombreux exemples de modèles de données ont exactement l'approche "auto-centrée" ou "améro-centrée" contre laquelle j'ai mis en garde.
En tant qu'Américain vivant à l'étranger (depuis près de 30 ans maintenant), je trouve souvent que les gens font trop d'hypothèses sur l'universalité de ce qu'ils savent. Par exemple, certains Américains supposent que d'autres comprennent automatiquement le système de code postal de leur pays et sa version supplémentaire ZIP + 4. D'après mon expérience, la plupart des gens dans le monde n'ont aucune idée de ce qu'est un ZIP+4.
J'ai donc pensé qu'il serait bon d'écrire sur une approche plus globale de la modélisation des adresses.
Adresses connues dans le monde entier
Prenons des adresses bien connues et d'autres moins connues dans le monde et créons un modèle de données qui prend en charge leur stockage.
Je commencerai par l'adresse du président des États-Unis :la Maison Blanche.
Maison Blanche
1600 Pennsylvania Avenue NW
Washington, DC 20500
Maintenant, 1600 est ce que l'on appelle généralement le numéro de rue ou le numéro de maison. C'est le numéro de la maison (bâtiment) dans la rue. Pennsylvania Avenue est le nom de la rue. "NW" est l'abréviation de Northwest et fait référence à la section de Washington où se trouve cette adresse particulière. Fait intéressant, 1600 Pennsylvania Avenue SE est une adresse complètement différente; c'est un immeuble à appartements.
Washington est donc le nom de la ville. Et DC, ou District de Columbia, est « l'État »; cependant, DC est spécial parmi les États américains. Washington DC est la capitale des États-Unis, mais elle n'est pas correctement qualifiée d'État et ne compte pas parmi les 50 États américains. (Il y a un État de Washington, mais il est situé sur la côte complètement opposée à D.C. Vous le connaissez peut-être comme la maison de Starbucks, Boeing et d'autres sociétés célèbres.) Notre point est que dans le système postal américain, "DC" fonctionne comme toute autre abréviation d'état.
Maintenant, ce nombre :20500. Dans la plupart des pays, cela serait appelé un code postal ou un code postal ; Les Américains l'appellent le code postal. Les codes postaux (Zone Improvement Plan) ont été introduits aux États-Unis en 1963. On voit que pour la Maison Blanche, le code postal est 20500.
En 1983, le service postal américain a voulu être plus précis et a donc créé un code ZIP + 4 étendu. Ce ZIP+4 comprend les cinq chiffres du code postal, un trait d'union et quatre chiffres supplémentaires qui pointent vers un emplacement spécifique dans le code postal. Le ZIP+4 du président américain est 20500-0001. Le ZIP+4 de la Première Dame (l'épouse du Président) est le 20500-0002. Et le ZIP+4 de la Maison Blanche est 20500-0003.
Bien que le ZIP+4 puisse être assez précis, vous trouverez rarement un ZIP+4 utilisé pour une seule personne. Ils font souvent référence à une boîte postale (pour une grande entreprise), à une gamme de boîtes postales ou à un quartier dans une ville.
Beverly Hills 90210
Selon votre âge, vous connaissez peut-être la série télévisée américaine 90210 ou Beverly Hills 90210 . Ce feuilleton populaire pour adolescents est un autre bon exemple du système postal américain au travail. Certains pensent qu'il s'agit de l'adresse précise d'un quartier, d'une rue ou même d'une maison en particulier.
Tout d'abord, commençons par un peu de contexte. Beverly Hills est une ville du comté de Los Angeles en Californie. Il abrite de nombreuses stars d'Hollywood et la rue commerçante haut de gamme Rodeo Drive (rendue célèbre dans le film de 1990 Pretty Woman ).
https://goo.gl/maps/gqdvgRMNn472
L'un des codes postaux de Beverly Hills est 90210, mais la ville de Beverly Hills utilise également d'autres codes postaux (90209, 90211, 90212 et 90213). Le code 90210 fait référence à l'un des quartiers les plus chics de Beverly Hills, et donc à un quartier exclusif dans un quartier chic de Los Angeles.
Mais le code postal 90210 s'étend au-delà de Beverly Hills. Il comprend certaines des collines voisines d'Hollywood. Vous connaissez les collines où se trouve le panneau « HOLLYWOOD » ? C'est dans le code postal 90210.
https://goo.gl/maps/Fa2t8SQaGj222
La section restante de ce ZIP, qui s'étend au nord jusqu'à Mulholland Drive (immortalisé dans le thriller psychologique de David Lynch en 2001), a été laissée dans les collines de Los Angeles, où elle est restée anonyme pendant des décennies.
Palais de Buckingham
Buckingham Palace a une adresse simple, donc si vous souhaitez écrire à la reine Elizabeth, envoyez simplement une note à :
Palais de Buckingham
Londres SW1A 1AA, Royaume-Uni
Dans cette adresse, on retrouve un type de code postal impair. Au Royaume-Uni (plus les pays qui composent le Commonwealth britannique et la plupart des anciennes colonies britanniques), le code postal est alphanumérique. Comparez cela avec le code postal entièrement numérique que l'on trouve dans de nombreux autres pays, y compris les codes postaux des États-Unis.
Au Royaume-Uni, le code postal contient généralement un «code de ville» à une ou deux lettres nommé pour une ville locale ou une zone de Londres. Dans notre exemple, il s'agit du "SW", qui fait référence à la partie sud-ouest de Londres. Il est suivi d'un ou deux chiffres signifiant un district dans cette région - le "1A". Ensuite, il y a un code arbitraire composé d'un chiffre et de deux lettres, qui dans ce cas est "1AA".
Numéro 10
Vous pouvez trouver le Premier ministre britannique à l'adresse connue sous le nom de "Number 10", qui tire son nom du numéro de la rue du bâtiment :
10, rue Downing
Londres SW1A 2AA, Royaume-Uni
Comme Buckingham Palace, "Number 10" est situé dans la partie sud-ouest de Londres. Les codes postaux de certaines villes du Royaume-Uni peuvent même vous aider à reconnaître dans quelle partie de la ville se trouve une adresse.
Palais de l'Élysée
En revanche, vous pouvez généralement retrouver le président français à cette adresse :
55 Rue du Faubourg Saint-Honoré 75008
Paris, France
Cet exemple suit un schéma familier :le numéro civique (55) et le nom de la rue (Rue du Faubourg Saint-Honoré) viennent en premier.
Ensuite, nous trouvons un code postal à 5 chiffres. Dans les codes postaux français, les deux premiers chiffres indiquent dans quel « département » (région) se trouve l'adresse. Pour les codes postaux parisiens, les trois derniers chiffres indiquent l'arrondissement de l'adresse. Ainsi, dans ce cas, le code postal indique le quartier de l'adresse.
Adresses moins connues (mais compliquées)
Inde
Assez d'adresses simples. Dans certains pays, il est rare d'utiliser des numéros de rue. Au lieu de cela, les adresses peuvent spécifier qu'un emplacement se trouve à côté d'un site bien connu. Ou ils peuvent simplement indiquer le nom du bâtiment et le quartier dans lequel il se trouve.
Voici l'adresse d'un hôtel Hyatt dans la ville indienne de Pune, dans l'état du Maharahashtra.
Hyatt Pune
Adjacent au Palais Aga Khan, Nagar Road, Kalyani Nagar
Pune, Inde, 411006
On retrouve ici un autre code postal, mais dans ce cas il ne s'agit pas de 4 chiffres, ni de 5 chiffres, ni de 5+4 chiffres, ni d'un mélange de chiffres et de lettres. C'est 6 chiffres. Le code postal indien commence par un code de région, puis un code de sous-région et un code représentant le district de tri. Ce n'est pas une information très utile si vous essayez de trouver cet endroit en personne !
Dans ce cas, il n'y a aucune mention de l'état dans lequel se trouve Pune. Cependant, lorsque plusieurs villes partagent le même nom mais sont situées dans des États indiens différents, un État peut être inclus dans l'adresse.
On trouve un nom de rue (Nagar Road) et l'indication du quartier (Kalyani Nagar), mais il n'y a pas de véritable numéro de rue. Vous pouvez monter et descendre Nagar Road à la recherche de cet endroit. Ainsi, nous constatons que l'emplacement est spécifié comme étant adjacent à un site bien connu - le Palais de l'Aga Khan.
Japon
Je vais prendre un exemple d'un autre hôtel Hyatt, que vous avez peut-être vu dans le film "Lost In Translation":
Park Hyatt Tokyo
3-7-1-2 Nishi Shinjuku, Shinjuku-Ku
Tokyo, Japon, 163-1055
Juste pour dire l'évidence, j'utilise ici le formatage occidental et une traduction anglaise plutôt que des caractères japonais.
Encore une fois, vous pouvez trouver des éléments de quartier, de ville et de code postal dans cette adresse. "Nishi-Shinjuku" (西新宿) est le quartier des affaires des gratte-ciel du quartier de Shinjuku à Tokyo.
Maintenant, dans quelle rue cet hôtel est-il situé ? De l'adresse, vous n'avez aucune idée. Les noms de rue sont rarement utilisés et la plupart des rues japonaises n'ont même pas de nom (sauf dans quelques villes, comme Kyoto).
Et n'essayez pas de marcher dans la rue à la recherche de bâtiments marqués 3-7-1-2. Ces chiffres font référence à des districts, des sections, des sous-sections et des pâtés de maisons spécifiques (dans ce cas, à Tokyo).
Le système d'adressage japonais, lorsqu'il est écrit dans le style occidental, commence par la plus petite entité (généralement un numéro de maison) et passe à la plus grande. Vous trouverez souvent "Chome" dans l'adresse, qui est un quartier de la ville (丁目 chōme).
Pourquoi la modélisation d'adresses autocentrée ?
Un problème avec la modélisation d'adresse est lorsqu'un auteur crée un modèle qui ne prend correctement en charge que son adresse locale. Je l'ai expliqué dans mon autre post, je vais donc résumer les principaux problèmes :
- Un modèle de données conçu pour un public local ne peut souvent pas accepter les informations d'un autre pays. Par exemple, si quelqu'un du Royaume-Uni essayait d'entrer son code postal alphanumérique à huit chiffres dans un champ ZIP américain à cinq chiffres, cela ne fonctionnerait pas.
- Un public international peut ne pas comprendre ou utiliser les mêmes termes, formats et mises en page qu'un public local.
Alors pourquoi cela arrive-t-il ? Il y a un manque de prévoyance, mais c'est aussi lié à la formation. Si les modélisateurs de données n'apprennent pas à penser globalement, ils vont presque toujours penser localement. Sans vouloir insister sur ce point - encore une fois, je l'ai mentionné dans le post référencé ci-dessus - mais il est courant dans de nombreux manuels de modélisation de bases de données de se concentrer sur une approche améro-centrée.
Heureusement, penser globalement en termes de modélisation de données pour les adresses multinationales n'est pas une compétence difficile à acquérir. Cela a à voir avec la prévoyance et la flexibilité.
La solution :modélisation d'adresses globales
J'ai créé un modèle de données pour stocker des adresses globales.
Il existe deux champs de ligne d'adresse génériques (AddressLine1
et AddressLine2
de l'Address
table) qui stockera presque n'importe quelle adresse. Cela devrait fonctionner que nous stockions "10 Downing St", "adjacent au Palais Aga Khan" ou "3-7-1-2 Nishi Shinjuku". Le risque est que deux champs de 70 caractères soient trop courts pour certaines adresses. Pourtant, 140 caractères devraient suffire pour presque toutes les situations.
J'ai utilisé la convention commune de deux champs de ligne d'adresse afin que je puisse faire AddressLine1
obligatoire (non nullable) et AddressLine2
facultatif (nullable). Donc, ce modèle exige que certains les informations d'adresse sont données, mais elles permettent une adresse détaillée à la fois très courte et très longue.
Ensuite, regardons le code postal/ZIP. Le PostCode
est flexible et n'a aucune contrainte sur les informations qui peuvent y être stockées. Cela prendrait en charge les codes postaux américains, les codes postaux américains ZIP + 4, les codes postaux à 4 chiffres, les codes postaux à 5 chiffres, les codes postaux britanniques (avec lettres et chiffres) et de nombreux autres types de codes postaux.
La Region
le champ stocke les régions d'un pays (c'est-à-dire les états, les provinces, les départements, etc.), mais ce champ est nullable. Bien sûr, un modèle d'adresse global nécessite que le pays soit spécifié via un code pays ISO à 2 caractères (le Country
dans le champ Address
tableau).
Maintenant, ouvrez le modèle et modifiez-le. C'est pourquoi nous avons créé le modèle en premier lieu. Peut-être que vous pouvez voir des façons d'améliorer le modèle. Ou peut-être avez-vous besoin de l'adapter à vos besoins spécifiques. N'hésitez pas à jouer avec et à vous l'approprier.
Quelle est ton adresse? Peut-il entrer dans cette Address
conception de table? Si ce n'est pas le cas, faites-le nous savoir ! Il serait intéressant de savoir ce qui doit être étendu pour prendre en charge votre adresse.