TransWikia.com

Правильно ли я составил структуру бд по заданию?

Stack Overflow на русском Asked on January 4, 2022

Всем привет у меня есть задание:

Создайте простую систему бронирования жилья (сам бэкэнд, не нужен
фронт) . Основа:

  • квартиру можно снять на сутки (минимальное количество – 1 сутки)
  • одна квартира имеет в один момент Х свободных слотов т. е. может быть сдана в аренду для X людей одновременно (не обязательно с одним
    бронированием что-то вроде общежития / размещения с возможностью
    бронирования кроватей)
  • при бронировании более 7 дней мы предоставляем скидку X%
  • пользователь при бронировании определяет начальную, конечную дату и количество человек / кроватей.

Реализация будет на симфони, но думаю для моего вопроса это не важно.
По этому заданию у меня получилась такая структура бд:

user
id|email

Как сделать для кроватей/квартиры? К таблице user_appartament добавить поле beds и при выборе целой квартиры вставлять сюда количество слотов с сущности appartament? Или лучше добавить ещё одно булево поле full в которой буду обозначать, что будет снята вся квартира?
Если есть лучшее предложение по структуре бд или название таблиц, то прошу предлагать)

One Answer

Есть несколько мелких замечаний, а в целом - годится.

  1. user_appartment я бы переименовал в reservation - ведь это то, что по сути представляет собой запись в этой таблице
  2. смысла добавлять поля full или beds нет, если поле guests уже хранит количество зарезервированных данной резервацией мест. Это производные поля, которые денормализуют данные без особой на то необходимости. Количество свободных мест в квартире всегда известно: это разница между apparment.slots и sum(reservation.guests) для всех резерваций данной квартиры.
  3. Точно так же нет смысла хранить производное поле discount. Оно однозначно определяется на основе полей start_date, end_date.

Answered by Roman Konoval on January 4, 2022

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP