In mijn laatste bericht schreef ik over ervoor zorgen dat je datamodel goed omgaat met globale informatie:onder andere getallen, valuta, telefoonnummers, adressen, datums en tijdzones. Ik heb me echter gerealiseerd dat veel voorbeeldgegevensmodellen precies de "self-centric" of "Amero-centric" benadering hebben waarvoor ik waarschuwde.
Als Amerikaan die in het buitenland woont (nu al bijna 30 jaar), merk ik vaak dat mensen te veel aannames doen over de universaliteit van wat ze weten. Sommige Amerikanen gaan er bijvoorbeeld van uit dat anderen automatisch het postcodesysteem van hun land en de aanvullende ZIP+4-versie begrijpen. In mijn ervaring heeft het grootste deel van de wereld geen idee wat een ZIP+4 is.
Dus ik dacht dat het goed zou zijn om te schrijven over een meer globale benadering van het modelleren van adressen.
Adressen die over de hele wereld bekend zijn
Laten we een aantal bekende en wat minder bekende adressen van over de hele wereld nemen en een gegevensmodel maken dat hun opslag ondersteunt.
Ik begin met het adres van de president van de Verenigde Staten:het Witte Huis.
Witte Huis
1600 Pennsylvania Ave NW
Washington, DC 20500
Nu is 1600 wat gewoonlijk het huisnummer of huisnummer wordt genoemd. Dat is het nummer van het huis (gebouw) aan de straat. Pennsylvania Avenue is de naam van de straat. "NW" is de afkorting van Northwest en verwijst naar het gedeelte van Washington waar dit specifieke adres zich bevindt. Interessant is dat 1600 Pennsylvania Avenue SE een heel ander adres is; het is een flatgebouw.
Washington is dan de naam van de stad. En DC, of District of Columbia, is de "staat"; DC is echter speciaal onder de Amerikaanse staten. Washington D.C. is de hoofdstad van de Verenigde Staten, maar wordt niet correct een staat genoemd en telt niet als een van de 50 Amerikaanse staten. (Er is een staat Washington, maar deze ligt aan de volledig tegenovergestelde kust van D.C. U kent het misschien als de thuisbasis van Starbucks, Boeing en andere beroemde bedrijven.) Ons punt is dat in het Amerikaanse postsysteem "DC" functioneert zoals elke andere staatsafkorting.
Nu, dat aantal:20500. In de meeste landen zou dit een postcode of postcode worden genoemd; Amerikanen noemen het de postcode. ZIP-codes (Zone Improvement Plan) werden in 1963 in de VS geïntroduceerd. We zien dat voor het Witte Huis de postcode 20500 is.
In 1983 wilde de US Postal Service nauwkeuriger zijn, dus creëerden ze een uitgebreide ZIP+4-code. Deze ZIP+4 bevat de vijf cijfers van de postcode, een koppelteken en vier extra cijfers die verwijzen naar een specifieke locatie binnen de postcode. De ZIP+4 van de Amerikaanse president is 20500-0001. De ZIP+4 van de First Lady (de vrouw van de president) is 20500-0002. En de ZIP+4 van het Witte Huis is 20500-0003.
Hoewel de ZIP+4 behoorlijk nauwkeurig kan zijn, zul je zelden een ZIP+4 vinden die voor één persoon wordt gebruikt. Ze verwijzen vaak naar een postbus (voor een groot bedrijf), een reeks postbussen of een wijk binnen een stad.
Beverly Hills 90210
Afhankelijk van je leeftijd ken je misschien de Amerikaanse tv-serie 90210 of Beverly Hills 90210 . Deze populaire tienersoap is een ander goed voorbeeld van het Amerikaanse postsysteem aan het werk. Sommige mensen denken dat het het precieze adres is van een buurt, een straat of zelfs een bepaald huis.
Laten we eerst beginnen met wat achtergrond. Beverly Hills is een stad in Los Angeles County in Californië. Het is de thuisbasis van vele Hollywood-sterren en de chique winkelstraat Rodeo Drive (beroemd gemaakt in de film Pretty Woman uit 1990 ).
https://goo.gl/maps/gqdvgRMNn472
Een van de postcodes in Beverly Hills is 90210, maar de stad Beverly Hills gebruikt ook andere postcodes (90209, 90211, 90212 en 90213). De 90210-code verwijst naar een van de chiquere buurten van Beverly Hills, en dus naar een exclusieve buurt in een chique deel van Los Angeles.
Maar de postcode van 90210 reikt verder dan Beverly Hills. Het omvat enkele van de aangrenzende Hollywood Hills. Kent u de heuvels waar het bord "HOLLYWOOD" staat? Dat staat in de postcode 90210.
https://goo.gl/maps/Fa2t8SQaGj222
Het resterende deel van deze ZIP, dat zich noordwaarts uitstrekt tot Mulholland Drive (vereeuwigd in de psychologische thriller van David Lynch uit 2001), werd achtergelaten als onderdeel van de heuvels van Los Angeles, waar het decennialang anoniem bleef.
Buckingham Palace
Buckingham Palace heeft een eenvoudig adres, dus als je koningin Elizabeth wilt schrijven, stuur dan een briefje naar:
Buckingham Palace
Londen SW1A 1AA, Verenigd Koninkrijk
In dit adres vinden we een vreemd type postcode. In het VK (plus de landen die deel uitmaken van het Britse Gemenebest en de meeste voormalige Britse koloniën) is de postcode alfanumeriek. Vergelijk dit met de volledig numerieke postcode die in veel andere landen wordt gevonden, inclusief de postcodes van de V.S.
In het VK bevat de postcode meestal een "stadscode" van één of twee letters die is genoemd naar een lokale stad of een deel van Londen. In ons voorbeeld is dit de "SW", die verwijst naar het zuidwestelijke deel van Londen. Het wordt gevolgd door een of twee cijfers die een district in die regio aanduiden - de "1A". Dan is er een willekeurige code bestaande uit één cijfer en twee letters, in dit geval "1AA".
Nummer 10
U kunt de Britse premier vinden op het adres dat bekend staat als "Number 10", dat zijn naam ontleent aan het huisnummer van het gebouw:
10 Downing St
Londen SW1A 2AA, Verenigd Koninkrijk
Net als Buckingham Palace bevindt "Number 10" zich in het zuidwestelijke deel van Londen. Postcodes in sommige Britse steden kunnen je zelfs helpen te herkennen in welk deel van de stad een adres zich bevindt.
Élysée-paleis
Aan de andere kant kunt u de Franse president over het algemeen op dit adres vinden:
55 Rue du Faubourg Saint-Honoré 75008
Parijs, Frankrijk
Dit voorbeeld volgt een bekend patroon:huisnummer (55) en straatnaam (Rue du Faubourg Saint-Honoré) komen eerst.
Vervolgens vinden we een 5-cijferige postcode. In Franse postcodes geven de eerste twee cijfers aan in welk departement (regio) het adres zich bevindt. Voor Parijse postcodes geven de laatste drie cijfers het "arrondissement" (buurt) van het adres aan. Dus in dit geval geeft de postcode de buurt van het adres aan.
Minder bekende (maar ingewikkelde) adressen
India
Genoeg simpele adresjes. In sommige landen is het zeldzaam om huisnummers te gebruiken. In plaats daarvan kunnen adressen aangeven dat een locatie zich naast een bekende site bevindt. Of ze noemen gewoon de naam van het gebouw en de buurt waarin het zich bevindt.
Hier is het adres van een Hyatt-hotel in de Indiase stad Pune, in de staat Maharahashtra.
Hyatt Pune
Grenzend aan Aga Khan Palace, Nagar Road, Kalyani Nagar
Poona, India, 411006
Hier vinden we nog een postcode, maar in dit geval is het geen 4 cijfers, noch 5 cijfers, noch 5+4 cijfers, noch een mix van cijfers en letters. Het is 6 cijfers. De Indiase postcode begint met een regiocode, vervolgens een subregiocode en een code die het sorteerdistrict voorstelt. Dat is niet erg nuttige informatie als u deze locatie persoonlijk probeert te vinden!
In dit geval is er geen melding gemaakt van de staat waarin Pune zich bevindt. Wanneer echter meerdere steden dezelfde naam hebben maar zich in verschillende Indiase staten bevinden, kan een staat in het adres worden opgenomen.
We vinden een straatnaam (Nagar Road) en de aanduiding van de buurt (Kalyani Nagar), maar een echt huisnummer ontbreekt. Je zou Nagar Road op en neer kunnen lopen op zoek naar deze locatie. We zien dus dat de locatie is gespecificeerd als grenzend aan een bekende locatie - het Aga Khan-paleis.
Japan
Ik zal een voorbeeld nemen van nog een Hyatt-hotel, dat je misschien hebt gezien in de film "Lost In Translation":
Park Hyatt Tokyo
3-7-1-2 Nishi Shinjuku, Shinjuku-Ku
Tokio, Japan, 163-1055
Voor alle duidelijkheid:ik gebruik hier westerse opmaak en een Engelse vertaling in plaats van Japanse karakters.
Ook hier vind je elementen van buurt, stad en postcode terug in dit adres. "Nishi-Shinjuku" (西新宿) is het zakendistrict met wolkenkrabbers in de wijk Shinjuku in Tokio.
In welke straat ligt dit hotel? Van het adres heb je geen idee. Straatnamen worden zelden gebruikt, en de meeste Japanse straten hebben zelfs geen naam (behalve in enkele steden, zoals Kyoto).
En probeer niet over straat te lopen op zoek naar gebouwen met de aanduiding 3-7-1-2. Deze nummers verwijzen naar districten, secties, subsecties en specifieke stadsblokken (in dit geval binnen Tokyo).
Het Japanse adressysteem begint, wanneer het in westerse stijl is geschreven, met de kleinste entiteit (meestal een huisnummer) en gaat door naar de grootste. Vaak vind je “Chome” in het adres, dat is een stadsdeel (丁目 chōme).
Waarom zelfgerichte adresmodellering?
Een probleem met adresmodellering is wanneer een auteur een model maakt dat alleen zijn lokale adres correct ondersteunt. Ik heb dit uitgelegd in mijn andere post, dus ik zal de belangrijkste problemen samenvatten:
- Een datamodel dat is ontworpen voor een lokaal publiek kan vaak geen informatie uit een ander land accepteren. Als iemand uit het VK bijvoorbeeld zou proberen zijn achtcijferige alfanumerieke postcode in te voeren in een vijfcijferig, alleen numeriek Amerikaans ZIP-veld, zou dat niet werken.
- Een internationaal publiek begrijpt of gebruikt mogelijk niet dezelfde termen, indelingen en lay-outs als een lokaal publiek.
Dus waarom gebeurt dit? Er is een gebrek aan vooruitziendheid, maar het heeft ook met opleiding te maken. Als datamodelleurs niet wordt geleerd globaal te denken, gaan ze bijna altijd lokaal denken. Om het punt niet te overdrijven - nogmaals, ik noemde het in de post waarnaar hierboven wordt verwezen - maar het is gebruikelijk in veel handboeken over databasemodellering om zich te concentreren op een Amero-gerichte benadering.
Gelukkig is globaal denken in termen van datamodellering voor multinationale adressen geen moeilijke vaardigheid om te verwerven. Het heeft te maken met vooruitdenken en flexibiliteit.
De oplossing:globale adresmodellering
Ik heb een datamodel gemaakt om globale adressen op te slaan.
Er zijn twee algemene adresregelvelden (AddressLine1
en AddressLine2
van het Address
tabel) waarin bijna elk adres kan worden opgeslagen. Dit zou moeten werken, of we nu "10 Downing St", "grenzend aan Aga Khan Palace" of "3-7-1-2 Nishi Shinjuku" opslaan. Het risico is dat twee velden van 70 tekens voor sommige adressen te kort zijn. Toch zouden 140 tekens genoeg moeten zijn voor bijna elke situatie.
Ik heb de algemene conventie van twee adresregelvelden gebruikt, zodat ik AddressLine1
. kan maken verplicht (niet nullable) en AddressLine2
optioneel (nullable). Dit model vereist dus dat sommige adresinformatie wordt gegeven, maar het staat zowel zeer korte als zeer lange, gedetailleerde adressen toe.
Laten we vervolgens eens kijken naar de postcode. De PostCode
veld is flexibel en heeft geen beperkingen voor de informatie die erin kan worden opgeslagen. Dit zou ondersteuning bieden voor Amerikaanse postcodes, Amerikaanse postcodes+4, 4-cijferige postcodes, 5-cijferige postcodes, Britse postcodes (met letters en cijfers) en vele andere soorten postcodes.
De Region
veld slaat regio's binnen een land op (d.w.z. staten, provincies, afdelingen, enz.), maar dit veld is nullable. Natuurlijk vereist een globaal adresmodel dat het land wordt gespecificeerd via een ISO-landcode van twee tekens (de Country
veld in het Address
tafel).
Open nu het model en geef het een tweak. Daarom hebben we het model in de eerste plaats gemaakt. Misschien ziet u manieren om het model te verbeteren. Of misschien moet u het aanpassen aan uw specifieke behoeften. Voel je vrij om ermee te spelen en het je eigen te maken.
Wat is je adres? Past het in dit Address
tafel ontwerp? Zo niet, laat het ons weten! Het zou interessant zijn om te weten wat er moet worden uitgebreid om uw adres te ondersteunen.