【问题标题】:Database entries modification history数据库条目修改历史
【发布时间】:2011-06-28 17:56:59
【问题描述】:

我目前正在开发一个大型管理系统(在 PHP 中使用 Zend 框架,但这与这个问题的解决方案并不真正相关),我必须在其中管理多个条目。每个条目都有许多字段,并以一对多的关系(通过单个外键)跨越两个表。第一个表大约有 50 个字段,第二个表大约有 30 个字段。

我现在正处于对用户所做的不同修改(以及一些自动化任务)进行历史跟踪的阶段。每个条目最终可能会部分或全部回滚到以前的值。

我正在考虑使用与 CMS Typo3 中的系统类似的系统。一张表来管理具有以下字段的整个历史记录

  • history_id
  • entry_id
  • entry_table
  • last_modifcation_timestamp
  • last_modification_user
  • 数据

数据将以 json 或 xml 格式“序列化”。

通过这种方法我担心的是,随着时间的推移,历史表的内容会成倍增长。为了克服这个问题,我想我可以建立一个新的数据库来每年管理这段历史,然后按年向用户显示历史数据。

我正在寻找有关改进此解决方案和简化实施的方法的建议。欢迎任何可以帮助我的建议或文档

【问题讨论】:

  • 你只是序列化旧数据,并假设数据的最新版本在其他表中吗?
  • @Chris :是的,我是(过去,我不再从事这个项目了)。最新数据是原始表中的数据。随着时间的推移,您可能会与历史记录存在架构差异,如果很多字段发生了变化,只会给出部分历史记录
  • 我正在考虑如何在我正在构建的一些 Web 应用程序中实现历史跟踪/更改(具有讽刺意味的是,也使用 PHP/Zend 框架)。我觉得这个想法很有趣。我想知道,您是否必须处理复合条目 ID 以及您如何解决它?我有一张带有复合 ID 的表,但我可以轻松地给它一个代理 ID 或人工 ID。
  • 不,我不必使用复合 ID,但我会采用相同的方式,使用代理 ID

标签: php serialization storage history


【解决方案1】:

我会添加一个阈值并将所有超过特定时间段的条目删除或转储到外部文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    相关资源
    最近更新 更多