Предположим, вы имеете дело с вашей обычной базой контактов (вы знаете... имя, номер телефона, адрес, адрес электронной почты и т.д.). Если вы узнали об этом на местном уровне, это вообще не большая проблема, но когда мы смотрим на международные наборы, это так.
Глядя на систему номеров телефонов,, вы считаете это простым, но это действительно не так. В Северной Америке мы обычно имеем формат 1-222-333-4444 для вызова людей. Разумеется, это отклоняется в ваш международный код, код города, префикс обмена и номер строки. Проблема: реальные номера телефонов ограничены, в США около 220 кодов областей из потенциального 1000, каждый код зоны имеет ограниченное количество обменов, а номера строк ограничены конкретным использованием в этой стране (например, шаблоны с 911 ограничены, используются только около 3/4 из 10 000). Возьмите это в Великобританию, у них есть свой собственный набор правил для номеров строк, например, резервирование большей части блока 0300-0399 для конкретного использования и другие ограничения. Международные коды также ограничены. Нормализация кодов областей, обмены и проверка достоверности данных на номера телефонов просто усложнилась. Я не буду вдаваться в подробности о том, когда мы входим в места, которые не входят в схему NPA но позволяют просто определить, что мы не можем действительно доверяйте шаблону в Северной Америке, отбросьте назад и назовите это днем.
Как мы нормализуем такие вещи? Как мы проверяем данные? Как мы имеем дело с этими, казалось бы, ad-hoc дополнительными кодами или инструкциями для внутреннего набора?
Международные адреса не намного лучше, различия между не только сохраненными данными, но и выходными форматами aren ' t одинаково по всей доске. Как мы имеем дело с международными почтовыми кодами, когда в Канаде формат A1A1A1, а в США есть такая система, как 55555 [-4444]?
У меня возникает соблазн просто писать классы для каждой из этих ситуаций, когда я их встречаю, храня их в базе данных как XML/JSON/подобный, но как же я могу связать поля и легко искать свой контент? Я не хочу создавать таблицу, содержащую тысячи таблиц для каждой страны. Я хочу легко масштабируемое решение, где я могу нормализовать свои адреса и проверить содержание. Это слишком много, чтобы спросить?