Stack Overflow на русском Asked on January 4, 2022
Всем привет у меня есть задание:
Создайте простую систему бронирования жилья (сам бэкэнд, не нужен
фронт) . Основа:
- квартиру можно снять на сутки (минимальное количество – 1 сутки)
- одна квартира имеет в один момент Х свободных слотов т. е. может быть сдана в аренду для X людей одновременно (не обязательно с одним
бронированием что-то вроде общежития / размещения с возможностью
бронирования кроватей)- при бронировании более 7 дней мы предоставляем скидку X%
- пользователь при бронировании определяет начальную, конечную дату и количество человек / кроватей.
Реализация будет на симфони, но думаю для моего вопроса это не важно.
По этому заданию у меня получилась такая структура бд:
user
id|email
Как сделать для кроватей/квартиры? К таблице user_appartament
добавить поле beds
и при выборе целой квартиры вставлять сюда количество слотов с сущности appartament
? Или лучше добавить ещё одно булево поле full
в которой буду обозначать, что будет снята вся квартира?
Если есть лучшее предложение по структуре бд или название таблиц, то прошу предлагать)
Есть несколько мелких замечаний, а в целом - годится.
user_appartment
я бы переименовал в reservation
- ведь это то, что по сути представляет собой запись в этой таблицеfull
или beds
нет, если поле guests
уже хранит количество зарезервированных данной резервацией мест. Это производные поля, которые денормализуют данные без особой на то необходимости. Количество свободных мест в квартире всегда известно: это разница между apparment.slots
и sum(reservation.guests)
для всех резерваций данной квартиры.discount
. Оно однозначно определяется на основе полей start_date
, end_date
.Answered by Roman Konoval on January 4, 2022
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP