【问题标题】:What is the best way to implement versioning to a MYSQL database?对 MYSQL 数据库实施版本控制的最佳方法是什么?
【发布时间】:2010-10-11 17:38:27
【问题描述】:

我必须创建一个版本控制系统来将我的文章的多个版本存储在数据库中,以允许用户在需要时回滚。我的第一个想法是当用户真的想编辑一篇文章时,我让 sql 不再更新,但你将他们的信息插入回数据库。目前的问题是我有一个文章表,我使用 ID 作为我的主键来识别我的文章(所以阅读更多链接等等)。如果我插入到该表中,我将有基本的新文章,所以我想我需要一个新表来存放旧文章,但是我在第一个表 dbArticles 中的原件有问题,我还需要为什么要告诉他们是哪篇文章已经选择,例如,如果他们有 3 次编辑,那么 3 篇文章让所有在 5 月 1 日、2 日和 3 日的不同日子完成,我需要如何证明他们选择了 5 月 2 日的版本,而不是 5 月 3 日的最新版本。 任何帮助都会非常感谢,

Cool Hand Luke Uk

Ps 我也在使用 PHP,我正在为文章添加时间戳:D。

【问题讨论】:

    标签: php mysql version-control


    【解决方案1】:

    有 2 张桌子:

    • 文章:您在此处存储文章 ID、文章名称和任何其他元数据
    • article_version:在这里您存储文章的每个版本(包括原始版本)并与 article_version.article_id=article.article_id 链接。请务必在此表中添加时间戳和版本等。

    【讨论】:

    • 不错的答案,一周前我刚刚为需要大量版本控制的应用程序实现了这样的架构。最终,您可能想弄清楚何时可以删除旧版本以释放空间的一些规则。
    • 这种方法可能存在一些性能问题。对此的一个答案是,有一些受控的冗余(例如,将最新版本存储在 article.latest_version_id 中)
    • @troelskn:我同意,冗余并不总是像人们想象的那么糟糕。
    • 但是您将如何处理存储在单独表中的相关数据(如图像等)的版本控制?
    【解决方案2】:

    如果您要对文本文章进行版本控制,则应考虑使用 wiki,例如 MediaWiki。他们可能已经为您解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2013-05-01
      相关资源
      最近更新 更多