Как вы храните номера мобильных телефонов в базе данных?

С веком текстовых сообщений и тому подобного, как лучше хранить телефонные номера в базе данных?

В США текстовые сообщения обрабатываются телефонными номерами, но в других странах, я слышал, они используют адреса электронной почты, поэтому я думаю, что должен быть способ различать страны, которые используют номера мобильных телефонов в качестве своего адреса.

Дополнение: например, люди в США могут использовать 432-342-3333 или 1-432-342-3333, в то время как в Великобритании они могут использовать +44 800 400000 или даже пропустить 44. 44 и 1 делают разница при автоматической отправке СМС. Однако проверка номера телефона для каждой страны может быть утомительной. В этом случае вы бы разделили код страны или объединили бы его в один столбец и обработали бы его там?


person danmine    schedule 24.11.2008    source источник
comment
Вы пытаетесь сохранить номера телефонов? Или адреса для обмена сообщениями? Название вопроса кажется простым, но затем вы говорите о доставке txt по электронной почте. В чем собственно вопрос?   -  person ahockley    schedule 24.11.2008


Ответы (3)


Я бы в первую очередь использовал текстовое поле или серию текстовых полей, даже если вы используете числовой номер телефона, по следующим причинам.

  1. Телефонные номера имеют широкий диапазон значений, включая добавочные номера, что может привести к потере точности числовых столбцов.
  2. Потеря точности в телефонном номере — это довольно плохо.
  3. Нет никакой логической причины выполнять математические операции (сложение/умножение) над номером телефона.

Кроме того, вы можете указать, как вы используете эти данные. Если вы планируете автоматическую службу обмена сообщениями, вам понадобится ряд агентов-ретрансляторов для широковещательной передачи, поэтому вы также можете добавить идентификатор, относящийся к ретранслятору, к которому относится информация. Тогда все, о чем вам нужно беспокоиться, это то, что агент ретрансляции может понять содержимое текстовых полей.

person Kent Fredric    schedule 24.11.2008
comment
Хотя я бы все еще сохранял в виде строки, вы могли бы исключить 1 и 2 (что на самом деле всего 1 точка) с числом с фиксированной точкой. - person umassthrower; 14.08.2011
comment
@umassthrower, если вы не используете Excel и не работаете с CSV-файлами. Но если вы это делаете, решение этой проблемы — вообще отказаться от использования Excel. - person Kent Fredric; 01.11.2011
comment
Просто примечательный комментарий, который я увидел в своей очереди на проверку к этому сообщению: › Следует отметить, однако, что выполнение любых агрегированных функций, т. е. СУММА телефонных номеров, хранящихся в базе данных, НАМНОГО медленнее в поле CHAR, чем в INTEGER. Из-за этого настоятельно рекомендуется включить столбец идентификаторов, который вы можете использовать для подсчета для отчетов.) Спасибо. - person Kent Fredric; 13.11.2013
comment
... для всех тех приложений, где сумма столбца телефонных номеров имеет значение - person umassthrower; 20.12.2013
comment
Номер телефона служит цели продажи в качестве UID. Причин для использования математических агрегатов на них мало, если вообще есть. Единственная причина, по которой мы даже думаем сделать что-то подобное, заключается в том, что числа — это цифры. С таким же успехом мы могли бы сделать телефоны с буквами и дать людям телефонные адреса на основе букв. Это привело бы к системе, не слишком отличающейся от системы доменных имен WWW. Обычно я не учитываю влияние математических агрегатов, когда храню foo.com/bar.html как варчар, не так ли? - person umassthrower; 20.12.2013
comment
Я согласен с @umassthrower, нет особой причины заниматься математикой с телефонными номерами, просто я увидел комментарий, который пользователь пытался вставить с помощью редактирования, и я скопировал его как комментарий вместо редактирования, чтобы можно было увидеть их мнение (даже если я не согласен с комментарием). - person Kent Fredric; 04.01.2014

Как правило, как текст, вам не нужно все причудливое форматирование, если только оно вам не нужно для анализа номеров из разных стран, которые вы не можете различить иначе. Вы всегда можете добавить форматирование позже.

Не как число!!! Ведущие нули могут быть проблематичными.

person vfilby    schedule 24.11.2008
comment
Определенно. Удаление ведущих нулей для IntegerField раньше сильно меня укусило. - person ayaz; 24.11.2008

Я не знаю, читали ли вы эти два вопроса, но они могут вам немного помочь.

Возможно, было бы разумно хранить тип номера (стационарный, мобильный, факс) и/или сообщения, которые можно получить на него (голос, текст, электронная почта). Обратите внимание, что в США также можно отправлять текстовые сообщения на телефон по электронной почте, но я считаю, что это зависит от оператора связи.

person Thomas Owens    schedule 24.11.2008