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

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

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

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

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

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

13
задан Incognito 5 November 2010 в 15:46
поделиться