我想在服务停止时通知用户,这是我的设计(仅用于演示)。
service
{
id,
name,
isActive
}
history
{
id,
serviceId,
upTime,
downTime
}
当服务停止时,我将使用downTime向历史记录添加记录,upTime为NULL。在服务之前,我将找到相关serviceId的最后历史记录 并更新upTime。我不知道这是一个正确的设计。也许分开两个记录?
答案 0 :(得分:1)
我更愿意把它分开,成为两个记录。我想添加一个评论字段,它将解释服务失效的原因或者如何修复以恢复服务。
架构就像
Table History
HistoryID int,
ServiceID int,
Status varchar(4),
StatusTime datetime2(3),
Comment varchar(50)
然后,数据就像
HistoryID ServiceID Status StatusTime Comment
1 1 Down 2016-05-03 00:00:00 Problem happens because xxx
2 1 Up 2016-05-04 00:00:00 Restart the service
*编辑 如果你想表现出类似的东西:
ServiceID:1 donwtime:2016/05/03正常运行时间:2016/05/04。
您可以使用您的架构使select语句更容易。但我仍然建议使用Comment让你知道导致服务失败的原因,以及如何解决它。这样可以更好地维护您的服务。您可以为每个Down状态插入一个新行,并为Up状态更新最后一行。 例如:
HistoryID ServiceID DownTime UpTime DownComment UpComment
1 1 xxx xxx xxx xxx
2 1 xxx NULL xxx NULL
第一行表示该服务已经修复并在xxx时间启动。第二行意味着服务再次停止,但尚未修复。