How to design tables for airbnb style booking system all. My English is not very good, but I will try to describe my question as clear as possible.

I want to design a airbnb(https://www.airbnb.com) style booking system, this kind of booking system allows somebody books idle resources of the others.

Here is my system needs:


Resource provider can set resources' available time of booking. The minimum time slot is 1 hour between 9am-12pm.
The default setting can be set as repeat periodically. For example: 5pm-8pm every Saturday available.
Also resource provider can change the time table whenever necessary. For example: stop provide the resource this Saturday because it's not available temporary.
Other users can book single or multiple time slot of any resource provided by many resource provider as long as it's available
Booking is open for the next 28 days. 


Now I have difficulty in designing tables for the resource provider to set the available time.

Can your guys give me some advice?
Use timestamp ranges for booking availability. There is good documentation in official PostgreSQL docs. 

You may find this lecture helpful:
Range Types and Temporal: Past, Present, and Future

And my blog post about generating timestamp ranges could also be helpful:
Generating ranges in PostgreSQL