你推荐哪个以及为什么?
我有几张表,当我对数据进行更改时......应该转到具有生效日期的历史表(审计)。
另一个解决方案是对每个字段进行版本控制,以便在更改数据时插入新行吗?
发票信息的最佳方法是哪种?商品名称和价格始终在变化
答案 0 :(得分:4)
这些是slowly changing dimensions,type 2
和type 4
。
这两种方法都有效,可能更适合您的需求,具体取决于您的型号和查询要求。
基本上,type 2
(版本控制)更适合于需要像当前值一样查询历史值,而type 4
(历史表)更适合查询当前值更常见的是,与最近的值相比,有更多的查询(我的意思是开发更多的查询)。
答案 1 :(得分:2)
我们使用并满意的系统:
每个需要历史记录的表,我们创建一个类似的表并在末尾添加一个时间戳字段,这将成为PK的一部分。
在原始表的每次更新中,我们使用相同的条件插入历史表:
update table x WHERE somthing something
insert into table x_history
select * from x WHERE something something
这样可以保持数据清洁,桌面也很苗条。
答案 2 :(得分:0)
我个人的偏好是在您的应用程序中使用Observer Pattern并实现单独的历史记录表。这意味着您可以在需要时从历史记录表中提取数据,并且不会影响查询主表的速度。