|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
tasyusha Вот и когда я уже дошел до такого состояния, что для выполнения простейшего запроса нужно сделать запрос в 3 JOINа на 4 таблицыОбычно это не является проблемой tasyusha а 2000 Андреев - это нормально?вы еще выгоду в диске подсчитайте - каждое поле name_id пусть будет int32 - 4 байта, а условный андрей - шесть байт итого целых два байта на каждого пользователя, для 2000 андреев это будет аж 4Кб Теперь другой момент который вы упускаете - редактирование записи Пусть пользователь хочет ввести город "Питер" ваши действия: не давать вводить совсем - выбирай из списка, ищи лучше - не нашел твои проблемы, а нам не нужны клиенты с проблемами. или ввести Питер в справочник городов в дополнение к "Санкт-Петербургу", "Санкт Петербургу", "Ст-Петербургу", "Петербургу", "Ленинграду". Допустим мы разрешили пользователям вводить свои значения и пользователь меняет свой "Питер" на "Санкт-Петербург" Когда мы должны удалить "Питер" из справочника: никогда, когда на него не будет ссылок? tasyusha вынести в отдельную таблицу адресов и хранить там в форме id, city, street, house, apt Ага, а потом client_address_xref таблицу, а потом при смене клиетном адреса оставлять старый адрес типа а вдруг пригодится. Короче Добавьте в вашу таблицу адресов клиент_id и назовите таблицу адреса клиентов, чтобы клиент мог иметь более одного адреса. Стоит ли связыватся с кладром (ФИАСом) решайте сами PizzaPizza Осталось выяснить для чего нужна сама нормализация (ну не нужна же она только для галочки, правда?) и вы сразу получите ответ.плюс много. с некоторого возраста появился вопрос "зачем" (с) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 17:37 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
SERG1257вы еще выгоду в диске подсчитайте - каждое поле name_id пусть будет int32 - 4 байта, а условный андрей - шесть байт итого целых два байта на каждого пользователя, для 2000 андреев это будет аж 4Кб надо все адреса сократить. питер -> п а у нас в уезде писарь возраст одной цифирькой указывал. чернила, шельмец, экономил (с) кино ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 18:56 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
tasyushaВопрос в том, как спроектировать таблицу(ы) для хранения адресов Ладно, открою тайну. Беда в том, что понятие адресов - штука очень исторически сложившаяся, архаичная, полная исключений, и потому очень плохо ложащаяся в понятия реляционных баз данных. Если разозлиться, и попробовать охватить все варианты - получится что-то вроде упоминавшихся уже КЛАДР и ФИАС, но нужны ли они вам - решайте сами. Начинающие разработчики часто пытаются сделать простое дерево вроде Область - Район - Населенный пункт - Улица - Дом - Квартира. Типовые проблемы, с которыми они сталкиваются - города федерального подчинения, села без улиц, несколько одинаковых улиц в одном городе, понятие микрорайонов, кварталов, корпусов, строений, флигелей, военных городков, зданий без присвоенного адреса, и тому подобное. Но все же на практике часто используют упрощенные модели. В пределе, например, работающее решение: Вы делаете сайт, рассылающий по почте бумажные рекламные каталоги. Пользователь заходит, регистрируется, и запрашивает себе каталог, для чего вводит свой адрес. Так вот, адрес в США печатается конверте четырьмя строками. Решение в том, что для данного сайта совершенно достаточно хранить адрес всего лишь в виде четырех строковых полей, LINE_1 ... LINE_4, и выводить их на печать конверта в том виде, как ввел пользователь. Если пользователь слегка ошибся в написании адреса - почтальон посмотрит, поймет. Если ошибся сильно - не получит каталог, сам себе дятел, невелика беда. Спрашивается, нужен ли тут КЛАДР или ФИАС? Так и в информационных системах среднего пошиба вполне допустимо сделать самопальное упрощенное дерево, а возникающие единичные проблемы решать творчески, например в единственном селе без улицы сделать улицу с названием "без улицы". Ну вот, сейчас опять прибежит softwarer меня бить за такие идеи. Может, он что путное вам посоветует. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2019, 20:46 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
Cane Cat Fisher Не существует такой ситуации, когда всех Андреев пришлось бы переименовывать в Сергеев. вы тут поосторожнее - у нас все возможно. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 08:20 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
Cane Cat FisherТак и в информационных системах среднего пошиба вполне допустимо сделать самопальное упрощенное дерево Можно. Но только в том случае, когда разрабатываемая система не предназначена для эксплуатации. Как учебная задача - вполне можно упростить. Cane Cat FisherЕсли разозлиться, и попробовать охватить все варианты - получится что-то вроде упоминавшихся уже КЛАДР и ФИАС КЛАДР и даже ФИАС не дают всех вариантов адресов. Причины - не все объекты здания (в понятиях ФИАС - смотрите соседнюю дискуссию по автобусным остановкам), не все объекты привязаны к населенным пунктам. Плюс это национальные системы - то, что за границей РФ, для них не существует. И тогда остается только ручной ввод ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 11:18 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
Zmeelov2Можно. Но только в том случае, когда разрабатываемая система не предназначена для эксплуатации. Как учебная задача - вполне можно упростить. Если система предназначена для эксплуатации, то это дерево надо вообще напрочь убрать и не парить пользователям мозг вводом бесполезных атрибутов. У них и так работы хватает. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 13:28 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
нас. пункт - из справочника с удобным поиском. Тип улицы (ул/пер/бульв/просп). Остальное - прописью. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 17:35 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
L_argoТип улицы (ул/пер/бульв/просп). В вашей конторе действительно делается отчёт с группировкой контрагентов по типу улицы на которой они расположены? Забавно... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 17:38 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovL_argoТип улицы (ул/пер/бульв/просп). В вашей конторе действительно делается отчёт с группировкой контрагентов по типу улицы на которой они расположены? Забавно... нет. Но это позволяет хранить название текстовое улицы без префикса ул/пер/.... А зачем вообще группировать контрагентов по адресу ? Такое может быть разве что, если нужны все компании в конкретном ТРЦ/ОЦ. Если уж так нужно привести все к единому знаменателю, то разношерстная инфа адресов просто заносится в таблицу соответствий и там проставляются ID-шки из единого эталонного справочника. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 18:35 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
L_argoнет. Но это позволяет хранить название текстовое улицы без префикса ул/пер/.... Ага, значит у вас есть отчёт с группировкой контрагентам по улице без учёта её типа. Что-то вроде "на садовых у нас 12 партнёров"? В противном случае возникает вопрос: никого не смущает, что ввести префикс улицы в "остальное прописью" гораздо быстрее и проще, чем выбирать его из длинного выпадающего списка? Или таки у вас система построена "чтобы слоники бегали"?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2019, 19:04 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
L_argoнас. пункт - из справочника с удобным поиском. Тип улицы (ул/пер/бульв/просп). Остальное - прописью. Справочник с типом улицы повеселил конечно. Номерные проектируемые проезды в какой тип запихивать будете? Пользователь должен будет выбрать из списка тип - проезд, а затем вручную написать "Проектируемый №4062"? Да и справочник населённых пунктов.... Привязываться к ФИАС? Ибо вручную админ замается туда наименования заносить... P.S. Весь адрес вручную, пользователь лучше знает по какому адресу он живёт не задумываясь над классификацией ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2019, 08:10 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
Mr.FontaineВесь адрес вручную, пользователь лучше знает по какому адресу он живёт не задумываясь над классификацией Если адрес не значим - то да. А вот если на адрес планируется что-то отправлять - то ручной ввод с предложением вариантов (по результатам разбора ввода пользователя) из ФИАС. Иначе неизбежно столкнетесь с вариантом, что Vjcrdf - столица РФ. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2019, 12:11 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
L_argoА зачем вообще группировать контрагентов по адресу ? Например, чтобы составить оптимальный список для обхода, для бригады по выбиванию долгов. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2019, 12:19 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
L_argoЕсли уж так нужно привести все к единому знаменателю, то разношерстная инфа адресов просто заносится в таблицу соответствий и там проставляются ID-шки из единого эталонного справочника. Если эталонный справочник существует, почему бы не дать пользователям просто выбирать из него? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2019, 12:20 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
Cane Cat FisherЕсли эталонный справочник существует, почему бы не дать пользователям просто выбирать из него? Выбор из справочника обычно медленнее прямого ввода. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2019, 14:22 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
Логичнее разрешать прямой ввод и предлагать подсказки. После ввода валидировать и сопоставлять со справочником. Если какие-то элементы не удалось сопоставить, уточнить у пользователя. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2019, 14:50 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
Cane Cat FisherL_argoЕсли уж так нужно привести все к единому знаменателю, то разношерстная инфа адресов просто заносится в таблицу соответствий и там проставляются ID-шки из единого эталонного справочника. Если эталонный справочник существует, почему бы не дать пользователям просто выбирать из него?Это не всегда возможно: 1. Адрес пришел в файле или поступил из личного кабинета. 2. У оператора нет времени рыться в поиске среди миллионов строк. Проще набрать неск. букв. 3. Для поиска правильного адреса нужна опред. квалификация: знания переименованных улиц, сленговые названия. 4. Точного адреса вообще может не быть. Тогда указание чего нить ближайшего из БД может быть методологически неверным. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2019, 15:18 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
L_argo4. Точного адреса вообще может не быть. Тогда указание чего нить ближайшего из БД может быть методологически неверным.А может и быть. Мне доводилось находиться по адресу в котором вместо населенного пункта и улицы было "близ села xxxxxx", а потом номер дома. Причиной этому было то, что участок только наполовину попадал на территорию этого села. И здания внутри территории села имели адрес по нему, а здания снаружи - те были "близ". Причем номер дома был один и тот же, но различался номер строения. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.01.2019, 15:36 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovCane Cat FisherЕсли эталонный справочник существует, почему бы не дать пользователям просто выбирать из него? Выбор из справочника обычно медленнее прямого ввода. Не нужно смешивать вопросы организации интерфейса со структурой БД. Если в справочнике улиц тысячи строк, никто не заставляет пихать их в комбобокс или окно. Вполне можно сначала дать пользователю ввести три буквы, а затем дать выбирать из уже отфильтрованного. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2019, 13:55 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
Zmeelov2Mr.FontaineВесь адрес вручную, пользователь лучше знает по какому адресу он живёт не задумываясь над классификацией Если адрес не значим - то да Но один вопрос меня мучает. Если адрес не значим - зачем его вообще вводить? А если значим - как можно допускать туда мусор? Зная точный адрес, можно делать с контрагентом всякие интересные вещи, например подать на него в суд. А если у вас его адрес с опечатками да "сленговыми названиями" - нет, конечно, это не сразу так проигрыш в суде, но вполне возможны исправления и задержки в несколько месяцев, за которые он успешно сбагрит все свое имущество, и предстанет перед сами гол как сокол. Вот и подумаешь тогда, чего стоит точный адрес. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2019, 13:59 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
Cane Cat FisherZmeelov2пропущено... Если адрес не значим - то да Но один вопрос меня мучает. Если адрес не значим - зачем его вообще вводить? Чтобы показывать в профиле, например. Один из моих любимых примеров на тему адресов - поле "адрес" в соцсети или месенджере. Совершенно очевидно, что там насовсем не нужен никакой КЛАДР, ФИАС и прочее, а нужна просто строка. И если указал пользователь свой адрес как Optimus Prime - ну и исполать ему. Т.е. ответ на вопрос в заглавном посте вполне универсален и касается любых данных вообще - смотря что собираетесь с этими данными делать Cane Cat FisherЗная точный адрес, можно делать с контрагентом всякие интересные вещи, например подать на него в суд. Это вообще странный пример - адрес для подачи в суд надо брать из государственных баз регистрации, а не из собственной, будь даже она трижды идеально нормализована. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2019, 16:28 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
если нужно знать город из адреса, для группировки- его надо нормализовывать в справочник. если нужно страну - её тоже и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2019, 17:00 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
Cane Cat FisherНо один вопрос меня мучает. Если адрес не значим - зачем его вообще вводить? А если значим - как можно допускать туда мусор? Понятие значимости в данном случае расплывчато. Но чтобы далеко не ходить, приведу простой пример из практики. Бюро кредитных историй. Хранить адрес нужно хотя бы по той причине, что этого требует закон. Адрес приходит в виде строки из банка. В банке девочка набивает его с бумажки договора. Не принять "мусор", конечно, можно, вот только это будет нарушение закона. Ваши предложения? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.01.2019, 18:08 |
|
Как хранить адреса в БД?
|
|||
---|---|---|---|
#18+
БКИ - страшный сон наяву с его TUTDF. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2019, 02:34 |
|
|
start [/forum/topic.php?fid=32&msg=39764159&tid=1539963]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
7ms |
check topic access: |
7ms |
track hit: |
31ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 250ms |
total: | 386ms |
0 / 0 |