Mysql 版本控制每个字段与历史日期字段?

Mysql 版本控制每个字段与历史日期字段?,mysql,sql,database,database-design,Mysql,Sql,Database,Database Design,你推荐哪一种?为什么 我有一些表格,当我更改数据时。。。它应该转到具有生效日期的历史记录表(审核) 另一种解决方案是对每个字段进行版本控制,以便在更改数据时插入新行 哪种方法是获取发票信息的最佳方法?项目名称和价格总是会发生变化这些是适当的类型2和类型4 这两种方法都是有效的,并且可能更适合您的需要,具体取决于您的模型和查询要求 基本上,类型2(版本控制)在您需要像查询当前值一样频繁地查询历史值时更为合适,而类型4(历史表)在您更频繁地查询当前值且有更多查询(我指的是要开发更多查询)时更为合适与

你推荐哪一种?为什么

我有一些表格,当我更改数据时。。。它应该转到具有生效日期的历史记录表(审核)

另一种解决方案是对每个字段进行版本控制,以便在更改数据时插入新行

哪种方法是获取发票信息的最佳方法?项目名称和价格总是会发生变化

这些是适当的
类型2
类型4

这两种方法都是有效的,并且可能更适合您的需要,具体取决于您的模型和查询要求


基本上,
类型2
(版本控制)在您需要像查询当前值一样频繁地查询历史值时更为合适,而
类型4
(历史表)在您更频繁地查询当前值且有更多查询(我指的是要开发更多查询)时更为合适与最新值对比。

我们使用并满意的系统:
对于每个需要历史记录的表,我们创建一个类似的表,并在末尾添加一个时间戳字段,该字段将成为PK的一部分。
每次更新原始表时,我们都会以相同的条件插入历史表:

update table x WHERE somthing something

insert into table x_history 
select * from x WHERE something something

这将使您的数据保持干净,表保持精简。

我个人的偏好是在应用程序中使用用户,并实现一个单独的历史记录表。这意味着您可以在需要时从历史记录表中提取数据,并且不会影响查询主表的速度。

我有一个订单项目来显示过去的订单。。哪一个更好?items name和price的值总是会更改。@用户:通常(通常)历史记录表更好,因为您需要当前价格更重要,并且对其运行更多查询。这样,您就不需要在每个查询中添加
isActive
上的过滤器或类似字段。我添加了版本字段,而不是历史记录表中的日期。表格示例:item.version、item_history.version和order_表格将包含版本号。因此,我将获得100%的准确信息,而不是在日期搜索上重复。这个解决方案的准确度没有问题吗?例如显示历史记录表中的发票数据(旧数据)。。我希望它显示正确的价格,为什么会有问题?您可以使用版本控制,但它涉及更多我认为不必要的逻辑/代码