Страницы

Поиск по вопросам

вторник, 17 декабря 2019 г.

Как лучше всего хранить такую структуру в БД

#база_данных #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. Извиняюсь, что не сразу, хорошая мысля, приходит апосля...

Комментариев нет:

Отправить комментарий