基于开始日期和频率的定期检查的数据库结构

database structure for recurring inspections based of start date and frequency

我有一个问题,我需要设计一个记录系统来存储建筑检查。

需要按指定的频率进行检查,假设从开始日期开始每月一次。

我想检查需要在 inspections table 中记录 idstartDatefrequency,然后每次检查执行后,条目将与 idinspectionDate 和其他数据一起放入 inspection_record table 中。

如果只需要在上次检查后的“X 时间范围”就可以了,但是检查可能不会在需要的那天进行,可能会在多次检查之前或之后几天进行可以创建“支架蠕变”。

根据 frequencystartDate 生成日期列表很容易,但我如何确保 inspection_record 已经完成。因为我需要获得所有逾期或一个月内到期的检查的清单。

我能想到的唯一方法是采用 startDate,今天的日期和频率,找到频率适合的次数,并将其向下舍入到最接近的整数,然后向上舍入以获得最接近的检查之前和之后,然后用它来确定“检查括号”并检查是否在这些括号中进行了实际检查,这在大规模上看起来非常混乱和缓慢。

有什么想法吗?甚至我可以用来搜索这个的术语?

实现某种类似于 cron 的系统会更容易吗?但是,我如何确定检查实际上是在正确的时间进行的呢?刚才说是本月1日验货,14号才验完,需要看成是本月和下个月的验货还是1号。

还有一个专栏,next_scheduled_date。执行检查时,将该列更新为 CURDATE() + INTERVAL 1 MONTH.

通过该专栏,您可以发现

WHERE next_scheduled_date < CURDATE()  -- task that are overdue
WHERE next_scheduled_date = CURDATE()  -- due today
WHERE next_scheduled_date < CURDATE() + INTERVAL 7 DAY -- this week's tasks

等等