powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / "Географическая" БД. Нужен совет!
19 сообщений из 19, страница 1 из 1
"Географическая" БД. Нужен совет!
    #32304372
Alex1111ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужен совет, как лучше организовать хранение информации для след. задачи

Есть список торговых представителей, отвечающих каждый за свой регион - регион определяется почтовыми индексами. Сейчас этот список у меня на бумаге


111111 Петров
111112 Петров
111113 Петров
111114 Петров
111115 Иванов
111116 Иванов
111117 Петров


надо будет хранить в БД (SQL Server) и организовывать поиск по индексу.

Вводим "111111" получаем "Петров"

Проблема в том, что индексов много - 8000, представителей 20, т.е. примерно по 400 индексов на брата и организовывать что-то вроде


table1

1 Петров
2 Иванов

table2

1 111111
1 111112
2 111116


не хочется, было бы проще может быть


table1

1 Петров 111111-11114, 111117
2 Иванов 111115,111116


но тогда проблемы с организацией поиска

Хм, задача вроде бы простая, может у кого-то есть хорошие идеи? Спасибо!
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32304437
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делай "многие ко многим" через промежуточную таблицу. А вдруг будет несколько людей на один регион?
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32304693
Alex1111ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
многие-ко-многим (как в примере 1) это понятно... меня не то беспокоит - имеет ли смысл делать связку (как в примере 1)

111111 Петров
....
111511 Петров

т.е. в таблице table2 будет 400 индексов для Петрова, хотя может быть все они идут по порядку (+1) м.б. хранить границы интервала и исключения из интервала?

потому что посмотри, индексов - 8000, представителей 20, т.е. примерно по 400 индексов на брата - потом же и редактировать как это дело - это веб-приложение - как в форме редактирования данных торговых представителей задавать 400 индексов? в большом поле через enter? упаришься...
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305206
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а еще одно поле для индекса?
то есть одно - начальный индекс, другое - конечный
если первый < второг, значит это диапазон
если первый = второму, или второй= null, то в первом единичный индекс
добавится одна колонка
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305215
Youry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Smile

А если у человека несколько диапазонов.
Может заведем еще табличку с диапазонами и будем их привязывать к людям
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305243
Alex1111ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в принципе, я уже так подумал, что возможно как тут и посоветовали в таблице создать дополнительные поля, для хранения границ интервала индексов. И в случае, когда проще задать 111111-111114, то

min_index = 111111
max_index = 111114

тогда и искать можно было бы

SELECT * FROM [Table2] WHERE myindex BETWEEN min_index AND max_index

Это конечно если диапазон только один (иначе и правда придется связанную таблицу иметь для нескольких диапазонов)

Вот....

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

а на выборку запрос
SELECT * FROM [Table2] WHERE [gindex1] Like '%_1__3;%'
где % - любой символ(ы)
_ - обязательный любой
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305249
Youry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если есть отдельная таблица для диапазонов, то через запятую не требуется.
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305256
Smile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
через запятую если, потом возникнут сложности с обработкой таких записей, парсить придется и тп
и потом, если таких диапазонов будет много (например, для одного пользователя 111111-111113, 111115-111117, 111119-111121 и т.д) стоит ли городить огород с диапазонами???
мож оставь все как есть?? вроде не так уж и большие таблицы получатся

а что значит таблица с диапазонами?
у вас по любому две таблицы будет как минимум, ну, или три если многие ко многим
хоть диапазон, хоть просто индексы - число таблиц будет одинаковым
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305258
Youry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если еще потребуется помнить - кто и когда за какой регион отвечал?
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305270
Alex1111ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да не... тут бы индексы сохранить, не то что историю... ;-))))

с одной стороны конечно хорошо хранить индексы "поштучно" без всяких там диапазонов, с другой стороны представьте тетю, забивающую (проверяющую) 8000 индексов друг за другом

и это когда ясно видно что можно задать диапазон

а если хранить диапазоны, то возникают проблемы, где их хранить, как их хранить...

пока так ни чё и не решил
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305273
Youry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пусть тетя видит диапазоны, а ты их в россыпь поштучно.
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305303
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
разумеется, храни индексы по-честному, 8000 - смешная цифра.

другое дело, что ты можешь удобно организовать их ввод и отображение (по интервалам), сделав парочку ритуальных приседаний, за это тебе тетя спасибо скажет. :)
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305350
Alex1111ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для SQL Server'а это конечно смешная цифра...

вот посоветуй тогда как в случае хранения "по-честному" определить интервал?


table1

1 Петров
2 Иванов

table2

1 111111
1 111112
1 111113
1 111114
1 111115
2 111116
1 111117
1 111118
1 111119
1 111120


Как видно из примера, в интервале от 111111 до 111120 получается одно "исключение" 111116, каким образом можно быстро найти все "исключения" (или скажем по-другому, - все интервалы)?

Это я спрашиваю к теме об удобном вводе и изображении...

Хотя, может зря я это все... пусть тетя парится? :-)
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305354
Alex1111ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, предыдущий пост, не читайте :-)
Даже если удастся сделать алгоритм быстрого обнаружения интервалов без тупого перебора каждого индекса и проверки на +1 - т.е. задача визуализации данных из БД, то потом у меня возникнут проблемы с сохранением данных в БД - как же эти интервалы заданные тетей потом превратить в представление "по-честному"?

Думаю, что завтра сделаю большое текстовое поле в интерфейсе (как поле где пишется ответ на этом форуме), куда можно будет через enter задавать индексы "поштучно". С разбиенем полученного текста на 400 индексов и сохранением их "по-честному" проблем не возникнет.

Проблема только при первоначальном заполнении индексов может быть... потому что много значений надо вводить. Но это можно javascript какой-нибудь написать, чтобы автоматом заполняло поле при введенных границах интервала.
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305507
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
немного подумал, как бы это сделал я:
1. Имеем master-slave грид (иерархический, с "плюсиком")
2. если в мастер-гриде в строке стоит просто индекс, слева нет плюсика
3. если там стоит запись типа 11120-11250, то открываем по "+" список интервалов, редактируем (добавляем, например). Т.е. надо сделать возможность редактировать как на мастере, так и на слейве с синхронизацией. Если интервал "рвется" в подчиненных строках - то отображать его как 11120-11135, 11139-11250.
4. После нажатия кнопки Save - нормализация структуры (склеивание соседних интервалов, разнесение на строки многоинтервальных записей).
5. Усе. на мой взгляд - удобно.

Да, именно, на клиентской части тупая пробежка по интервалам.
Никакого мастер-слэйв на сервере.
На чем клиент? Это обычно за миллисекунды происходит.
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305773
Серега
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Alex1111ы
>меня не то беспокоит - имеет ли смысл делать связку (как в примере 1)
Я за. Ибо это УНИВЕРСАЛЬНЫЙ способ хранения. С диапазонами можно и запутаться в конец.
Кроме того, в вопросе ты говоришь про "регионы", а индексы в примере - соседние почтовые отделения. Это как то не стыкуется. ИМХО регион - это город, например, или область. А у них разные 3 первые цифры.
Может в эту сторону подумать.
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305862
Alex1111ы
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем откликнувшимся!

Клиент на ASP/ASP.NET, так что с гридами проблемки, но за идею спасибо.

Насчет "регионов" - я не имел ввиду области/федеральные округа и т.п. крупные структуры - сорри за непонятки - да, действительно, индексы бывают разные даже на соседних улицах мало-мальски крупного города. Ну а хранить мне надо индексы, причем это не только РФ, но и Европа, там еще и буквы бывают :-)
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32305884
ywwyww
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В InterSystems Cache Ваша структура выразилась бы всего навсего в паре - тройке глобалов.

Например так:
Глобал1(Индекс,Дата)=ФИО1^ФИО2^ФИО3^...^
Глобал2(ФИО,Дата)=Индекс1^Индекс2^Индекс3^...^

Тогда сведения о том кто отвечает за индекс получаем одним оператором:

Сведения=$G(^Глобал1(Индекс,$O(^Глобал1(Индекс,Сегодняшнее число+1 день),-1))

Для ФИО аналогично но по Глобал2

Диалоги по уточнению непоностью введенных индексов или фамилий проблемы не составляют. Объемы данных для Cache несущественные.
Создать SQL-описание этих структур также не сложно.
...
Рейтинг: 0 / 0
"Географическая" БД. Нужен совет!
    #32306039
Фотография vdimas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Alex1111ы

на DHTML это все еще легче делается.

а серверу отсылай/принимай в таком формате (через невидимое поле формы):
xxx-xxx1, yyy1, zzz1-zzz2, ...
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / "Географическая" БД. Нужен совет!
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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