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

C# 使用数据库编写自己的版本控制系统?,c#,database-design,database-schema,C#,Database Design,Database Schema,我想知道解决这个问题的最佳方法是: 用户编写文章并按save。(保存到数据库中) 用户编辑上一篇文章并按save。(比如git提交) 重复 在用户编辑文章的每个阶段,我想向用户展示在每次提交期间所做的更改(添加和删除) 我想到了两种方法: 将文章内容的所有迭代保存在数据库中。Aka为每个保存创建一个新行,包含文章的全部内容。然后,通过检查差异来比较后端中的文件 +-----------+---------+----------------------------+ | ArticleID | V

我想知道解决这个问题的最佳方法是:

  • 用户编写文章并按save。(保存到数据库中)
  • 用户编辑上一篇文章并按save。(比如git提交)
  • 重复
  • 在用户编辑文章的每个阶段,我想向用户展示在每次提交期间所做的更改(添加和删除)

    我想到了两种方法:

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

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

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

  • 我建议选择1。如果您使用选项二,当某些人从不同位置添加或删除字符时,您将遇到麻烦。此外,如果您想了解三个版本的区别,那么它会给您带来一些编码困难。

    好的,cvs、svn、git、tfs。。。使用差分法。这告诉你什么?