В последната си публикация написах как да гарантирате, че вашият модел на данни обработва правилно глобална информация:числа, валути, телефонни номера, адреси, дати и часови зони, наред с други неща. Разбрах обаче, че много примерни модели на данни имат точно „себецентричния“ или „амероцентричния“ подход, за който предупредих.
Като американец, живеещ в чужбина (вече почти 30 години), често откривам, че хората правят твърде много предположения относно универсалността на това, което знаят. Например, някои американци предполагат, че други автоматично разбират системата с пощенски кодове на своята страна и нейната допълнителна ZIP+4 версия. Според моя опит по-голямата част от света няма представа какво е ZIP+4.
Така че реших, че би било добре да напиша за по-глобален подход към моделирането на адреси.
Адреси, известни по целия свят
Нека вземем някои добре познати и някои по-малко известни адреси по света и да създадем модел на данни, който поддържа тяхното съхранение.
Ще започна с обръщението на президента на Съединените щати:Белия дом.
Белия дом
1600 Pennsylvania Ave NW
Вашингтон, окръг Колумбия 20500
Сега 1600 е това, което обикновено се нарича номер на улицата или номер на къща. Това е номерът на къщата (сградата) на улицата. Pennsylvania Avenue е името на улицата. „NW“ е съкращението от Northwest и се отнася до частта на Вашингтон, където се намира този конкретен адрес. Интересното е, че 1600 Pennsylvania Avenue SE е съвсем различен адрес; това е жилищна сграда.
Тогава Вашингтон е името на града. И DC, или окръг Колумбия, е „щатът“; обаче DC е специален сред американските щати. Вашингтон е столицата на Съединените щати, но не се нарича правилно щат и не се брои за един от 50-те американски щата. (Има щат Вашингтон, но се намира на напълно противоположния бряг от окръг Колумбия. Може да го познавате като дом на Starbucks, Boeing и други известни компании.) Нашата идея е, че в пощенската система на САЩ „DC“ функционира като всяка друга абревиатура на държавата.
Сега този номер:20500. В повечето страни това ще се нарича пощенски код или пощенски код; Американците го наричат пощенски код. ZIP кодовете (План за подобряване на зоната) са въведени в САЩ през 1963 г. Виждаме, че за Белия дом пощенският код е 20500.
През 1983 г. пощенската служба на САЩ иска да бъде по-точна, така че създава разширен ZIP+4 код. Този ZIP+4 включва петте цифри на пощенския код, тире и четири допълнителни цифри, които сочат към конкретно място в пощенския код. ZIP+4 на президента на САЩ е 20500-0001. ZIP+4 на първата дама (съпругата на президента) е 20500-0002. И ZIP+4 на Белия дом е 20500-0003.
Докато ZIP+4 може да бъде доста точен, рядко ще намерите ZIP+4, който се използва за един човек. Те често се отнасят до пощенска кутия (за голяма компания), набор от пощенски кутии или квартал в града.
Бевърли Хилс 90210
В зависимост от възрастта ви може да знаете американския телевизионен сериал 90210 или Бевърли Хилс 90210 . Тази популярна сапунена опера за тийнейджъри е друг добър пример за работа на пощенската система на САЩ. Някои хора смятат, че това е точният адрес на квартал, улица или дори конкретна къща.
Първо, нека започнем с малко предистория. Бевърли Хилс е град в окръг Лос Анджелис в Калифорния. Той е дом на много холивудски звезди и луксозната търговска улица Rodeo Drive (прочута във филма от 1990 г. Хубава жена ).
https://goo.gl/maps/gqdvgRMNn472
Един от пощенските кодове в Бевърли Хилс е 90210, но град Бевърли Хилс използва и други пощенски кодове (90209, 90211, 90212 и 90213). Кодът 90210 се отнася до един от шикозните квартали на Бевърли Хилс и следователно до изключителен квартал в престижна част на Лос Анджелис.
Но пощенският код 90210 се простира отвъд Бевърли Хилс. Включва някои от прилежащите холивудски хълмове. Знаете ли хълмовете, където се намира знакът „ХОЛИВУД“? Това е в пощенския код 90210.
https://goo.gl/maps/Fa2t8SQaGj222
Останалата част от този ZIP, простираща се на север до Мълхоланд Драйв (увековечена в психологическия трилър на Дейвид Линч от 2001 г.), беше оставена като част от хълмовете на Лос Анджелис, където остана анонимна в продължение на десетилетия.
Бъкингамският дворец
Бъкингамският дворец има прост адрес, така че ако искате да пишете на кралица Елизабет, просто изпратете бележка на:
Бъкингамският дворец
Лондон SW1A 1AA, Обединено кралство
В този адрес откриваме странен тип пощенски код. В Обединеното кралство (плюс страните, които съставляват Британската общност и повечето бивши британски колонии), пощенският код е буквено-цифров. Сравнете това с изцяло цифровия пощенски код, който се намира в други много други страни, включително пощенските кодове на САЩ
В Обединеното кралство пощенският код обикновено съдържа едно- или двубуквен „код на града“, наречен на местен град или район на Лондон. В нашия пример това е „ЮЗ“, което се отнася до югозападната част на Лондон. Следва една или две цифри, означаващи област в този регион – „1A“. След това има произволен код, състоящ се от една цифра и две букви, което в този случай е „1AA“.
Номер 10
Можете да намерите британския министър-председател на адрес, известен като „Номер 10“, който носи името си от номера на улицата на сградата:
10 Downing St
Лондон SW1A 2AA, Обединено кралство
Подобно на Бъкингамския дворец, „Номер 10“ се намира в югозападната част на Лондон. Пощенските кодове в някои градове в Обединеното кралство могат дори да ви помогнат да разпознаете в коя част на града се намира даден адрес.
Елисейския дворец
От друга страна, по принцип можете да намерите френския президент на този адрес:
55 Rue du Faubourg Saint-Honoré 75008
Париж, Франция
Този пример следва познат модел:номерът на улицата (55) и името на улицата (Rue du Faubourg Saint-Honoré) са на първо място.
След това намираме 5-цифрен пощенски код. Във френските пощенски кодове първите две цифри показват в кой „département“ (регион) се намира адресът. За парижките пощенски кодове последните три цифри показват „арондисман“ (квартал) на адреса. Така че в този случай пощенският код указва квартала на адреса.
По-малко известни (но сложни) адреси
Индия
Стига прости адреси. В някои страни рядко се използват улични номера. Вместо това адресите може да указват, че дадено местоположение е до добре познат сайт. Или може просто да посочат името на сградата и квартала, в който се намира.
Ето адреса на хотел Hyatt в индийския град Пуна, в щата Махарахатра.
Hyatt Pune
В непосредствена близост до двореца Ага Хан, Nagar Road, Kalyani Nagar
Пуна, Индия, 411006
Тук намираме друг пощенски код, но в случая той не е 4 цифри, нито 5 цифри, нито 5+4 цифри, нито смесица от цифри и букви. Това е 6 цифри. Индийският пощенски код започва с регионален код, след това код на подрегион и код, представляващ района за сортиране. Това не е много полезна информация, ако се опитвате да намерите това място лично!
В случая не се споменава щата, в който се намира Пуна. Въпреки това, когато няколко града споделят едно и също име, но се намират в различни индийски щати, в адреса може да бъде включена държава.
Намираме име на улица (Nagar Road) и индикация на квартала (Kalyani Nagar), но няма реален номер на улицата. Можете да се разхождате нагоре и надолу по Nagar Road, търсейки това място. Така намираме, че местоположението е посочено като съседно на добре познат обект – двореца Ага Хан.
Япония
Ще взема пример от още един хотел Hyatt, който може би сте гледали във филма “Lost In Translation”:
Park Hyatt Tokyo
3-7-1-2 Ниши Шинджуку, Шинджуку-Ку
Токио, Япония, 163-1055
Само за да кажа очевидното, използвам западно форматиране и английски превод, а не японски знаци тук.
Отново можете да намерите елементи на квартал, град и пощенски код на този адрес. „Ниши-Шинджуку“ (西新宿) е бизнес районът на небостъргача в квартал Шинджуку в Токио.
Сега, на коя улица се намира този хотел? От адреса нямаш представа. Имената на улиците се използват рядко, а повечето японски улици дори нямат имена (освен в няколко града, като Киото).
И не се опитвайте да вървите по улицата в търсене на сгради, маркирани с 3-7-1-2. Тези числа се отнасят за райони, участъци, подсекции и специфични градски блокове (в този случай в Токио).
Японската адресна система, когато е написана в западен стил, започва с най-малката единица (обикновено номер на къща) и продължава към най-голямата. Често ще намерите „Chome“ на адреса, който е градски квартал (丁目 chōme).
Защо самоцентрично адресно моделиране?
Един проблем с моделирането на адреси е, когато авторът създава модел, който поддържа правилно неговия локален адрес. Обясних това в другата си публикация, така че просто ще обобщя основните проблеми:
- Модел на данни, който е предназначен за местна аудитория, често не може да приеме информация от друга държава. Например, ако някой от Обединеното кралство се опита да въведе своя осемцифрен буквено-цифров пощенски код в петцифрено, само цифрово американско пощенско поле, няма да работи.
- Международната аудитория може да не разбира или да не използва същите термини, формати и оформления като местната аудитория.
Така че защо се случва това? Липсва предвидливост, но това също е свързано с обучението. Ако моделистите на данни не са научени да мислят глобално, те почти винаги ще мислят локално. За да не задълбочавам въпроса – отново споменах това в посочената по-горе публикация – но е обичайно в много учебници за моделиране на бази данни да се фокусира върху подход, ориентиран към Америка.
За щастие, глобалното мислене по отношение на моделирането на данни за мултинационални адреси не е трудно умение за придобиване. Това е свързано с предвидливост и гъвкавост.
Решението:глобално моделиране на адреси
Направих модел на данни за съхраняване на глобални адреси.
Има две общи полета за адресен ред (AddressLine1
и AddressLine2
на Address
таблица), която ще съхранява почти всеки адрес. Това трябва да работи независимо дали съхраняваме „10 Downing St“, „в непосредствена близост до двореца на Ага Хан“ или „3-7-1-2 Nishi Shinjuku“. Рискът е две полета от 70 знака да са твърде кратки за някои адреси. Все пак 140 знака трябва да са достатъчни за почти всяка ситуация.
Използвах общата конвенция за две полета на адресния ред, за да мога да направя AddressLine1
задължително (не може да се нула) и AddressLine2
по избор (с нула). Така че този модел изисква това някое се дава информация за адреса, но позволява както много кратък, така и много дълъг, подробен адрес.
След това нека разгледаме пощенския/пощенския код. PostCode
полето е гъвкаво и няма ограничения за информацията, която може да се съхранява в него. Това ще поддържа американски пощенски кодове, американски ZIP+4, 4-цифрени пощенски кодове, 5-цифрени пощенски кодове, британски пощенски кодове (с букви и цифри) и много други видове пощенски кодове.
Region
поле съхранява региони в рамките на дадена държава (т.е. щати, провинции, департаменти и т.н.), но това поле е нулево. Разбира се, глобалният модел на адрес изисква държавата да бъде посочена чрез 2-знаков ISO код на държавата (Country
полето в Address
таблица).
Сега, моля, отворете модела и го коригирайте. Ето защо ние създадохме модела на първо място. Може би ще видите начини за подобряване на модела. Или може би трябва да го адаптирате към вашите специфични нужди. Моля, не се колебайте да играете с него и да го направите свой собствен.
Какъв е Вашият адрес? Може ли да се побере в този Address
дизайн на маса? Ако не, уведомете ни! Би било интересно да знаете какво трябва да бъде разширено, за да поддържате вашия адрес.