Никогда не сталкивался с логистикой, только в теории в институте. Представьте себе множество точек соединенных линиями. Точки БЕЗ координат(x,y,z). У точек есть названия - это пункты выгрузки, загрузки, а линии их соединяющие - это машруты. Чтобы проложить маршрут необходимо задать начальный пункт и конечный. А программа уже выдает количество промежуточных пунктов и их названия. Вот пример : Карта с точками
А вопрос как правильно мне хранить эти отношения в базе данных, чтобы я мог эффективно прокладывать маршрут и иметь представление о колчиестве пересекаемых пунктов?
Я склоняюсь к методу что необходимо в первую очередь создать таблицу уникальных названий точек с id PRYMARY AUTO_INCREMENT
Затем сделать что то вроде
SELECT t1.`name`,t2.`name` AS `second_name` FROM `table` t1 FULL JOIN `table` t2 ON t1.`name`!=t2.`name`
и проверить есть ли между ними связь, если есть, то записать в таблицу многие ко многим (пару, как их id в пару столбцов)
Либо пойти по другому пути и проверить сколько между ними точек и определить их id
Первый способ гибкий, поскольку можно будет выбирать маршруты. А второй более быстрый - дает однозначный вариант и считать ничего не нужно будет, только вот если понадобятся не линейные маршруты а с заездами в соседние - то тут я не знаю тоже какая то формула понадобится.
В первом же случае мне придется выстраивать два дерева сцепленными ветвями, где их основания начальная и конечная точка, все сцепленные ветки это пути, а самый короткий путь - это искомый.
Если кто сталкивался с такого рода задачами - подскажите где искать информацию.
Спасибо.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты