Да, бих се съгласил с това, с изключение на това, че няма да премахна записа, когато наемането изтече - лесно ще разберете, че срокът на наема е изтекъл, защото е в миналото, така че автоматично запазвате и историята на наемането.
В крайна сметка има безкраен брой налични дати, така че ще трябва изкуствено да ограничите поддържания диапазон от дати, ако отидете обратното (и съхраните безплатни дати).
В бъдеще. И в известен смисъл и в миналото.
Освен това предполагам, че искате допълнителна информация в случай, че дадена услуга е наета (например име на наемателя) и няма да има къде да се съхранява, ако наемането беше представено от несъществуващ ред!
Тъй като детайлността на наемането е цял ден, мисля, че разглеждате структура на база данни, подобна на тази:
Обърнете внимание как RENTING_DAY PK естествено предотвратява припокриванията.
Като алтернатива може да се откажете от RENTING_DAY и да имате START_DATE и END_DATE директно в НАЕМАНЕ, но това ще изисква изрично припокриване на диапазона чекове , което може да не се мащабира идеално .