powered by simpleCommunicator - 2.0.48     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как хранить адреса в БД?
25 сообщений из 55, страница 2 из 3
Как хранить адреса в БД?
    #39763009
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tasyusha Вот и когда я уже дошел до такого состояния, что для выполнения простейшего запроса нужно сделать запрос в 3 JOINа на 4 таблицыОбычно это не является проблемой

tasyusha а 2000 Андреев - это нормально?вы еще выгоду в диске подсчитайте - каждое поле name_id пусть будет int32 - 4 байта, а условный андрей - шесть байт
итого целых два байта на каждого пользователя, для 2000 андреев это будет аж 4Кб

Теперь другой момент который вы упускаете - редактирование записи
Пусть пользователь хочет ввести город "Питер" ваши действия:
не давать вводить совсем - выбирай из списка, ищи лучше - не нашел твои проблемы, а нам не нужны клиенты с проблемами.
или ввести Питер в справочник городов в дополнение к "Санкт-Петербургу", "Санкт Петербургу", "Ст-Петербургу", "Петербургу", "Ленинграду".

Допустим мы разрешили пользователям вводить свои значения и пользователь меняет свой "Питер" на "Санкт-Петербург"
Когда мы должны удалить "Питер" из справочника: никогда, когда на него не будет ссылок?

tasyusha вынести в отдельную таблицу адресов и хранить там в форме id, city, street, house, apt Ага, а потом client_address_xref таблицу, а потом при смене клиетном адреса оставлять старый адрес типа а вдруг пригодится.

Короче
Добавьте в вашу таблицу адресов клиент_id и назовите таблицу адреса клиентов, чтобы клиент мог иметь более одного адреса.
Стоит ли связыватся с кладром (ФИАСом) решайте сами

PizzaPizza Осталось выяснить для чего нужна сама нормализация (ну не нужна же она только для галочки, правда?) и вы сразу получите ответ.плюс много.
с некоторого возраста появился вопрос "зачем" (с)
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39763049
МодальноеОкно
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SERG1257вы еще выгоду в диске подсчитайте - каждое поле name_id пусть будет int32 - 4 байта, а условный андрей - шесть байт
итого целых два байта на каждого пользователя, для 2000 андреев это будет аж 4Кб

надо все адреса сократить. питер -> п

а у нас в уезде писарь возраст одной цифирькой указывал. чернила, шельмец, экономил (с) кино
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39763103
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tasyushaВопрос в том, как спроектировать таблицу(ы) для хранения адресов

Ладно, открою тайну.

Беда в том, что понятие адресов - штука очень исторически сложившаяся, архаичная, полная исключений, и потому очень плохо ложащаяся в понятия реляционных баз данных. Если разозлиться, и попробовать охватить все варианты - получится что-то вроде упоминавшихся уже КЛАДР и ФИАС, но нужны ли они вам - решайте сами.

Начинающие разработчики часто пытаются сделать простое дерево вроде Область - Район - Населенный пункт - Улица - Дом - Квартира.

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

Но все же на практике часто используют упрощенные модели. В пределе, например, работающее решение: Вы делаете сайт, рассылающий по почте бумажные рекламные каталоги. Пользователь заходит, регистрируется, и запрашивает себе каталог, для чего вводит свой адрес.

Так вот, адрес в США печатается конверте четырьмя строками. Решение в том, что для данного сайта совершенно достаточно хранить адрес всего лишь в виде четырех строковых полей, LINE_1 ... LINE_4, и выводить их на печать конверта в том виде, как ввел пользователь.

Если пользователь слегка ошибся в написании адреса - почтальон посмотрит, поймет. Если ошибся сильно - не получит каталог, сам себе дятел, невелика беда. Спрашивается, нужен ли тут КЛАДР или ФИАС?

Так и в информационных системах среднего пошиба вполне допустимо сделать самопальное упрощенное дерево, а возникающие единичные проблемы решать творчески, например в единственном селе без улицы сделать улицу с названием "без улицы". Ну вот, сейчас опять прибежит softwarer меня бить за такие идеи. Может, он что путное вам посоветует.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39763199
Озверин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat Fisher Не существует такой ситуации, когда всех Андреев пришлось бы переименовывать в Сергеев.

вы тут поосторожнее - у нас все возможно.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39763308
Zmeelov2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherТак и в информационных системах среднего пошиба вполне допустимо сделать самопальное упрощенное дерево
Можно. Но только в том случае, когда разрабатываемая система не предназначена для эксплуатации. Как учебная задача - вполне можно упростить.
Cane Cat FisherЕсли разозлиться, и попробовать охватить все варианты - получится что-то вроде упоминавшихся уже КЛАДР и ФИАС
КЛАДР и даже ФИАС не дают всех вариантов адресов. Причины - не все объекты здания (в понятиях ФИАС - смотрите соседнюю дискуссию по автобусным остановкам), не все объекты привязаны к населенным пунктам. Плюс это национальные системы - то, что за границей РФ, для них не существует. И тогда остается только ручной ввод
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39763410
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeelov2Можно. Но только в том случае, когда разрабатываемая система не предназначена для
эксплуатации. Как учебная задача - вполне можно упростить.

Если система предназначена для эксплуатации, то это дерево надо вообще напрочь убрать и не
парить пользователям мозг вводом бесполезных атрибутов. У них и так работы хватает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39763753
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нас. пункт - из справочника с удобным поиском. Тип улицы (ул/пер/бульв/просп). Остальное - прописью.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39763755
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoТип улицы (ул/пер/бульв/просп).

В вашей конторе действительно делается отчёт с группировкой контрагентов по типу улицы на
которой они расположены? Забавно...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39763790
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovL_argoТип улицы (ул/пер/бульв/просп).
В вашей конторе действительно делается отчёт с группировкой контрагентов по типу улицы на
которой они расположены? Забавно...
нет. Но это позволяет хранить название текстовое улицы без префикса ул/пер/....

А зачем вообще группировать контрагентов по адресу ?
Такое может быть разве что, если нужны все компании в конкретном ТРЦ/ОЦ.

Если уж так нужно привести все к единому знаменателю, то разношерстная инфа адресов просто заносится в таблицу соответствий и там проставляются ID-шки из единого эталонного справочника.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39763803
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoнет. Но это позволяет хранить название текстовое улицы без префикса ул/пер/....

Ага, значит у вас есть отчёт с группировкой контрагентам по улице без учёта её типа.
Что-то вроде "на садовых у нас 12 партнёров"?

В противном случае возникает вопрос: никого не смущает, что ввести префикс улицы в
"остальное прописью" гораздо быстрее и проще, чем выбирать его из длинного выпадающего
списка? Или таки у вас система построена "чтобы слоники бегали"?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39763934
Mr.Fontaine
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoнас. пункт - из справочника с удобным поиском. Тип улицы (ул/пер/бульв/просп). Остальное - прописью.
Справочник с типом улицы повеселил конечно. Номерные проектируемые проезды в какой тип запихивать будете?
Пользователь должен будет выбрать из списка тип - проезд, а затем вручную написать "Проектируемый №4062"?

Да и справочник населённых пунктов.... Привязываться к ФИАС? Ибо вручную админ замается туда наименования заносить...

P.S. Весь адрес вручную, пользователь лучше знает по какому адресу он живёт не задумываясь над классификацией
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39764159
Zmeelov2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mr.FontaineВесь адрес вручную, пользователь лучше знает по какому адресу он живёт не задумываясь над классификацией
Если адрес не значим - то да. А вот если на адрес планируется что-то отправлять - то ручной ввод с предложением вариантов (по результатам разбора ввода пользователя) из ФИАС. Иначе неизбежно столкнетесь с вариантом, что Vjcrdf - столица РФ.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39764174
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoА зачем вообще группировать контрагентов по адресу ?
Например, чтобы составить оптимальный список для обхода, для бригады по выбиванию долгов.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39764177
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argoЕсли уж так нужно привести все к единому знаменателю, то разношерстная инфа адресов просто заносится в таблицу соответствий и там проставляются ID-шки из единого эталонного справочника.
Если эталонный справочник существует, почему бы не дать пользователям просто выбирать из него?
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39764325
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherЕсли эталонный справочник существует, почему бы не дать пользователям просто выбирать из него?

Выбор из справочника обычно медленнее прямого ввода.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39764357
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Логичнее разрешать прямой ввод и предлагать подсказки.
После ввода валидировать и сопоставлять со справочником.
Если какие-то элементы не удалось сопоставить, уточнить у пользователя.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39764401
L_argo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherL_argoЕсли уж так нужно привести все к единому знаменателю, то разношерстная инфа адресов просто заносится в таблицу соответствий и там проставляются ID-шки из единого эталонного справочника.
Если эталонный справочник существует, почему бы не дать пользователям просто выбирать из него?Это не всегда возможно:
1. Адрес пришел в файле или поступил из личного кабинета.
2. У оператора нет времени рыться в поиске среди миллионов строк. Проще набрать неск. букв.
3. Для поиска правильного адреса нужна опред. квалификация: знания переименованных улиц, сленговые названия.
4. Точного адреса вообще может не быть. Тогда указание чего нить ближайшего из БД может быть методологически неверным.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39764442
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
L_argo4. Точного адреса вообще может не быть. Тогда указание чего нить ближайшего из БД может быть методологически неверным.А может и быть.
Мне доводилось находиться по адресу в котором вместо населенного пункта и улицы было "близ села xxxxxx", а потом номер дома. Причиной этому было то, что участок только наполовину попадал на территорию этого села. И здания внутри территории села имели адрес по нему, а здания снаружи - те были "близ". Причем номер дома был один и тот же, но различался номер строения.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39764961
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovCane Cat FisherЕсли эталонный справочник существует, почему бы не дать пользователям просто выбирать из него?

Выбор из справочника обычно медленнее прямого ввода.

Не нужно смешивать вопросы организации интерфейса со структурой БД. Если в справочнике улиц тысячи строк, никто не заставляет пихать их в комбобокс или окно. Вполне можно сначала дать пользователю ввести три буквы, а затем дать выбирать из уже отфильтрованного.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39764965
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zmeelov2Mr.FontaineВесь адрес вручную, пользователь лучше знает по какому адресу он живёт не задумываясь над классификацией
Если адрес не значим - то да

Но один вопрос меня мучает. Если адрес не значим - зачем его вообще вводить?

А если значим - как можно допускать туда мусор?

Зная точный адрес, можно делать с контрагентом всякие интересные вещи, например подать на него в суд. А если у вас его адрес с опечатками да "сленговыми названиями" - нет, конечно, это не сразу так проигрыш в суде, но вполне возможны исправления и задержки в несколько месяцев, за которые он успешно сбагрит все свое имущество, и предстанет перед сами гол как сокол. Вот и подумаешь тогда, чего стоит точный адрес.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39765060
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherZmeelov2пропущено...

Если адрес не значим - то да

Но один вопрос меня мучает. Если адрес не значим - зачем его вообще вводить?

Чтобы показывать в профиле, например.
Один из моих любимых примеров на тему адресов - поле "адрес" в соцсети или месенджере.
Совершенно очевидно, что там насовсем не нужен никакой КЛАДР, ФИАС и прочее,
а нужна просто строка. И если указал пользователь свой адрес как Optimus Prime - ну и исполать ему.
Т.е. ответ на вопрос в заглавном посте вполне универсален и касается любых данных вообще - смотря что собираетесь с этими данными делать

Cane Cat FisherЗная точный адрес, можно делать с контрагентом всякие интересные вещи, например подать на него в суд.
Это вообще странный пример - адрес для подачи в суд надо брать из государственных баз регистрации, а не из собственной, будь даже она трижды идеально нормализована.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39765079
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если нужно знать город из адреса, для группировки- его надо нормализовывать в справочник.
если нужно страну - её тоже
и т.п.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39765113
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cane Cat FisherНо один вопрос меня мучает. Если адрес не значим - зачем его вообще вводить?
А если значим - как можно допускать туда мусор?
Понятие значимости в данном случае расплывчато. Но чтобы далеко не ходить, приведу простой пример из практики. Бюро кредитных историй. Хранить адрес нужно хотя бы по той причине, что этого требует закон. Адрес приходит в виде строки из банка. В банке девочка набивает его с бумажки договора. Не принять "мусор", конечно, можно, вот только это будет нарушение закона. Ваши предложения?
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39765192
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
БКИ - страшный сон наяву с его TUTDF.
...
Рейтинг: 0 / 0
Как хранить адреса в БД?
    #39765193
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183БКИ - страшный сон наяву с его TUTDF.
Нет, спасибо. К этому монстру я отношения не имею.
...
Рейтинг: 0 / 0
25 сообщений из 55, страница 2 из 3
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Как хранить адреса в БД?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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