我正在设计一个 postgres 表来记录每周计划中包含的间隔。它会保存多个企业的时间表,一个简单的示例数据集可能如下所示:
business_id interval
----------- -----------------------------------
1 Sunday 10:00:00 – Sunday 14:00:00
1 Sunday 22:00:00 – Monday 02:00:00
1 Friday 11:00:00 – Friday 16:00:00
1 Saturday 15:00:00 – Sunday 01:00:00
请注意,间隔可以跨越日期之间的界限。
一个企业不应该有重叠的时间间隔,我想以一种可以让我强制执行的方式设计表格。
我正在考虑将这些星期几 + 一天中的时间值映射到自一周开始以来的相应秒数,将间隔存储为int4range
并使用排除约束来禁止重叠的整数范围,但这并不合适地址间隔围绕周末结束。
有没有一种好的方法可以对这种周期性数据进行建模并禁止重叠?