gpt4 book ai didi

database - 每周计划——如何将其存储在数据库中?

转载 作者:太空狗 更新时间:2023-10-30 01:43:55 27 4
gpt4 key购买 nike

目前,我正在做一个项目来管理服务器数据库等的维护窗口。基本上,我只需要精确到小时,但允许将它们设置为允许或不允许,一周中的每一天。

我对如何做到这一点有一些想法,但由于我是自己工作,所以我不想在没有反馈的情况下做出任何 promise 。

为了形象化,它就像流动的“图表”

    | Sun | Mon | Tue | Wed | Thu | Fri | Sat |
-------------------------------------------
5AM |allow|allow|allow|deny |deny |allow|allow|
-------------------------------------------
6AM |allow|deny |deny |deny |deny |deny |allow|
-------------------------------------------
7AM |allow|deny |deny |deny |deny |deny |allow|
-------------------------------------------
8AM |allow|deny |deny |deny |deny |deny |allow|
-------------------------------------------
9AM |allow|deny |deny |deny |deny |deny |allow|
-------------------------------------------
... etc...

是否有执行此操作的标准方法或可能给我一些想法的资源...

  1. 制作一个可以轻松保存和恢复的格式
  2. 让它可以在数据库中搜索(例如,不必反序列化它来搜索时间)

[更新]

值得一提的是,即使不太可能,一天也可以设置为“允许、拒绝、允许、拒绝……等等……”。跨度不能保证是一整天的唯一跨度。

这也不是唯一的时间表,将有数百台设备,每台设备都有自己的时间表,所以它会变得毛茸茸......大声笑??

Rob 问是否需要跟踪每周 - 不需要。这是适用于全年的通用时间表(定期维护)

最佳答案

我会考虑 (1) 使用包含开始时间和结束时间的格式,以及表示星期几的整数字段。我知道您说过 block 将始终为一小时,但这可以通过您的代码强制执行。此外,如果有一天您的需求发生变化,与您的 DB 语句全部编写为假定 1 小时 block 相比,您在步骤 (2) 中的担心要少得多。

CREATE TABLE maintWindow (
maintWindowId int primary key auto_increment not null,
startTime Time,
endTime Time,
dayOfWeek int,
...

对于 (2),如果每条记录都有与之关联的开始和结束时间,那么很容易检查任何给定时间的窗口:

SELECT maintWindowId
FROM maintWindow
WHERE $time >= TIME(startTime) AND $time <= TIME(endTime) AND DAYOFWEEK($time) = dayOfWeek

(其中 $time 代表您要检查的日期和时间)。

一周中每一天的允许或禁止将由单独的记录处理。恕我直言,这比一周中每一天的硬编码更灵活,因为您随后将使用某种 case 语句或 if-else 开关来检查您感兴趣的那一天的正确数据库列。

注意:确保您知道您的数据库在一周中的整数天使用哪个标准,并尝试使您的代码独立于它(总是询问数据库)。对于一周的开始(星期日或星期一)和起始索引(0 或 1),我们有很多不同的标准。

关于database - 每周计划——如何将其存储在数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/389343/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com