我有一个应用程序,它允许管理员上传文章并与许多用户共享以进行编辑。然后将文章分解成句子,这些句子将作为单独的行存储在MySQL数据库中。每个用户可以一次编辑一个文章句子。如何构建数据库以允许管理员调整文章句子(合并,移动,删除,编辑,添加)并仍然保持用户与文章句子关系的完整性? 这里是基本结构:合作文章编辑器的良好表格结构
article_sentences
---------------
-id (auto_increment)
-article_id (FK)
-paragraph_id
-content
user_article_sentences
---------------
-user_id (FK)
-article_id (FK)
-article_sentence_id (FK)
-user_content
一个问题,我看到的是article_sentence ID的变化。如果管理员移动文章,则ID需要随着paragraph_id的变化而变化,如果我们希望文章内容的顺序正确的话。为了解决这个问题,也许我们可以添加一个article_sentence_order列?这种方式ID将永远不会改变,但内容的顺序是由article_sentence_order列决定的。
怎么样合并和删除?这些也会导致一些问题,因为不同ID的分割将开始发生。
关于新模式设计的任何想法都有助于解决这些问题?像Google Docs这样的应用程序如何处理这类问题?
编辑:
为了解决走动不同的句子的问题。我们可以使用一个名为order_id的新列,它可以是varchar或int。一些折衷:如果是int,那么我将不得不将后续句子的order_id增加为本身的+1。如果使用varchar,如果我想在3和4之间插入,那么order_id可以简单地是'3a'。问题在于,在我的应用程序代码中,使用数字索引来遍历下一个和前一个句子将是一个问题。
是否有其他的选择?