powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше хранить номер телефона?
25 сообщений из 79, страница 3 из 4
Как лучше хранить номер телефона?
    #32903314
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мля. Ну что значит "стандартное - нестандартное"? Какие проблемы будут, если я по нему буду искать? Грубо говоря, select some_shit from some_table where compressed_phone_number = to_compressed_phone('phone_number'), где to_compressed_phone - функция, возвращающая упакованную строку/число из полного телефонного номера. Не вижу сложности в таком поиске.

P.S. Из сторонников FK есть хотя бы один практик с опытом реализации?
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32903583
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никто нам и не мешает заюзать compressed_phone_number как FK!!!
И при необходимости сделать справочник номеров, у которого ПК и есть compressed_phone_number.
Я думаю здесь у некоторых людей проблемы с воображением, которые не могут себе представить номер телефона в виде целого числа. А одно из другого конвертируется в раз.
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32903899
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Из сторонников FK есть хотя бы один практик с опытом реализации?

Да нет, конечно; где нам, тупым, базы данных проектировать. Так, погулять выходим и языком потрепать. Посмотреть, опять же, на нереальных гуру с нереальными объемами данных. Правда, остается неясным, кто и когда читал таким гуру курс проектирования, но - они ж уже по факту наличия объема данных гуру, так что чего ж их в нехорошем подозревать.

> И при необходимости сделать справочник номеров, у которого ПК и есть
> compressed_phone_number.

Конечно. Стоя и в гамаке - оно куда как прикольнее.

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

Ага. Проблемы и с числами, и с арифметикой, и со здравым смыслом. Вы можете внятно объяснить, _для какой цели_ придумывать извращения?
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32904030
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
guest_20040621, открой личико. Хамишь прилично, а что за этим хамством стоит, не понятно...
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32904712
Фотография andrushok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Тигренок Петрик
На шпагах, господа, на шпагах, но не на булавках Тартарен из Тараскона (с).
Обсуждение техницких проблем перерастаеть в драку, однако...

Хотя, я смысла в упаковывании такой мелочи, как телефонные номера - не вижу, не убедили

2 Гость из тьмы
... открой личико! Петруха (с)
Присоединяюсь к Тигренку с сей просьбой.
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32904774
Yo!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Yo!
Гость
все предложения не читал но могу предложить :)
упаковывать как ip в виде xxxx.xxxx.xxxx.xxxx
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32905052
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Scott Tiger

>Мля. Ну что значит "стандартное - нестандартное"?

Стандартное это то что написано у Кодда, Дейта и пр. Упаковки я там не встречал.

>Какие проблемы будут, если я по нему буду искать? Грубо говоря, select some_shit from some_table where compressed_phone_number = to_compressed_phone('phone_number'), где to_compressed_phone - функция, возвращающая упакованную строку/число из полного телефонного номера. Не вижу сложности в таком поиске.

Найти все номера like '%324%' звонившие в последний месяц. Выкрутится можно, но зачем крутиться, если можно не крутиться.

>P.S. Из сторонников FK есть хотя бы один практик с опытом реализации?

Мне как-то приходилось связывать таблицы по FK. Вроде работает.

Ну а если серьезно, то можно ответить хотя бы в общих чертах, какие отчеты предполагаются в системе? Может сразу все станет ясно. Например есть ли в базе информация о владельце номера и нужно ее хотя бы изредка светить?
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32905285
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем искать? Нет таких задач - искать номера like '%234%', звонившие в последний месяц. Ну нет в природе, и всё.
Информация о владельце есть, разумеется. А что?
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32905307
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Короче говоря, есть задача писать таблицу-журнал. Тогда конечно не нужно никаких FK.

Если нет FK:
все сводится к одной операции записи номера телефона в таблицу.
Если номер телефона еще и паковать при этом, то на выполнение операции упаковки придется затратить дополнительно несколько тактов процессора. И все.

Если есть FK:
Ищем значение PK в справочнике телефонов по номеру.
Сначала читаем индекс - это в зависимости от длины таблицы и глубины индексного дерева 3, 4, 5 и более операций чтения.
Потом читаем значение PK. Еще одна операция чтения.
И только потом пишем в таблицу-журнал.

Задача не используется для анализа! Это чистой воды OLTP. В свете этого решение Scott Tiger - правильное.

Кстати, параллельным процессом таблица-лог может разбираться, данные могут перекладываться в сколь угодно сложную структуру данных, но эта структура к рассматриваемой нами сейчас задаче никакого отношения не имеет.
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32905311
Фотография eNose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[не активирован]
[не одобрен]
номеров с ведущими нулями мало (по сравнению с остальными).
можно хранить так: 00700 -> (700*10+2(количество нулей)) * (-1) = -7002
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32905507
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Scott Tiger

>А зачем искать? Нет таких задач - искать номера like '%234%', звонившие в последний месяц. Ну нет в природе, и всё.

Так расскажите какие есть. А вообще задачи имеют свойство рождаться в голове у начальства во время разработки системы. :)

>Информация о владельце есть, разумеется. А что?

А как Вы ее будете привязывать к журналу? Раз есть информация о владельце, то ее рано или поздно (скорее рано) нужно будет показывать в отчетах. Т.е. от связывания таблиц не уйти и в случае сколь угодно хитрой упаковки телефона. Но тогда роль ФК будет играть этот упакованный номер. Так зачем мучиться, возьмите integer в качестве ID, привяжите к нему номер телефона, владельца т.д., а в журнал пишите этот integer. И места меньше и работать будет не хуже, раз связываение все равно есть в любом случае.

Вообще непонятно о чем разговор, стандартная задача, тем более что сервер у Вас взрослый.
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32905586
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О том и речь - зачем мне оверхед от наличия справочника, когда номер я в явном виде храню во всех таблицах. Но в таблице связки, условно, номера и абонента также будет хранится упакованный номер телефона и id абонента. Для соблюдения консистентности можно, как я и писал выше, создать справочник, в котором PK будет упакованный номер телефона, и навешивать констрейнты по необходимости.
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32905663
Mustaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приведу два, как я считаю, весомых аргумента в пользу хранения телефонов как есть, т.е. без справочника:
1. справочник должен существовать заранее, что сами понимаете или невозможно или приводит к неадекватным наладным расходам
2. полный номер телефона для тарификации нуждается в разборе, как то код страны, код региона, собственно телефон
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32905727
guest_20040621
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> guest_20040621, открой личико.

Ник - вполне достаточный персональный идентификатор. Рекомендации, рецензии и вакансии мне без надобности, так что давайте обходиться тем, что есть. По существу возражения будут?

> а что за этим хамством стоит, не понятно...

Ну, хамства-то как раз и в помине не было. Количество моих знаний Вам показалось недостаточным для контактов? ОК, нет проблем.
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32905813
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
UrriЕсли есть FK:
Ищем значение PK в справочнике телефонов по номеру.
Сначала читаем индекс - это в зависимости от длины таблицы и глубины индексного дерева 3, 4, 5 и более операций чтения.
Потом читаем значение PK. Еще одна операция чтения.
И только потом пишем в таблицу-журнал.

Можно еще упростить. Сначала запаковать (запаковать проще, чем искать в индексе по справочнику) в инт, а потом писать в таблицу-журнал. Сделать ПК запакованный номер, т.е. инт. А распакованый вообще не держать.

Запаковать в unsigned int:
32 бита делим на два куска. Первый два бита - код первой цифры (здесь делаем ущемление прав и кодируем только 4 возможных варианта, закладывается заранее). Второй кусок - 30 бит, им кодируем 9 цифр номера. Да использовать инт тоже нехорошо, а вдруг так получится, что все возможные номера будут в системе, что тогда делать-то? Никакой справочник не спасет.
Если не нравится ущемление, то можно вынести первую цифру в отдельное поле и сделать ключ составным, но это уже изврат.

Можно использовать в качестве хранилища binary(5) - здесь никаких ущемлений диапазонов не будет, и ПК будет простым.

Но поскольку, вероятно определять код страны и т.д. То для улучшения выборок можно сделать это поле составным. binary(3) - для хранения только номера (7 цифр), smallint(2) - для хранения префикса(3 цифр). Более того, в этот smallint можно еще засунуть кол-во впередиидущих нулей: 10 бит - префикс, 2 бит - кол-во нулей, 4 бит - резерв....


А можно забить на это делать и сделать стринг(10)+ПК инт(4). К этому вырастет нагрузка на справочник, т.к. постоянно будет дергаться для того, чтобы выяснить, а какой же ID у такого-то номера... А дергать справочник(чтение памяти, индекса, диска) - это гораздо хуже, чем произвести чистый бинарный расчет(проц и всё).
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32906391
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а нельзя просто в начало цифирь добавить? ну девятку, к примеру?
Т.о.:
00100 ->900100
100->9100
получим не 10 цифр, а 11. Невелика разница. А когда надо узнать номер, девятку отбросим.
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32906412
Фотография Scott Tiger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже мысль, кстати.
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32907213
c127
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Scott Tiger

>О том и речь - зачем мне оверхед от наличия справочника, когда номер я в явном виде храню во всех таблицах. Но в таблице связки, условно, номера и абонента также будет хранится упакованный номер телефона и id абонента.

Это я понял. Но номер сам по себе ничего не дает, все равно прийдется связывать журнал с чем-то еще. Приведите пример отчета, в котором используется только номер и ничего больше. Врядли такой есть. А если есть, то это какя-то аналитика и этот же отчет можно построить по ID.

Справочник будет все равно, в этом справочнике будет лежать информация о клиенте. Так зачем в таком случае сражиться с упаковкой номера телефона, не лучше ли сделать по-человечески без всей этой возни.
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32908350
iLLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Именно для OLTP работы хранить распакованный номер в справочнике и его ИД накладно. Для того чтобы вставить запись в журнал о чем-либо связанном с номером, в одном случае необходимо дернуть справочник(ИД фактически вычисляется по таблице), а в другом ИД можно вычислить алгебраически.
Для отчета, да, подключаете справочник и дергаете доп. инфу о номере, а для банального поиска номера в журнале или его вставки в журнал - не надо.
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #32909013
vybegallo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrushok2 Тигренок Петрик
На шпагах, господа, на шпагах, но не на булавках Тартарен из Тараскона (с).
Обсуждение техницких проблем перерастаеть в драку, однако...

Хотя, я смысла в упаковывании такой мелочи, как телефонные номера - не вижу, не убедили

2 Гость из тьмы
... открой личико! Петруха (с)
Присоединяюсь к Тигренку с сей просьбой.

1. Он не Тигренок, он гольфист.
2. Это, что-ли, называется - "открытое личико" ?
Информация об авторе: Scott Tiger
E-Mail: скрыт
URL:
ICQ:
Откуда:
Интересы:
Работа:
Информация: Я тебя люблю
Сообщений: 4023
Зарегистрирован: 24 декабря 2002, 00:44
Последнее сообщение: сегодня, 11:07 (0 дней 8 часов 20 минут назад)
Сообщений в день: 5,1643
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Как лучше хранить номер телефона?
    #37348755
Фотография analiza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хранить 5 байт:
1 - число нулей в начале (до 255 нулей).
2,3,4,5 - число, следующее за нулями.
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #37348890
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
analiza, ну ты и некромант!
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #37350160
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор, как там биллинг?
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #37350294
Фотография analiza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
egorychanaliza, ну ты и некромант!
Мы СУБД небольшую делали на С++, она хранила сотни МЛН простых записей в 10 гигах ОЗУвия: один байт в записи сэкономил - несколько сот метров освободилось.
...
Рейтинг: 0 / 0
Как лучше хранить номер телефона?
    #37350555
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
analiza,

ты на даты сообщений посмотри внимательно, люди давно уже решили свои проблемы в этом топике, за 6-то лет
...
Рейтинг: 0 / 0
25 сообщений из 79, страница 3 из 4
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как лучше хранить номер телефона?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]