0

我正在学习并尝试制作一个网站,但我对数据模型有点困惑。我的网站与 github 类似,您可以关注他人并复制/分享内容(类似于分叉/拉取请求)。如何制作数据模型来存储它?

基本上,我写了一篇文章,这篇文章与我相关联。然后你来“分叉”我的文章,我要复制它吗?还是只是一个链接?然后在编辑您的版本后,您向我发送了将我们的内容合并在一起的请求(我不想覆盖数据,但不确定如何以捕获差异的方式进行操作)。对我来说最糟糕的是,我希望对编辑进行版本控制,这使得我在对分叉数据进行版本控制时变得复杂。

我不知道从哪里开始..我不需要答案,但是任何关于如何建模这种 fork/merge 交互的建议都会很棒。我还没有决定是否使用 redis 或 mysql,但如果我可以将逻辑应用于其中一个,一般的答案是可以的。

4

1 回答 1

1

创建 2 个模型:Article 和 ArticleRevision。用户有许多与他相关的文章(文章的所有者),并且文章有许多修订:

  • 文章(id、user_id、current_revision_id、created_at)有很多 ArticleRevisions
  • ArticleRevision(id, article_id, title, body, created_at, parent_revision_id) 属于Article,属于ArticleRevision,有很多ArticleRevisions

文章的当前版本由current_revision_id字段决定。修订有一个父修订 - 这是它的来源修订。

当有人分叉一篇文章时:

  • 克隆文章
  • 克隆文章的最新修订版,并可选择重置新创建修订版的父级(因此历史记录将为空)。
  • 设置新创建文章的所有者和当前版本
于 2012-06-19T03:57:14.880 回答