use taxonomy term for reservations how to prevent overlapping
There are a number of ways to achieve the booking features in Drupal, try comparing here: Comparison of Booking System modules 

One way that comes to mind for your specific case is using Flag module because you can set a Flag to be global, once an entity is marked as "occupied" that status is valid across the site. It's well integrated with Views and Rules, so you could probably do a lot there. 

Another way might be to use Views Entity reference display for the Field widget when the user is creating a reservation. The Views would make sure to exclude all the terms for the Vocabulary that are already being used, so only "free" terms would show up when creating a new booking.