gpt4 book ai didi

php - 多条关联数据的修订控制

转载 作者:可可西里 更新时间:2023-11-01 08:22:11 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何最好地保留关于多行数据修订的修订/历史信息,以防出于某种原因我们需要恢复到该数据。

这是一般的布局:

item
---------------
id
title
etc...

region
---------------
id
title
etc...

release_type
-----------------
id
title
etc...

items_released_dates_data
---------------------
item_id
region_id
release_type_id (these three form the primary key)
date

因此您可以为每个项目设置一个发布日期 + region_id + release_type 并且我们基本上只跟踪日期(对于这个问题,“日期”可以是数字、字符串或其他任何内容。我确定再次遇到这个问题)

批量提交更改,当添加新数据时,items_released_dates_data 中的所有内容首先被删除,其中 item_id=your_id,然后插入语句添加新值(也许这不是执行此操作的最佳方法?)

我的想法是创建一个像这样的表:

items_release_dates_data_history
-------------------------------------
item_id
timestamp
description
raw_data

对更新的内容做一个简短的描述,包括一些格式的数据,比如 json 或 xml 或可以在客户端快速解码的东西,让用户回顾变化并选择修改给定的版本。然后 items_released_dates_data 的每个条目也需要 items_released_dates_data_history 的条目(听起来不像是一个问题吗?:|)

我已经阅读了一些关于 mysql 触发器的内容,这些内容在这里会有帮助,但坦率地说,我对它们一无所知,所以我正在使用我所了解的内容。

我的问题是,我是否按照正确的路径对这些东西进行版本化,是否有人可以就如何改进此方法提供任何建议/最佳实践?

最佳答案

我支持 Alex Miller 的评论。到目前为止,您写的一切都有意义。

尽管您有所保留,但我还是强烈建议您研究一下触发器。它们相当容易掌握,并且在这种情况下成为非常强大的工具。使用触发器,您可以在每次更新(或删除)记录时将行的副本存储到单独的表中。如果您想全神贯注,您可以在触发器内将传入数据与现有数据进行比较,并仅写入更改的内容。

对于这些类型的表,还可以考虑使用 Archive 存储引擎而不是 MyISAM 或 InnoDB - 它们就是为这类工作而设计的。

此外,您可能要查找的搜索短语是“审计跟踪”。

关于php - 多条关联数据的修订控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4565403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com