gpt4 book ai didi

sql - 在数据库中存储现实世界 "events"的最佳方式?

转载 作者:搜寻专家 更新时间:2023-10-30 22:03:55 25 4
gpt4 key购买 nike

我正在构建一个系统,该系统将收集有关外部控制的工业过程的数据。这些数据将用于构建系统各个组件的使用情况统计信息。

简化示例:有一个打开和关闭的加热器,当它发生时我会收到通知。我需要记录它,并根据这些数据能够回答诸如“上个月加热器打开了多长时间?”之类的问题

我想到的是创建一个表,每次发生状态更改时我都会在其中插入一行,包括时间戳。

但是,在我看来,这将需要相当多的后处理,例如回答上面的示例问题。我认为无法仅使用 SQL 提取此类答案。

问题:有没有比我在这里描述的更适合、更有效的“存储模式”?

谢谢。

最佳答案

您可以存储加热器打开的时间,而不是离散的开/关事件。使用 time_ontime_off 列分别跟踪加热器何时打开和关闭,然后从 time_off 中减去 time_on > 获取持续时间。

当加热器打开时:

insert into heater_usage (time_on, time_off) values (now(), null);

当加热器关闭时:

update heater_usage set time_off = now() where time_off is null;

使用唯一约束来确保没有两行对于 time_off 可以有 null,作为基本检查以确保您不会留下没有 time_off 如果您的脚本未正确调用。您可以在打开加热器时检查它们,然后将其移除。

总结总时间:

select sum(time_off - time_on) from heater_usage;

关于sql - 在数据库中存储现实世界 "events"的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5016896/

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