I mit sidste indlæg skrev jeg om at sikre, at din datamodel korrekt håndterer globale oplysninger:numre, valutaer, telefonnumre, adresser, datoer og tidszoner, blandt andet. Jeg har dog indset, at mange eksempler på datamodeller har præcis den "selvcentrerede" eller "Amero-centrerede" tilgang, som jeg advarede imod.
Som amerikaner, der bor i udlandet (i næsten 30 år nu), oplever jeg ofte, at folk gør for mange antagelser om universaliteten af det, de ved. For eksempel antager nogle amerikanere, at andre automatisk forstår deres lands postnummersystem og dets supplerende ZIP+4-version. Efter min erfaring har det meste af verden ingen idé om, hvad en ZIP+4 er.
Så jeg tænkte, at det ville være godt at skrive om en mere global tilgang til modellering af adresser.
Adresser, der er kendt over hele verden
Lad os tage nogle velkendte og nogle mindre kendte adresser rundt om i verden og skabe en datamodel, der understøtter deres lagring.
Jeg starter med adressen til USA's præsident:Det Hvide Hus.
Det Hvide Hus
1600 Pennsylvania Ave NW
Washington, DC 20500
Nu er 1600 det, der generelt omtales som gadenummeret eller husnummeret. Det er nummeret på huset (bygningen) på gaden. Pennsylvania Avenue er navnet på gaden. "NW" er forkortelsen af Northwest og henviser til den del af Washington, hvor netop denne adresse er placeret. Interessant nok er 1600 Pennsylvania Avenue SE en helt anden adresse; det er en lejlighedsbygning.
Washington er altså byens navn. Og DC, eller District of Columbia, er "staten"; DC er dog speciel blandt de amerikanske stater. Washington D.C. er hovedstaden i USA, men den betegnes ikke korrekt som en stat, og den tæller ikke som en af de 50 amerikanske stater. (Der er en stat i Washington, men den ligger på den helt modsatte kyst fra D.C. Du kender den måske som hjemsted for Starbucks, Boeing og andre berømte virksomheder.) Vores pointe er, at "DC" fungerer i det amerikanske postsystem. som enhver anden statsforkortelse.
Nu, det tal:20500. I de fleste lande vil dette blive omtalt som et postnummer eller et postnummer; Amerikanerne kalder det postnummer. Postnummer (Zone Improvement Plan) blev introduceret i USA i 1963. Vi ser, at for Det Hvide Hus er postnummeret 20500.
I 1983 ønskede US Postal Service at være mere præcis, så de oprettede en udvidet postnummer. Denne ZIP+4 indeholder de fem cifre i postnummeret, en bindestreg og fire yderligere cifre, der peger på en bestemt placering i postnummeret. ZIP+4 for den amerikanske præsident er 20500-0001. ZIP+4 for First Lady (præsidentens hustru) er 20500-0002. Og ZIP+4 i Det Hvide Hus er 20500-0003.
Selvom ZIP+4 kan være ret præcist, vil du sjældent finde en ZIP+4, der bruges til en enkelt person. De henviser ofte til en postboks (til et stort firma), en række postkasser eller et kvarter i en by.
Beverly Hills 90210
Afhængigt af din alder kender du måske den amerikanske tv-serie 90210 eller Beverly Hills 90210 . Denne populære teen-sæbeopera er endnu et godt eksempel på det amerikanske postsystem i arbejde. Nogle mennesker tror, at det er den præcise adresse på et kvarter, en gade eller endda et bestemt hus.
Lad os først starte med lidt baggrund. Beverly Hills er en by i Californiens Los Angeles County. Det er hjemsted for mange Hollywood-stjerner og den eksklusive shoppinggade Rodeo Drive (berømt i 1990-filmen Pretty Woman ).
https://goo.gl/maps/gqdvgRMNn472
Et af postnumrene i Beverly Hills er 90210, men byen Beverly Hills bruger også andre postnumre (90209, 90211, 90212 og 90213). 90210-koden refererer til et af de fornemme kvarterer i Beverly Hills og derfor til et eksklusivt kvarter i en eksklusiv del af Los Angeles.
Men postnummeret 90210 strækker sig ud over Beverly Hills. Det omfatter nogle af de tilstødende Hollywood Hills. Kender du bakkerne, hvor "HOLLYWOOD"-skiltet er placeret? Det er i postnummeret 90210.
https://goo.gl/maps/Fa2t8SQaGj222
Den resterende del af denne ZIP, der strækker sig nordpå til Mulholland Drive (udødeliggjort i David Lynchs psykologiske thriller fra 2001), blev efterladt som en del af Los Angeles' bakker, hvor den forblev anonym i årtier.
Buckingham Palace
Buckingham Palace har en simpel adresse, så hvis du gerne vil skrive til dronning Elizabeth, skal du bare sende en besked til:
Buckingham Palace
London SW1A 1AA, Storbritannien
I denne adresse finder vi en ulige type postnummer. I Storbritannien (plus de lande, der udgør det britiske samvelde og de fleste tidligere britiske kolonier), er postnummeret alfanumerisk. Sammenlign dette med det helt numeriske postnummer, der findes i mange andre lande, inklusive postnumrene i USA
I Storbritannien indeholder postnummeret normalt en et- eller to-bogstavs "bykode" opkaldt efter en lokal by eller et område i London. I vores eksempel er dette "SW", som refererer til den sydvestlige del af London. Det efterfølges af et eller to cifre, der angiver et distrikt i den pågældende region - "1A". Så er der en vilkårlig kode bestående af et tal og to bogstaver, som i dette tilfælde er "1AA".
Nummer 10
Du kan finde den britiske premierminister på adressen kendt som "Number 10", som tager sit navn fra bygningens vejnummer:
10 Downing St
London SW1A 2AA, Storbritannien
Ligesom Buckingham Palace ligger "Number 10" i den sydvestlige del af London. Postnumre i nogle britiske byer kan endda hjælpe dig med at genkende, i hvilken del af byen en adresse er placeret.
Élysée Palace
På den anden side kan du generelt finde den franske præsident på denne adresse:
55 Rue du Faubourg Saint-Honoré 75008
Paris, Frankrig
Dette eksempel følger et velkendt mønster:gadenummer (55) og gadenavn (Rue du Faubourg Saint-Honoré) kommer først.
Dernæst finder vi et 5-cifret postnummer. I franske postnumre angiver de to første cifre, i hvilket "departement" (region) adressen er placeret. For parisiske postnumre angiver de sidste tre cifre adressens "arrondissement" (nabolag). Så i dette tilfælde angiver postnummeret området omkring adressen.
Mindre kendte (men komplicerede) adresser
Indien
Nok simple adresser. I nogle lande er det sjældent at bruge vejnumre. I stedet kan adresser angive, at en placering er ved siden af et velkendt websted. Eller de kan bare angive navnet på bygningen og kvarteret, hvor den er placeret.
Her er adressen på et Hyatt-hotel i den indiske by Pune i staten Maharahashtra.
Hyatt Pune
Støder op til Aga Khan Palace, Nagar Road, Kalyani Nagar
Pune, Indien, 411006
Her finder vi et andet postnummer, men i dette tilfælde er det ikke 4 cifre, ej heller 5 cifre, ej heller 5+4 cifre, ej heller en blanding af cifre og bogstaver. Det er 6 cifre. Det indiske postnummer starter med en regionskode, derefter en underregionskode og en kode, der repræsenterer sorteringsdistriktet. Det er ikke særlig nyttig information, hvis du prøver at finde denne placering personligt!
I dette tilfælde er der ingen omtale af den stat, hvor Pune er beliggende. Men når flere byer deler samme navn, men ligger i forskellige indiske stater, kan en stat inkluderes i adressen.
Vi finder et gadenavn (Nagar Road) og angivelse af kvarteret (Kalyani Nagar), men der er ikke noget egentligt gadenummer. Du kunne gå op og ned af Nagar Road på udkig efter denne placering. Derfor finder vi, at placeringen er specificeret som værende ved siden af et velkendt sted - Aga Khan-paladset.
Japan
Jeg vil tage et eksempel fra endnu et Hyatt-hotel, som du måske har set i filmen "Lost In Translation":
Park Hyatt Tokyo
3-7-1-2 Nishi Shinjuku, Shinjuku-Ku
Tokyo, Japan, 163-1055
Bare for at sige det indlysende, jeg bruger vestlig formatering og en engelsk oversættelse i stedet for japanske tegn her.
Igen kan du finde elementer af kvarter, by og postnummer på denne adresse. "Nishi-Shinjuku" (西新宿) er skyskraberens forretningsdistrikt i Shinjuku-kvarteret i Tokyo.
Nu, på hvilken gade ligger dette hotel? Fra adressen har du ingen anelse. Gadenavne bruges sjældent, og de fleste japanske gader har ikke engang navne (undtagen i nogle få byer, såsom Kyoto).
Og prøv ikke at gå ned ad gaden og lede efter bygninger mærket 3-7-1-2. Disse tal henviser til distrikter, sektioner, undersektioner og specifikke byblokke (i dette tilfælde inden for Tokyo).
Det japanske adressesystem, når det er skrevet i vestlig stil, starter med den mindste enhed (typisk et husnummer) og fortsætter til den største. Du vil ofte finde "Chome" i adressen, som er en bydel (丁目 chōme).
Hvorfor selvcentreret adressemodellering?
Et problem med adressemodellering er, når en forfatter opretter en model, der kun understøtter hans lokale adresse korrekt. Jeg har forklaret dette i mit andet indlæg, så jeg vil lige opsummere hovedproblemerne:
- En datamodel, der er designet til et lokalt publikum, kan ofte ikke acceptere oplysninger fra et andet land. For eksempel, hvis en person fra Storbritannien forsøgte at indtaste deres ottecifrede alfanumeriske postnummer i et femcifret, numerisk kun amerikansk postnummer, ville det ikke virke.
- Et internationalt publikum forstår eller bruger muligvis ikke de samme udtryk, formater og layouts, som et lokalt publikum gør.
Så hvorfor sker dette? Der mangler fremsyn, men det har også med træning at gøre. Hvis datamodellere ikke bliver lært at tænke globalt, vil de næsten altid tænke lokalt. Ikke for at uddybe pointen – igen, jeg nævnte det i det ovenstående indlæg – men det er almindeligt i mange lærebøger om databasemodellering at fokusere på en Amero-centreret tilgang.
Heldigvis er det ikke en svær færdighed at tilegne sig at tænke globalt i form af datamodellering for multinationale adresser. Det har at gøre med omtanke og fleksibilitet.
Løsningen:Global adressemodellering
Jeg lavede en datamodel til at gemme globale adresser.
Der er to generiske adresselinjefelter (AddressLine1
og AddressLine2
af Address
tabel), der gemmer næsten enhver adresse. Dette burde fungere, uanset om vi gemmer "10 Downing St", "ved siden af Aga Khan Palace" eller "3-7-1-2 Nishi Shinjuku". Risikoen er, at to felter på 70 tegn kan være for korte til nogle adresser. Alligevel burde 140 tegn være nok til næsten enhver situation.
Jeg har brugt den fælles konvention med to adresselinjefelter, så jeg kan lave AddressLine1
obligatorisk (ikke nullbar) og AddressLine2
valgfri (kan nullstilles). Så denne model kræver, at nogle adresseoplysninger er givet, men det giver mulighed for både meget korte og meget lange, detaljerede adresser.
Lad os derefter se på postnummeret. PostCode
feltet er fleksibelt og har ingen begrænsninger for de oplysninger, der kan gemmes i det. Dette ville understøtte amerikanske postnumre, amerikanske postnummer+4, 4-cifrede postnumre, 5-cifrede postnumre, britiske postnumre (med bogstaver og cifre) og mange andre typer postnumre.
Region
felt gemmer regioner i et land (dvs. stater, provinser, afdelinger osv.), men dette felt kan null. En global adressemodel kræver naturligvis, at landet angives via en ISO-landekode på 2 tegn (Country
feltet i Address
tabel).
Åbn nu modellen og giv den en tweak. Derfor skabte vi modellen i første omgang. Måske kan du se måder at forbedre modellen på. Eller måske skal du tilpasse det til dine specifikke behov. Du er velkommen til at lege med den og gøre den til din egen.
Hvad er din adresse? Kan det passe ind i denne Address
borddesign? Hvis ikke, så lad os det vide! Det ville være interessant at vide, hvad der skal udvides for at understøtte din adresse.