Добрый вечер.
Есть форма для составления маршрута. Помимо названия, номера маршрута, города выезда и города прибытия необходимо записать промежуточные пункты следования. Их может быть от одного и более.
Поэтому возник вопрос, как лучше хранить id этиx пунктов в базе?
1) В таблице маршрутов, писать все id промежуточных городов одной строкой.
2) Создавать промежуточную таблицу, куда писать id маршрута и id каждого города.
Подскажите, пожалуйста, как будет лучше?
Fortop, вот только не могу понять, как это лучше сделать, я о нумерации городов.
Сейчас у меня select multiple. Каким способом можно пронумеровать? Города в списке идут в алфавитном порядке.
Отлавливать через js выбранные города?
все зависит от того что Вы будете делать дальше с этим маршрутом. Если в последствии Вам необходимо будет применять к маршруту разнообразные алгоритмы тогда стоит хранить данные в БД как неориентированный граф, если же просто будет добавление/вывод маршрута тогда вариант 2 вполне подойдет
Прочитал некоторые статьи по Вашей ссылке и понял, если я правильно понял статьи, что я неверно изначально построил базу.
Начал с такой структуры:
1) Таблица маршрутов, в ней хранятся два id для города выезда и города прибытия.
2) Таблица с промежуточными(транзитными) городами.), связующая для маршрутов и городов.
Это вызвало трудность с отображением информации по отдельному городу. Нужно было выводить к каким маршрутам привязан город и является ли он отправной точкой или транзитной.
Потом слил все города в одну таблицу и добавил поле 'type' для определения типа города - отправная точка (значения 1 или 2 - начальные города) или транзитная(значение 0).
В этом варианте тоже неудобно определять начальную и конечную точку маршрута.
Сейчас думаю переделать это на две связующие таблицы:
1) Для исходных точек маршрута
2) Для транзитных точек маршрута.
В общем запутался окончательно.
Как бы Вы посоветовали сделать?
Связи между таблицами настроены.