基于开始日期和频率的定期检查的数据库结构
database structure for recurring inspections based of start date and frequency
我有一个问题,我需要设计一个记录系统来存储建筑检查。
需要按指定的频率进行检查,假设从开始日期开始每月一次。
我想检查需要在 inspections
table 中记录 id
、startDate
和 frequency
,然后每次检查执行后,条目将与 id
、inspectionDate
和其他数据一起放入 inspection_record
table 中。
如果只需要在上次检查后的“X 时间范围”就可以了,但是检查可能不会在需要的那天进行,可能会在多次检查之前或之后几天进行可以创建“支架蠕变”。
根据 frequency
从 startDate
生成日期列表很容易,但我如何确保 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
等等
我有一个问题,我需要设计一个记录系统来存储建筑检查。
需要按指定的频率进行检查,假设从开始日期开始每月一次。
我想检查需要在 inspections
table 中记录 id
、startDate
和 frequency
,然后每次检查执行后,条目将与 id
、inspectionDate
和其他数据一起放入 inspection_record
table 中。
如果只需要在上次检查后的“X 时间范围”就可以了,但是检查可能不会在需要的那天进行,可能会在多次检查之前或之后几天进行可以创建“支架蠕变”。
根据 frequency
从 startDate
生成日期列表很容易,但我如何确保 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
等等