#база_данных #ruby_on_rails #activerecord
Имеется сложная структура состоящая из select и radiobutton. И база данных данных: В данном примере парковка может не предоставляться или предоставляться платно или бесплатно. В зависимости от выбора (платно/бесплатно/нет) можно указать дополнительные опции (такие как расположение, тип, бронь и т.д.). Как лучше всего хранить такую структуру в БД? Я вижу решение задачи в виде дерева, не знаю на сколько это верно и не знаю как правильно это реализовать. Если хранить в виде дерева то листами такого дерева будут такие записи: "Платная парковка на территории с необходимостью предварительного резервирования ценой 1000р/д", тогда не понятно как объединить несколько select в один.
Ответы
Ответ 1
Здравствуйте. Как лучше, решать вам, и поймете вы это со временем. Я бы начал с простого, примерно так: Это как пример, и: business - Бизнес центры parking - Парковки (вообще весь список) location - Расположения (если парковка это ООО, то у нее несколко мест) types - Тип (частная/муник/безхозная - можно и ENUM сделать) booking - Бронирование (способы бронирования) Платная не платная определяет поле paid (1-платная, 0-нет). Создаем везде нулевые варианты. Если кто подскажет, есть ли другой вариант не создавать нулевые записи, оставив связи, буду признателе. Выбираем все бизнес центры и по LEFT JOIN parking подрубаем parking с WHERE parking_id>0. И если есть запись, то парковка есть, и пошел дальнейший разбор. Не претендую на THE BEST, но сам бы начал с этого. UPD1 Кстати, location можно влить в business. С другой стороны не стоит, вдруг парковка через дорогу, а человек добирается по навигатору, то координаты должны быть именно места парковки, а не самого БЦ. UPD2 Нужно еще учесть, что у БЦ может быть несколько парковок. Поэтому лучше сделать связь МНОГИЕ-КО-МНОГИМ: business <-> parking. Извиняюсь, что не сразу, хорошая мысля, приходит апосля...
Комментариев нет:
Отправить комментарий