Нормализация / проверка международных наборов данных в базе данных?

Допустим, вы имеете дело с вашей обычной базой контактов (вы знаете ... имя, номер телефона, адрес, адрес электронной почты и т. Д.). Если вы задумывались об этом локально, это, как правило, не является большой проблемой, но когда мы смотрим на международные сети, это так.

Глядя на систему телефонных номеров, Вы думаете, это просто, но на самом деле это не так. В Северной Америке у нас обычно есть формат 1-222-333-4444 для вызова людей. Это, конечно, делится на ваш международный телефонный код, код города, префикс обмена и номер строки. Проблема: реальные телефонные номера ограничены, в США существует около 220 кодов городов из 1000 возможных, каждый код города имеет ограниченное количество обменов, а номера линий ограничены для конкретного использования в этой стране (например, шаблоны с 911 ограничены, только около 3/4 из 10000 используются). Отнесите это в Великобританию, у них есть собственный набор правил для номеров строк, таких как резервирование большей части блока 0300-0399 для конкретного использования и другие ограничения. Международные коды также ограничены. Нормализация кодов городов, обмен и установка проверок данных на телефонные номера стали сложнее. Я не буду вдаваться в подробности о том, когда мы идем в места, которые не являются частьюСхема NPA, но давайте просто определим, что мы не можем доверять североамериканскому шаблону, отбросим его назад и назовем это днем.

Как мы нормализуем для таких вещей? Как мы проверяем данные? Как мы имеем дело с этими, казалось бы, специальными внутренними кодами или инструкциями для внутреннего набора?

Международные адреса не намного лучше, различия между не только сохраненными данными, но и форматами вывода не одинаковы по всем направлениям. Как мы имеем дело с международными почтовыми кодами, когда в Канаде используется формат A1A1A1, а в США есть такая система, как 55555 [-4444]?

У меня возникает соблазн просто написать классы для каждой из этих ситуаций, когда я сталкиваюсь с ними, сохранить их в базе данных как XML / JSON / схожие, но тогда как мне связать поля и легко искать в моем контенте? Я не хочу заканчивать тем, что создал таблицу столов тысяч столов для каждой страны. Я хочу легко масштабируемое решение, где я могу нормализовать свои адреса и проверить содержимое. Это слишком много, чтобы спросить?

Ответы на вопрос(3)

Ваш ответ на вопрос