Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение маршрута в базе данных / 20 сообщений из 20, страница 1 из 1
10.04.2008, 18:01
    #35249417
eugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
Eugene
Что-то без поллитры не соображу как хранить маршруты в базе данных. Маршрут в общем случае имеет переменное число промежуточных пунктов. Можно конечно закодировать все пункты и представить маршрут как последовательность кодов пунктов, да ещё видно разделённых разделителями. Но потом всю эту бредятину раскодировать замучаешся.
В каких структурах интересно хранятся маршруты в базах данных логистических систем?
...
Рейтинг: 0 / 0
10.04.2008, 19:55
    #35249634
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
eugene
Хорошо, давайте думать вместе.
1. Маршрут - это совокупность чего? Упорядоченная или нет?
...
Рейтинг: 0 / 0
10.04.2008, 21:06
    #35249716
eugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
Маршрут - это получается упорядоченная последовательность кодов. Возможно повторяющихся
Получается, что представление маршрутов сродни хранению графа. Конечно удобно представлять в программировании в виде списковых структур. Но может возможно такое
N_маршр1 1 N1
N_маршр1 2 N2
......
N_маршр1 k Nk
где Ni - номера узлов (транзитных пунктов),
при этом N1=1 - код начального узла, N2 - код следующего и т.п.
Если маршруты с циклами ,то в последовательности Ni есть совпадающие элементы.
Записей с кодом=N_маршр1 в БД ровно столько каково количество всех пунктов маршрута
...
Рейтинг: 0 / 0
10.04.2008, 21:44
    #35249753
shelsoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
Батенька, принцип построение файловых систем (FAT, NTFS & etc) посмотрите с точки зрения хранения маршрутов


______________________________________________________
Задолбали вихри яростных атак ...
...
Рейтинг: 0 / 0
10.04.2008, 22:00
    #35249768
Хранение маршрута в базе данных
shelsoftБатенька, принцип построение файловых систем (FAT, NTFS & etc) посмотрите с точки зрения хранения маршрутов


______________________________________________________
Задолбали вихри яростных атак ...


своими тупыми комментариями. Иди возьми себе отпуск.
...
Рейтинг: 0 / 0
11.04.2008, 01:34
    #35249914
shelsoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
чувак, ты задолбал


1) Автор во втором посте практически пришел к тому механизму как "по маршруту" собирается файл в FATе :) Помимо этого механизма есть еще и "i-node" в Unix & etc
2) В руководствах подробно описаны алгоритмы сборки маршрутов их достоинства и недостатки, методики реализации (в т. ч. и "маршруты с циклами") и в принципе они в т. ч. могут быть использованы при выборе структуры базы данных.
3) Оффтоп: "Ви ест майор Вихрь ?"




______________________________________________________
Задолбали вихри яростных атак ...
...
Рейтинг: 0 / 0
11.04.2008, 03:03
    #35249942
mcureenab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
eugeneВ каких структурах интересно хранятся маршруты в базах данных логистических систем?

Можно в реляционных, можно в объектно-реляционных.
Вопрос скорее в том, как их использовать. Возможно, что XML подойдёт.

Т.е. ключевая фраза тут "всю эту бредятину раскодировать замучаешся." Делай так, чтобы не мучаться.
...
Рейтинг: 0 / 0
11.04.2008, 18:01
    #35250713
Сергей Васкецов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
eugeneМаршрут - это получается упорядоченная последовательность кодов
Что значит кодов? Узловых точек (включая начальную и конечную)? А одна точка может несколько раз в одном маршруте быть?
...
Рейтинг: 0 / 0
14.04.2008, 11:51
    #35252996
VLLV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
Маршрут в общем случае - это неориентированный граф, вершинами которого являются узлы (пункты маршрута), рёбрами - отрезки пути между пунктами. Соответственно имеем

1. Табличка для узлов маршрута (оид, наименование, прочие атрибуты)
2. Табличка для отрезков (оид, ссылка на узел 1, ссылка на узел 2, расстояние, прочие атрибуты)

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

Примерно так.
...
Рейтинг: 0 / 0
15.04.2008, 16:42
    #35256789
eugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
Eugene
Конечно я понимаю, по хорошему это всё так.
Но хотелось бы уточнить:
1)1-е читатели отсылавшие к ОС - нельзя какую-то ссылку по теме разговора, а то ОС - они то большие, написано книг и статей множество и не поймёшь что читать
2)Последний автор в принципе обрисовал модель с т.зр. математики но не сказал как это всё запихивать в несчастную БД. (я уже не говорю как писать программы работы с этими деревьями - это не тема этого сайта). Я в данном разговоре предъявляю к БД с т.зр. маршрутов очень скромные требования:
1)по спец-запросу отобразить перечень пунктов маршрута включая нач, конечный, и промежуточн
(при этом маршруты могут быть самопересекающимися и кольцевыми.
и 2 вида информации
1.1 характеристики транзитных пунктов
1.2 характеристики рёбер (например время поездки и расстояние от промежут пункта до следующего пункта маршрута.
1.3 Если есть несколько маршрутов ведущих из п.А в п.B надо сконструировать запрос ихи хранимую процедуру, выводящую все эти маршруты с информацией о времени поездки и какой-то другой.
\ВОТ и ВСЁ!!!
...
Рейтинг: 0 / 0
15.04.2008, 18:08
    #35257086
joker 79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
Мдя... вы даете, ребята. (ну или я чего то не понял)

Хранить легко:
один-ко-многим. Мастер - маршрут (id, всякая ерунда). подчиненка - id точек и какое-нить поле типа очередность (чтобы по нему order by делать)
...
Рейтинг: 0 / 0
15.04.2008, 18:18
    #35257121
joker 79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
eugeneEugene
1)по спец-запросу отобразить перечень пунктов маршрута включая нач, конечный, и промежуточн
(при этом маршруты могут быть самопересекающимися и кольцевыми.
и 2 вида информации

select по подчиненке where id_marchrut = нужный_нам

eugene
1.1 характеристики транзитных пунктов

К тому же запросу лепишь join на справочник точек маршрутов

eugene
1.2 характеристики рёбер (например время поездки и расстояние от промежут пункта до следующего пункта маршрута.

ну тут все зависит от того КАК будут хранится ребра. (напрмиер координаты вершин или длина всех ребер). Но имхо - это лучше в клиента вынести (просто по каждому результату у тебя будет доп запрос)

eugene
1.3 Если есть несколько маршрутов ведущих из п.А в п.B надо сконструировать запрос ихи хранимую процедуру, выводящую все эти маршруты с информацией о времени поездки и какой-то другой.
\ВОТ и ВСЁ!!!
Ухты это и называется ХРАНЕНИЕ В БД? А по моему на SQL Вы пытаетесь навесить проблемы программирования, для которых необходимо использовать нормальные ЯВУ.
(кстати, если уж совсем нужно получать эту информацию "из БД" то большинство из них поддерживают функции пользователя - можно попробовать и на них сделать такое - но это не более чем подгонка результата)
А та задача, про которую идет разговор в 1.3 это классика из теории графов.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
20.04.2013, 09:28
    #38233691
eugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
Ну вот окончательно и по возможности точно формулирую 2 альтернативы
1)Хранение маршрута каждый узел в своем поле БД
Недостатки - число полей БД фиксировано и можно лишь зарезервировать, например 30 или 50. Длину маршрута хранить в 1 поле. SQL запросы будут страшно длинными, неудобно, нужно каждый раз формировать в программном цикле.
Достоинства. Каждое поле-узел табл.reis можно связать каскадной связью с табл. узлов Node - т.е автоматич поддержка ссылочной целостности.

2) Хранение маршрута в строковом (или веществ)поле.
резервируется мах число узлов например N=100 Каждый узел кодируется тогда 2 символами
Недостатки - сложность раскодирования. Писать программу разбивающая строку на пары соседн символов и преобразующие их в NN узлов. Никакой поддержки ссылочной целостности.
Единственное достоинство - удобное хранение в длинном текстовом поле (длина 200 и выше)
...
Рейтинг: 0 / 0
20.04.2013, 11:08
    #38233709
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
eugene,

ну ты даешь
выдать через год такое :)
...
Рейтинг: 0 / 0
20.04.2013, 12:26
    #38233740
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
eugeneНу вот окончательно и по возможности точно формулирую 2 альтернативы
1)Хранение маршрута каждый узел в своем поле БД
Недостатки - число полей БД фиксировано и можно лишь зарезервировать, например 30 или 50. Длину маршрута хранить в 1 поле. SQL запросы будут страшно длинными, неудобно, нужно каждый раз формировать в программном цикле.
Достоинства. Каждое поле-узел табл.reis можно связать каскадной связью с табл. узлов Node - т.е автоматич поддержка ссылочной целостности.

2) Хранение маршрута в строковом (или веществ)поле.
резервируется мах число узлов например N=100 Каждый узел кодируется тогда 2 символами
Недостатки - сложность раскодирования. Писать программу разбивающая строку на пары соседн символов и преобразующие их в NN узлов. Никакой поддержки ссылочной целостности.
Единственное достоинство - удобное хранение в длинном текстовом поле (длина 200 и выше)На гугле забанили?
Может, и термин "пространственные данные" Вам ничего не говорит?
...
Рейтинг: 0 / 0
22.04.2013, 13:41
    #38234960
PL99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
ViPRosвыдать через год такое :)Не, через пять лет. Ну что, можно сказать, выстраданное решение.

sphinx_mvМожет, и термин "пространственные данные" Вам ничего не говорит?ТС не говорил о необходимости хранить маршруты с привязкой к географическим координатам, скорее всего, у него задача проще.
...
Рейтинг: 0 / 0
22.04.2013, 16:22
    #38235292
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
PL99ViPRosвыдать через год такое :)Не, через пять лет. Ну что, можно сказать, выстраданное решение.

sphinx_mvМожет, и термин "пространственные данные" Вам ничего не говорит?ТС не говорил о необходимости хранить маршруты с привязкой к географическим координатам, скорее всего, у него задача проще.Сугубо к сведению: "географические координаты" представляют собой всего лишь частный случай "пространственных данных".
Базовые примитивы "пространственных данных", поддерживаемые производителями "основных" БД в строгом соотвествии с "отраслевыми" стандартами - точки, линии, кривые, полигоны и т.п. (около двух десятков)...

Есть и стандарт на текстовое представление этих типов данных - ознакомиться "по быстрому" можно тут
...
Рейтинг: 0 / 0
22.04.2013, 16:24
    #38235300
sphinx_mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
sphinx_mvЕсть и стандарт на текстовое представление этих типов данных - ознакомиться "по быстрому" можно тут Кстати, там же есть список РСУБД, которые имеют поддержку пространственных типов данных.
...
Рейтинг: 0 / 0
10.05.2013, 12:56
    #38253097
eugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
Вот в результате раздумий остановился на схеме
http://s40.radikal.ru/i090/1305/64/01965adb414a.jpg
Какая-то ссылочная целостность (неполная)поддерживается. Так нельзя вставить
в маршрут не вершину графа. Но контроль на существование ребра возложен не на СУБД а на программиста.т.е. ребро между соседними остановками это поля Routes.N между каждыми соседними Routes.nost (nost - порядковы1 N остановки от начала маршрута)
Достоинства- минимум полей
...
Рейтинг: 0 / 0
10.05.2013, 14:08
    #38253128
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранение маршрута в базе данных
eugeneНу вот окончательно и по возможности точно формулирую 2 альтернативы
1)Хранение маршрута каждый узел в своем поле БД
Недостатки - число полей БД фиксировано и можно лишь зарезервировать, например 30 или 50. Длину маршрута хранить в 1 поле. SQL запросы будут страшно длинными, неудобно, нужно каждый раз формировать в программном цикле.
Достоинства. Каждое поле-узел табл.reis можно связать каскадной связью с табл. узлов Node - т.е автоматич поддержка ссылочной целостности.

2) Хранение маршрута в строковом (или веществ)поле.
резервируется мах число узлов например N=100 Каждый узел кодируется тогда 2 символами
Недостатки - сложность раскодирования. Писать программу разбивающая строку на пары соседн символов и преобразующие их в NN узлов. Никакой поддержки ссылочной целостности.
Единственное достоинство - удобное хранение в длинном текстовом поле (длина 200 и выше)Кошмар :)
Вы это придумали за пять лет???

вот, в первом приближении:
Узлы - это таблица узлов, (id_узла, наименование_узла)
Маршруты - таблица маршрутов: (id_маршрута, наименование_маршрута)
конкретный маршрут пишется в таблице, общей для всех маршрутов, такой:
(id_маршрута, id_узла, id_предыдущего_узла)

погуглите про графы, списки, и прочие структуры данных.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Хранение маршрута в базе данных / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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