Я пишу простую программу бронирования для проката автомобилей (школьное задание). Я и мой друг пытаемся сделать систему немного более продвинутой, чем предписывает задание, но у нас есть некоторые проблемы, с которыми мы надеялись, что вы поможете нам.
Идея состоит в том, что вы можете зарезервировать определенный тип автомобиля, и когда вы получите автомобиль, он будет одного из этого типа (вы не бронируете конкретный автомобиль, как предписывает наше назначение, а только тип). Только один клиент может получить автомобиль на определенную дату. В момент бронирования мы должны убедиться, что мы не сдаем в аренду больше автомобилей каждого типа, чем имеем. Резервирования в основном хранятся с указанием даты начала, даты окончания и типа автомобиля.
Если мы пока игнорируем тип автомобиля (скажем, у нас только один тип), то резервирование может графически выглядеть примерно так:
1/12 2/12 3/12 4/12 5/12 6/12 7/12
|-------------------|
|-----------------|
|-----|
|-------|
|-----------|
|-------------|
Если в прокате только три автомобиля, можно будет взять напрокат автомобиль с 3/12 до 5/12, поскольку на все дни можно бронировать только 2 автомобиля. Но откуда мы это знаем? Нужно ли проверять каждую дату и подсчитывать () количество бронирований, охватывающих эту дату?
А что если бы кто-то зарезервировал машину 4/12, то 3/12 и 5/12 все равно имели бы только 2 бронирования, а 4/12 - 3.
Можно ли как-то сделать с запросом, как, или мы должны проходить каждую дату в программе, чтобы проверить, что количество бронирований не превышает количество автомобилей?
(Это достаточно просто, только с полными датами, но рассмотрим сценарий, в котором вы могли бы арендовать автомобили на почасовой основе (не только на ежедневной основе, как здесь). Тогда можно было бы хотя бы один пройти через каждый наш, если у нас есть много бронирований и машин, а продолжительность длинна ...)
Надеюсь, у вас есть хорошие идеи, которые помогут нам в этом. Спасибо, что нашли время, чтобы прочитать вопрос:)