@EVOSandru6

Как избежать коллизии в на участке в бд?

Добрый день,

Есть такая структура данных:

пользователи
гостиницы
номера
тариф за номер (для одного человека, за 2-х и т.д.)
заявки
подзаявки (вот - тут больное место) - необходимый пункт (!?) , ссылающийся на тариф, в зависимости от кол-ва людей в комнате
процесс (назвал так элемент, где идут связи пользователя и комнаты для данной заявки )

К большому сожалению - нельзя указать определенный коэффициент для каждого отеля, который рассчитывает стоимоть комнаты для определенного кол-ва человек - и это число может быть произвольным.

Пользователь создает заявку, где может выбрать произвольное кол-во комнат и заселить ими произвольное кол-во людей.

Структура:

users
---------
id

hotels
---------
id

bids
---------
id

rooms
---------
id
hotel_id


tarifs
---------
id
room_id


subbids
---------
id
bid_id
tarif_id


mc_processes
---------
id
user_id
room_id
subbid_id


Тут 2 момента, которые меня интересуют:

1. Мне очень не нравится , что при редактировании кол-ва людей в определенной комнате ( processes ) дополнительным процессом будет меняться тариф (tarif_id) в подзаявке (subbids) , это кажется очень нехорошо(

2. Если 1. неизбежный вариант - можно ли сделать в postgres, чтобы данная функция происходила именно в нем. К примеру:

if update count () of processes where subbid_id = x   ...  update subbids set tarif_id = (count () of processes where subbid_id) where subbids.id = x


Вот только тут непонятно откуда брать Х.

3. Имеет ли смысл объединять в иерархичность bids и subbids , rooms и tarifs , если они по идее - разные сущности и не являются классификаторами?
  • Вопрос задан
  • 658 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы