I mitt förra inlägg skrev jag om att se till att din datamodell korrekt hanterar global information:nummer, valutor, telefonnummer, adresser, datum och tidszoner, bland annat. Jag har dock insett att många exempeldatamodeller har exakt det "självcentrerade" eller "Amerocentrerade" tillvägagångssättet som jag varnade för.
Som en amerikan som bor utomlands (i nästan 30 år nu) tycker jag ofta att människor gör för många antaganden om universaliteten i vad de vet. Till exempel antar vissa amerikaner att andra automatiskt förstår sitt lands postnummersystem och dess kompletterande ZIP+4-version. Enligt min erfarenhet har större delen av världen ingen aning om vad en ZIP+4 är.
Så jag tänkte att det vore bra att skriva om ett mer globalt förhållningssätt till modellering av adresser.
Adresser som är kända över hela världen
Låt oss ta några välkända och några mindre kända adresser runt om i världen och skapa en datamodell som stöder deras lagring.
Jag börjar med tilltalet till USA:s president:Vita huset.
Vita huset
1600 Pennsylvania Ave NW
Washington, DC 20500
Nu är 1600 vad som vanligtvis kallas gatunummer eller husnummer. Det är numret på huset (byggnaden) på gatan. Pennsylvania Avenue är namnet på gatan. "NW" är förkortningen av Northwest och hänvisar till den del av Washington där just denna adress finns. Intressant nog är 1600 Pennsylvania Avenue SE en helt annan adress; det är ett hyreshus.
Washington är alltså stadens namn. Och DC, eller District of Columbia, är "staten"; dock är DC speciell bland de amerikanska staterna. Washington D.C. är USA:s huvudstad, men den kallas inte riktigt för en stat, och den räknas inte som en av de 50 amerikanska staterna. (Det finns en delstat i Washington, men den ligger på den helt motsatta kusten från D.C. Du kanske känner att den är hemvist för Starbucks, Boeing och andra kända företag.) Vår poäng är att i det amerikanska postsystemet fungerar "DC" som vilken annan statlig förkortning som helst.
Nu, det numret:20500. I de flesta länder skulle detta kallas ett postnummer eller postnummer; Amerikaner kallar det postnummer. Postnummer (Zone Improvement Plan) introducerades i USA 1963. Vi ser att för Vita huset är postnumret 20500.
1983 ville US Postal Service vara mer exakt så de skapade ett utökat postnummer. Denna ZIP+4 innehåller de fem siffrorna i postnumret, ett bindestreck och ytterligare fyra siffror som pekar på en specifik plats i postnumret. ZIP+4 för den amerikanska presidenten är 20500-0001. ZIP+4 för First Lady (presidentens fru) är 20500-0002. Och Vita husets ZIP+4 är 20500-0003.
Även om ZIP+4 kan vara ganska exakt, hittar du sällan en ZIP+4 som används för en enda person. De hänvisar ofta till en postbox (för ett stort företag), en rad postlådor eller en stadsdel i en stad.
Beverly Hills 90210
Beroende på din ålder kanske du känner till den amerikanska tv-serien 90210 eller Beverly Hills 90210 . Denna populära tonårssåpopera är ett annat bra exempel på det amerikanska postsystemet på jobbet. Vissa människor tror att det är den exakta adressen till en stadsdel, en gata eller till och med ett visst hus.
Låt oss först börja med lite bakgrund. Beverly Hills är en stad i Kaliforniens Los Angeles County. Det är hem för många Hollywoodstjärnor och den exklusiva shoppinggatan Rodeo Drive (berömd i 1990-filmen Pretty Woman ).
https://goo.gl/maps/gqdvgRMNn472
Ett av postnumren i Beverly Hills är 90210, men staden Beverly Hills använder även andra postnummer (90209, 90211, 90212 och 90213). 90210-koden hänvisar till ett av de fina kvarteren i Beverly Hills, och därför till ett exklusivt område i en exklusiv del av Los Angeles.
Men postnumret 90210 sträcker sig bortom Beverly Hills. Det inkluderar några av de angränsande Hollywood Hills. Du vet kullarna där "HOLLYWOOD"-skylten finns? Det står i postnumret 90210.
https://goo.gl/maps/Fa2t8SQaGj222
Den återstående delen av denna ZIP, som sträcker sig norrut till Mulholland Drive (förevigad i David Lynchs psykologiska thriller från 2001), lämnades som en del av kullarna i Los Angeles, där den förblev anonym i årtionden.
Buckingham Palace
Buckingham Palace har en enkel adress, så om du vill skriva till drottning Elizabeth, skicka bara ett meddelande till:
Buckingham Palace
London SW1A 1AA, Storbritannien
I den här adressen hittar vi en udda typ av postnummer. I Storbritannien (plus de länder som utgör det brittiska samväldet och de flesta tidigare brittiska kolonierna) är postnumret alfanumeriskt. Jämför detta med det helt numeriska postnumret som finns i många andra länder, inklusive postnumren i USA
I Storbritannien innehåller postnumret vanligtvis en "stadskod" på en eller två bokstäver som är uppkallad efter en lokal stad eller ett område i London. I vårt exempel är detta "SW", som syftar på den sydvästra delen av London. Den följs av en eller två siffror som anger ett distrikt i den regionen – "1A". Sedan finns det en godtycklig kod som består av en siffra och två bokstäver, som i det här fallet är "1AA".
Nummer 10
Du kan hitta den brittiske premiärministern på adressen känd som "Number 10", som har fått sitt namn från byggnadens gatunummer:
10 Downing St
London SW1A 2AA, Storbritannien
Precis som Buckingham Palace ligger "Number 10" i den sydvästra delen av London. Postnummer i vissa brittiska städer kan till och med hjälpa dig att känna igen i vilken del av staden en adress finns.
Élyséepalatset
Å andra sidan kan du vanligtvis hitta den franske presidenten på denna adress:
55 Rue du Faubourg Saint-Honoré 75008
Paris, Frankrike
Det här exemplet följer ett välbekant mönster:gatunummer (55) och gatunamn (Rue du Faubourg Saint-Honoré) kommer först.
Därefter hittar vi ett 5-siffrigt postnummer. I franska postnummer anger de två första siffrorna i vilket "departement" (region) adressen finns. För parisiska postnummer anger de tre sista siffrorna adressens "arrondissement" (grannskap). Så i det här fallet indikerar postnumret adressens grannskap.
Mindre kända (men komplicerade) adresser
Indien
Tillräckligt med enkla adresser. I vissa länder är det ovanligt att man använder gatunummer. Istället kan adresser ange att en plats ligger bredvid en välkänd webbplats. Eller så kan de bara ange namnet på byggnaden och området där den ligger.
Här är adressen till ett Hyatt-hotell i den indiska staden Pune, i delstaten Maharahashtra.
Hyatt Pune
Intill Aga Khan Palace, Nagar Road, Kalyani Nagar
Pune, Indien, 411006
Här hittar vi ett annat postnummer, men i det här fallet är det inte 4 siffror, inte 5 siffror, inte heller 5+4 siffror, inte heller en blandning av siffror och bokstäver. Det är 6 siffror. Det indiska postnumret börjar med en regionskod, sedan en subregionskod och en kod som representerar sorteringsdistriktet. Det är inte särskilt användbar information om du försöker hitta den här platsen personligen!
I det här fallet nämns det inte i vilken delstat Pune ligger. Men när flera städer delar samma namn men ligger i olika indiska delstater kan en stat inkluderas i adressen.
Vi hittar ett gatunamn (Nagar Road) och indikeringen av kvarteret (Kalyani Nagar), men det finns inget egentligt gatunummer. Du kan gå upp och ner på Nagar Road och leta efter den här platsen. Därför finner vi att platsen är specificerad som intill en välkänd plats – Aga Khan-palatset.
Japan
Jag ska ta ett exempel från ytterligare ett Hyatt-hotell, som du kanske har sett i filmen "Lost In Translation":
Park Hyatt Tokyo
3-7-1-2 Nishi Shinjuku, Shinjuku-Ku
Tokyo, Japan, 163-1055
Bara för att säga det uppenbara, jag använder västerländsk formatering och en engelsk översättning snarare än japanska tecken här.
Återigen, du kan hitta delar av stadsdel, stad och postnummer i den här adressen. "Nishi-Shinjuku" (西新宿) är skyskrapans affärsdistrikt i stadsdelen Shinjuku i Tokyo.
På vilken gata ligger detta hotell? Från adressen har du ingen aning. Gatunamn används sällan, och de flesta japanska gator har inte ens namn (förutom i ett fåtal städer, som Kyoto).
Och försök inte gå nerför gatan och leta efter byggnader märkta 3-7-1-2. Dessa siffror hänvisar till distrikt, sektioner, underavdelningar och specifika stadskvarter (i detta fall inom Tokyo).
Det japanska adresssystemet, när det är skrivet i västerländsk stil, börjar med den minsta enheten (vanligtvis ett husnummer) och fortsätter till den största. Du hittar ofta "Chome" i adressen, som är en stadsdel (丁目 chōme).
Varför självcentrerad adressmodellering?
Ett problem med adressmodellering är när en författare skapar en modell som bara stöder hans lokala adress korrekt. Jag har förklarat detta i mitt andra inlägg, så jag ska bara sammanfatta huvudproblemen:
- En datamodell som är designad för en lokal publik kan ofta inte acceptera information från ett annat land. Till exempel, om någon från Storbritannien försökte ange sitt åttasiffriga alfanumeriska postnummer i ett femsiffrigt, numeriskt endast amerikanskt postnummer, skulle det inte fungera.
- En internationell publik kanske inte förstår eller använder samma termer, format och layouter som en lokal publik gör.
Så varför händer detta? Det finns en brist på framförhållning, men det har också med träning att göra. Om datamodellerare inte får lära sig att tänka globalt kommer de nästan alltid att tänka lokalt. Inte för att understryka poängen – återigen, jag nämnde det i inlägget som hänvisas till ovan – men det är vanligt i många läroböcker för databasmodellering att fokusera på ett amerocentrerat tillvägagångssätt.
Lyckligtvis är det inte en svår förmåga att tänka globalt i termer av datamodellering för multinationella adresser. Det har att göra med eftertänksamhet och flexibilitet.
Lösningen:Global adressmodellering
Jag gjorde en datamodell för att lagra globala adresser.
Det finns två allmänna adressradsfält (AddressLine1
och AddressLine2
för Address
tabell) som lagrar nästan vilken adress som helst. Detta borde fungera oavsett om vi lagrar "10 Downing St", "intill Aga Khan Palace" eller "3-7-1-2 Nishi Shinjuku". Risken är att två fält på 70 tecken kan vara för korta för vissa adresser. Ändå borde 140 tecken räcka för nästan varje situation.
Jag har använt den gemensamma konventionen med två adressradsfält så att jag kan göra AddressLine1
obligatorisk (ej nullbar) och AddressLine2
valfritt (nullbar). Så den här modellen kräver att en del adressinformation ges, men det tillåter både mycket korta och mycket långa, detaljerade adresser.
Låt oss sedan titta på postnumret. PostCode
fältet är flexibelt och har inga begränsningar för den information som kan lagras i det. Detta skulle stödja amerikanska postnummer, amerikanska postnummer+4, 4-siffriga postnummer, 5-siffriga postnummer, brittiska postnummer (med bokstäver och siffror) och många andra typer av postnummer.
Region
fält lagrar regioner inom ett land (dvs. stater, provinser, avdelningar, etc.) men detta fält är nullbart. Naturligtvis kräver en global adressmodell att landet anges med en ISO-landskod med två tecken (Country
fältet i Address
tabell).
Öppna nu modellen och justera den. Det är därför vi skapade modellen i första hand. Kanske kan du se sätt att förbättra modellen. Eller så kanske du behöver anpassa den efter dina specifika behov. Var snäll och lek med den och gör den till din egen.
Vad är din adress? Kan det passa in i denna Address
bordsdesign? Om inte, låt oss veta! Det skulle vara intressant att veta vad som måste utökas för att stödja din adress.