powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / простенькая база данных
11 сообщений из 11, страница 1 из 1
простенькая база данных
    #35121283
bolt2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно спроектировать одну несложную реляционную базу данных - телефонную книгу, причем, естественно, так, чтобы она повторяла функциональность любого телефонного справочника в любой из созданных моделей телефонов.

Собственно, вопрос заключается в том, чем плоха такая структура базы данных и как ее можно улучшить:
в базе 3 таблицы, первая содержит поля manID - индекс человека, занесенного в справочник, и manName - его имя; вторая содержит поля numberID - идентификатор конкретного телефона, basic_digit - цифры номера без префикса, prefix1, prefix2, prefix3 - возможные префиксы номера, типа +7, 8, +7495; третья таблица содержит связи между ними, а именно поля manId и numberID

Вроде, первые 3 нормальные формы в каждом отношении присутствуют.
Итак, чем плохо такое решение и как его можно улучшить?
...
Рейтинг: 0 / 0
простенькая база данных
    #35121473
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да ничем в принципе не плоха. Только в интерфейсе этой телефонной книги надо будет четко отличить операции "Вася переехал и у него поменялся телефон" (а у Наташки остался какой был) и "у Васи с Наташей сменили номер телефона".
...
Рейтинг: 0 / 0
простенькая база данных
    #35121552
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bolt2Итак, чем плохо такое решение и как его можно улучшить?

Слишком сложно. Тут достаточно одной таблицы (имя чела, номер, префиксы). Хотя префиксы обычно настраиваются отдельно и представляют собой разные подстановки в зависимотсти от локализации звонящего.
...
Рейтинг: 0 / 0
простенькая база данных
    #35121616
bolt2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenabХотя префиксы обычно настраиваются отдельно и представляют собой разные подстановки в зависимотсти от локализации звонящего.

я правильно понял, что тогда лучше будет хранить отдельно таблицу семейств префиксов с полями
prefixID, prefix1, prefix2 и prefix3, а в таблице номеров тогда заменить prefix1, prefix2 и prefix3 на prefixID?
...
Рейтинг: 0 / 0
простенькая база данных
    #35121652
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bolt2 mcureenabХотя префиксы обычно настраиваются отдельно и представляют собой разные подстановки в зависимотсти от локализации звонящего.

я правильно понял, что тогда лучше будет хранить отдельно таблицу семейств префиксов с полями
prefixID, prefix1, prefix2 и prefix3, а в таблице номеров тогда заменить prefix1, prefix2 и prefix3 на prefixID?

В таблице номеров prefixID не нужен. Префикс определяется правилами набора, а они меняются в зависимости от используемой телефонной сети, в плоть до необходимости пользования услугами телефонистки. Правильно иметь план набора, чтобы различать номера записанные в международном формате, местные номера, внутренние номера офисной АТС и т.п.. В большинстве случаев номер нужно записывать в международном формате, тогда АТС сама сообразит какие префиксы нужно применять для проключения вызова.
...
Рейтинг: 0 / 0
простенькая база данных
    #35121666
bolt2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenab
В таблице номеров prefixID не нужен.
Но все же какое-то соответствие префиксов в памяти телефона(то есть вот в этой его базе) сохранять-то надо! например, поступает звонок +79261234567, а в телефонной книге за неким абонентом прикреплен номер 89261234567, как распознать звонящего? посылать запросы на АТС типа "а извините, префикс +7 - это то же самое, что и 8?" - наверное, долго, проще хранить эту информацию во внутренней памяти телефона и к ней обращаться.
...
Рейтинг: 0 / 0
простенькая база данных
    #35122335
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bolt2 mcureenab
В таблице номеров prefixID не нужен.
Но все же какое-то соответствие префиксов в памяти телефона(то есть вот в этой его базе) сохранять-то надо! например, поступает звонок +79261234567, а в телефонной книге за неким абонентом прикреплен номер 89261234567, как распознать звонящего? посылать запросы на АТС типа "а извините, префикс +7 - это то же самое, что и 8?" - наверное, долго, проще хранить эту информацию во внутренней памяти телефона и к ней обращаться.

Всегда используйте международный формат телефонного номера и таких проблем с АОНом не бует. Кроме того код 8 используется в России, тогда как во многих друих странах спользутся код 00 или + в сетях мобильной связи.
...
Рейтинг: 0 / 0
простенькая база данных
    #35123657
bolt2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mcureenab
Всегда используйте международный формат телефонного номера и таких проблем с АОНом не бует. Кроме того код 8 используется в России, тогда как во многих друих странах спользутся код 00 или + в сетях мобильной связи.

Да не интересует то, как надо номер в телефонную книгу заносить! Интересует, как осуществляется распознавание номера, хранящегося в телефонной книге (например, если есть запись, начинающаяся на 8, а звонок идет +7, или если звонящий записан как 8<внутренний по стране код города><номер абонента>, а в международном формате у него другое представление: +7<международный код города><номер абонента>.)
Здесь какие механизмы (реализации) распознавания?
...
Рейтинг: 0 / 0
простенькая база данных
    #35123720
bolt2 mcureenab
Всегда используйте международный формат телефонного номера и таких проблем с АОНом не бует. Кроме того код 8 используется в России, тогда как во многих друих странах спользутся код 00 или + в сетях мобильной связи.

Да не интересует то, как надо номер в телефонную книгу заносить! Интересует, как осуществляется распознавание номера, хранящегося в телефонной книге (например, если есть запись, начинающаяся на 8, а звонок идет +7, или если звонящий записан как 8<внутренний по стране код города><номер абонента>, а в международном формате у него другое представление: +7<международный код города><номер абонента>.)
Здесь какие механизмы (реализации) распознавания?Если случай простой, т.е. набран только номер абонента (без всяких там "колец" (обратного вызова)), то все просто:
Полный номер = <код выхода><код выхода на оператора><код города><номер телефона абонента>.
При этом, строка <код города>+<номер телефона абонента> ВСЕГДА составляет 10 знаков.
...
Рейтинг: 0 / 0
простенькая база данных
    #35125593
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий
При этом, строка <код города>+<номер телефона абонента> ВСЕГДА составляет 10 знаков.

10 знаков, справедливо для стран с закрытой системой нумерации. Но есть страны, где количество цифр в номере является переменной величиной.
...
Рейтинг: 0 / 0
простенькая база данных
    #35125595
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bolt2 mcureenab
Всегда используйте международный формат телефонного номера и таких проблем с АОНом не бует. Кроме того код 8 используется в России, тогда как во многих друих странах спользутся код 00 или + в сетях мобильной связи.

Да не интересует то, как надо номер в телефонную книгу заносить! Интересует, как осуществляется распознавание номера, хранящегося в телефонной книге (например, если есть запись, начинающаяся на 8, а звонок идет +7, или если звонящий записан как 8<внутренний по стране код города><номер абонента>, а в международном формате у него другое представление: +7<международный код города><номер абонента>.)
Здесь какие механизмы (реализации) распознавания?

В моём телефоне, похоже, определяется номер у которого совпадает наибольшее число цифр с конца. С некоторой вероятностью ошибки этот трюк срабатыват, ведь не так много знакомых у которых последние цифры номера совпадают, да и в случае ошибки ничего страшного не случиться. Если хотите иметь точный результат, не зависящий от местной АТС используйте международный формат. Международный формат просто преобразовать в местный, тогда как обратное преобразование требует много дополнительных сведений, которые пользователь не всегда имеет привычку заносить в БД. Например в Росиии 8, это был код выхода на межгород, но с выходом на рынок МТТ, появился дополнительный префикс, который позволяет выбирать между Ростелеком и МТТ, и одновременно между международной и междугородней связью, а со временем 8 заменят на 00, и вся ваша телефонная книга с 8ками вообще перестанет работать. В прочем, вы можете завести правило, если начало номера совпадает с префиксом выхода на межгород, то этот префикс нужно заменить на код страны и т.п. Т.е. завести БД подстановок.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / простенькая база данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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