Я работаю над системой резервирования конференц-зала в PHP 5.1, где мне нужно обеспечить механизм, который не может одновременно зарезервировать один номер в один и тот же день в тот же день. Система хранит time_in, time_out, from_date, to_date в базе данных. Какой алгоритм следует использовать для предотвращения столкновения?
Первоначально я думал, что держать time_in и time_out поля UNIQUE
в базе данных, но в сценарии, где пользователь A книги от 9 to 5 on 12-05-2014
т.е.
**User A** time_in => 09:00 time_out => 05:00 reservation_date => 12/05/2014
и пользователь B приходит и книги за 12 до 3 в тот же день, т.е.
**User B** time_in => 12:00 time_out => 03:00 reservation_date => 12/05/2014
Система будет принимать резервирование, так как time_in time_out отличается. Таким образом, этот алгоритм терпит неудачу.
Кроме того, у людей также есть возможность зарезервировать в течение нескольких дней, как я хочу зарезервировать номер 1 на 10 дней, каждый день с 9 до 5. Так может ли кто-нибудь помочь мне с алгоритмом здесь?