Ja, jag skulle gå med på det, förutom att jag inte skulle ta bort posten när hyran löper ut - du vet lätt att en hyra har gått ut eftersom den är i det förflutna, så du behåller automatiskt historiken för att hyra också.
Det finns trots allt ett oändligt antal tillgängliga datum, så du måste på konstgjord väg begränsa det stödda datumintervallet om du gick tvärtom (och lagrade gratisdatum).
I framtiden. Och, i någon mening, i det förflutna också.
Jag antar också att du vill ha ytterligare information om en tjänst hyrs (t.ex. namnet på hyresgästen) och det skulle inte finnas någonstans att lagra det om uthyrningen representerades av en obefintlig rad!
Eftersom granulariteten för att hyra är en hel dag, tror jag att du tittar på en databasstruktur som liknar denna:
Observera hur RENTING_DAY PK naturligt förhindrar överlappningar.
Alternativt kan du hoppa över RENTING_DAY och ha START_DATE och END_DATE direkt i RENTING, men detta skulle kräva explicit intervallöverlappning kontroller , som kanske inte skalas idealiskt .