如何为数据库实体设计类似git的版本控制功能?

时间:2019-01-29 13:39:07

标签: git

当前,我正在开发一个博客系统,我希望一篇文章可以由多位注册作者共同撰写,因此,我希望它可以为这些文章提供简化的git-like版本控制,从而可以进行分支和显示两种版本的文章之间的差异。

但是问题是,文章存储在数据库表中,而git的版本控制基于文件系统,因此我不能直接使用git来实现此功能。

谁能给我一些有关如何设计数据库表,相关API和此功能的高级逻辑的想法?谢谢。

2 个答案:

答案 0 :(得分:0)

基本上,我会:

  • 创建表“版本”(具有n-n个“父”关系)

  • 向我的表中添加一个字段“ id_revision”,默认为NULL(或者可能是一个特殊的修订版ID);并根据此字段的值对该表进行分区,以使文章的先前修订版本不会存储在同一表中

  • 或使用表的所有字段以及表的“修订”创建表“ article_revision”。

您可以创建钩子来自动保存旧的修订版(也许在“待定”的修订版中,然后您可以提交,即将“待定”的修订版保留为一个编号)

但是有很多问题待定。

您还可以使用表(表/字段/值)而不是整个行来存储已更改的字段

我认为您必须尝试不同的架构,并对其进行测试。

答案 1 :(得分:0)

这不是与git相关的问题。您只需要在数据库级别上实现版本控制,这是一个独立的项目,通常可以在编码人员和数据库开发人员之间进行处理。在某种程度上,您只需要执行git开发人员在需要使用版本控制作为源代码时所做的工作即可。这不是一个简单的项目。这里没有快速简便的答案。