如何进行类似airbnb的预约系统数据库设计?


不了解airbnb的请看 https://zh.airbnb.com/
airbnb是一个将人们闲置的房子放上网上供人预约的网站。

现在我想要设计一个类似的将人们闲置资源供人预约的系统,要同时兼顾到资源供给方和需求方的用户:
1. 供给方可设置默认可供预约的时间段,最小单位为小时,如每周一15点-18点。该默认社设置是周期性的。
2. 供给方因特殊原因可以更改上述默认设置,如本周一有事,就提前临时禁止了本周一的默认设置。
3. 需求方根据供给方设置的预约时间表在规定的时间内预约,最小单位当然也是小时,一个时间单位只能被一人预约。
4. 需求方最多可以尝试预约从当天算起4周以内的闲置资源

现在遇到的问题是如何设计关于供给方可预约时间的表?
假设设置成


 用户id         int
可预约日期     date
可预约时间     int  (0-24)

假如平均每个供给方设置每周可以预约10个小时(不连续,点状分布),那么1个供给方4周就有10*4 = 40,每一个新供给方出现时,单时间表的默认设置平均要插入40条记录,会不会比较慢?供给方修改默认设置的话,则更麻烦了。
还有一个问题就是每过1天,要为有需要的供给方各自添加1条新纪录以保证时间表始终是4周的可预约数据。

感觉这种设计不好,请问有没有什么好的设计思路?

数据库 数据库设计 数据库建模

桃屋しょう猫 10 years, 1 month ago

Your Answer