2012-06-21 3 views
6

Какой будет лучший тип данных для хранения MSISDN (номер телефона).Лучшие данные Тип и длина для использования в хранилище MSISDN

Необходимо иметь возможность хранить любой номер телефона в мире.

Кто-нибудь знает максимально возможную длину MSISDN, включая международный телефонный код?

Для примера Южной Африки телефонных номеров + 27xxxxxxxxx, что приводит к 11 цифр исключая +

+ не должен быть сохранено.

Заранее спасибо

ответ

10

Я бы использовал BIGINT. Пожалуйста, избегайте использования varchar любой ценой. Это очень плохая идея для использования varchar или char.

Причины. Varchar/char занимает больше места, медленнее выполнять поиск и перекрестные ссылки, а индекс тоже больше.

При проектировании таблиц старайтесь держать их с заданной длиной строки, вещи будут быстрее загружать грузы. Если вам нужно иметь какое-то текстовое поле, часто лучше использовать char вместо varchar, поскольку накладные расходы на varchar высоки.

Работает в телекоммуникационных компаниях уже 12 лет, разрабатывая/оптимизируя платформы VoIP/SMS. Убийца номер один, когда я прихожу к исправлению систем, - это везде varchars.

Только мой 0.02 стоит.

3

MSISDN ограничен до 15 цифр, префиксы не входит.

MSISDN в варианте GSM построена как:

MSISDN = CC + NDC (or NPA) + SN 
CC = Country Code 
NDC = National Destination Code 
NPA = Number Planning Area 
SN = Subscriber Number 

Вы в идеале не должны спасти +. Он просто представляет собой выход.

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

Если вы планируете объединить Международный телефонный код и MSISDN, вы можете использовать nvarchar (21) или varchar (21).