通知用户历史记录方案设计

时间:2016-05-03 03:16:15

标签: sql sql-server

我想在服务停止时通知用户,这是我的设计(仅用于演示)。

service
{
    id,
    name,
    isActive
}

history
{
    id,
    serviceId,
    upTime,
    downTime
}

当服务停止时,我将使用downTime向历史记录添加记录,upTime为NULL。在服务之前,我将找到相关serviceId的最后历史记录 并更新upTime。我不知道这是一个正确的设计。也许分开两个记录?

1 个答案:

答案 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时间启动。第二行意味着服务再次停止,但尚未修复。