您将如何设计数据库表以跟踪状态属性?

时间:2014-07-24 07:37:03

标签: database database-design

我想询问你对一个问题的看法,即使我已经有了我的问题,以便能看出我的想法是否连贯。我不会首先暴露我的意见,以免影响任何人(在某种程度上)。

基本上我有一个用于存储某种对象数据的表。这些对象的状态可以更改,我需要跟踪这些状态更改。现在我想知道如何设计数据库的其余部分。

此外,我可以告诉您,状态更改是在特定时间进行的,也必须记住。最后,您必须能够随时确定当前状态。这个问题实际上与你如何存储和阅读当前状态有关。

如果您需要更多信息,请不要犹豫,问我。我只是不想给予太多以免影响答案。

PS:我不需要与触发器相关的答案

1 个答案:

答案 0 :(得分:3)

基本上,您需要一个与对象表分开的状态历史记录表。

objects [id, name, ...]
status_history [object_id, status, valid_from, valid_to]

如果需要,您可以选择在对象表中包含当前状态和时间戳 - 当您需要知道维护成本的当前状态(通常是大多数情况)时,它肯定会加快查询速度。 p>

如果您想要历史记录更多属性而不仅仅是状态或整个记录,您可以使用单个表:

objects [id, seq_number, name, ...., status, valid_from, valid_to]