我想找到一种方法来实现一个预订系统,让用户可以在预订上设置开始日期,并在任何时候生成结束日期。
让我们举一个租房的例子。假设我想预订一个特定开始日期的房子,但我不确定我什么时候离开,没有结束日期的用户的最长停留时间是 3 天,我该如何建立我的数据库所以没有任何预订重叠?
我目前的结构是:
预订
booking_id | integer | not null default nextval('booking_booking_id_seq'::regclass)
houseId | integer |
user_id | integer | not null
预定日期
booking_date_id | integer | not null default nextval('booking_date_booking_date_id_seq'::regclass)
book_from | timestamp without time zone | not null
book_to | timestamp without time zone | not null
booking_id | integer |
我想知道我是否在预订实体is_stayAndLeaveWhenever中存储了一个额外的字段
然后在 booking_date 中,我将book_to与 book_from + 3 天一起存储(不选择离开日期的最长停留时间)
那是一个可靠的解决方案吗?
数据库中的默认结束日期 = 3 天。也许标记“暂定”。问题是 - 如果您不知道他们何时搬出并且不能重叠,您必须保留最长停留时间。
因此,您的解决方案已经尽善尽美。