我有一个“controller_variables”表,我保存了一些传感器的当前值:
我还有“history_controller_variables”表,其中保存了“controller_variables”表的“快照”:
我发现自己有几次想知道为什么我将“history_controller_variables”表连接到“controller_variables”表。
如果我将历史表创建为原始表的精确克隆,我可以:
我想不出为什么不做这个改变的原因。是否有明显的理由不继续进行这种改变?
答案 0 :(得分:1)
你在这里有一个相当大的权衡。我不知道哪个更好,但我可以告诉你每个的优点是什么。
如果您的控制器的变量不会改变,那么您希望使用一个外键。这使得更容易确保正确性,历史记录表示给定控制器的有效值。另一方面,如果这些更改并且您从控制器变量表中删除了记录,则会遇到一个没有简单解决方案的问题。因此,在这种情况下,最好使用两个。
最终,我们永远不会知道未来,因此我倾向于接受奇怪数据的风险,以确保运营和历史数据受到不同的关注,并且改变数据并不会使历史混乱
答案 1 :(得分:0)
这是一个很好的改变。将历史表作为原始表的克隆,但将时间戳列添加到历史记录表中。每当变量值更改时,使用新值在历史记录表中创建新记录,并使时间戳指示变量何时更改为该值。如果适用于您的应用程序,您还可以在历史记录表中包含一列,指示将变量修改为新值的人(或内容)。