Oui, j'irais avec ça, sauf que je ne supprimerais pas l'enregistrement lorsque la location expire - vous saurez facilement qu'une location a expiré parce que c'est dans le passé, donc vous conservez également automatiquement l'historique de la location.
Après tout, il y a un nombre infini de dates disponibles, vous devriez donc limiter artificiellement la plage de dates prises en charge si vous alliez dans l'autre sens (et stockiez des dates gratuites).
Dans le futur. Et, dans un certain sens, dans le passé aussi.
De plus, je suppose que vous voulez des informations supplémentaires au cas où un service serait loué (par exemple, le nom du locataire) et il n'y aurait nulle part où stocker cela si la location était représentée par une ligne inexistante !
Étant donné que la granularité de la location est d'une journée entière, je pense que vous envisagez une structure de base de données similaire à celle-ci :
Notez comment RENTING_DAY PK empêche naturellement les chevauchements.
Alternativement, vous pouvez abandonner le RENTING_DAY et avoir START_DATE et END_DATE directement dans RENTING, mais cela nécessiterait un chevauchement de plage explicite chèques , qui peut ne pas évoluer idéalement .