一些同事和我进行了一场关于存储历史数据的最佳方式的辩论。目前,对于某些系统,我使用单独的表来存储历史数据,并保留一个原始表用于当前有效记录。例如,假设我有表FOO。在我的系统下,所有活动记录都会进入FOO,而所有历史记录都会进入FOO_Hist。FOO中许多不同的字段可以被用户更新,因此我希望保持逐步准确的记录。FOO_Hist保存与FOO相同的字段,除了自增的HIST_ID。每次更新FOO时,我执行一个插入语句到FOO_Hist,类似于:
我的同事认为这是糟糕的设计,因为我不应该为历史原因将一个表完全复制一遍,而应该在当前表中插入另一条记录,并标记其用于历史目的。
是否有处理历史数据存储的标准方法?对我来说,我认为不应该在同一个表中混杂我的历史记录和活动记录,因为它可能会超过一百万条记录(我考虑长期)。
你或你的公司如何处理这个问题?
我正在使用MS SQL Server 2008,但我想保持答案通用和任意DBMS。
insert into FOO_HIST select * from FOO where id = @id
。我的同事认为这是糟糕的设计,因为我不应该为历史原因将一个表完全复制一遍,而应该在当前表中插入另一条记录,并标记其用于历史目的。
是否有处理历史数据存储的标准方法?对我来说,我认为不应该在同一个表中混杂我的历史记录和活动记录,因为它可能会超过一百万条记录(我考虑长期)。
你或你的公司如何处理这个问题?
我正在使用MS SQL Server 2008,但我想保持答案通用和任意DBMS。