使用数据库编写自己的版本控制系统?

时间:2016-04-30 14:38:42

标签: c# database-design database-schema

我想知道哪种方法可以解决这个问题:

  1. 用户撰写文章并按保存。 (保存到数据库中)
  2. 用户编辑上一篇文章并按下保存。 (比如git commit)
  3. 重复
  4. 在每个阶段,用户编辑文章,我想向用户显示每次提交期间所做的更改(添加和减少)。

    我想到了两种方法:

    1. 保留文章内容的所有迭代保存在数据库中。 Aka为每个保存创建一个新行,包含整个文章内容。然后,通过检查差异来比较后端中的文件。

      +-----------+---------+----------------------------+
      | ArticleID | Version |            Body            |
      +-----------+---------+----------------------------+
      |         1 |       3 | This is a random article.  |
      |         1 |       2 | This is a random article   |
      |         1 |       1 | a random article           |
      +-----------+---------+----------------------------+
      
    2. 或者通过存储它来记录对文章的所有更改,如下所示,然后当用户想要查看版本1和2之间的差异时,获取版本1并附加所做的更改

      +-----------+---------+-------------------+-------------------+---+
      | ArticleID | Version | CharacterPosition |         +         | - |
      +-----------+---------+-------------------+-------------------+---+
      |         1 |       3 |                24 | .                 |   |
      |         1 |       2 |                 0 | This is           |   |
      |         1 |       1 |                 0 | a random article  |   |
      +-----------+---------+-------------------+-------------------+---+
      

1 个答案:

答案 0 :(得分:1)

我建议选项1.如果您使用选项2,当某人添加或删除不同位置的字符时,您会遇到麻烦。此外,如果你想看到三个版本的差异,它会给编码带来一些困难。