0

目前我正在开发一个应该支持文本修订的 cms。因为有时我倾向于将我认为我在这里要求改进和建议的事情过于复杂化。

我有以下 4 个表:

文章

ID INT PK
createdAt DATETIME
updatedAt DATETIME

article_revision

ID INT
articleID INT FK
headline VARCHAR(255)
teaser TINYTEXT
text LONGTEXT
createdAt DATETIME

标签

ID INT
name VARCHAR(20)
createdAt DATETIME

article_revision_has_tag

articleRevisionID INT PK FK
tagID INT PK FK

所以article是文章一般信息的持有者。一个article可以有一个或多个article_revisions。所有分配的标签都参考article_revision. 这样我就可以跟踪更改的标签。

但我不太确定的最后一件事是:如何创建像在 stackoverflow 中实现的历史记录?例如,随着时间的推移,三个不同的用户更改了文本,最后作者回滚到第一个版本。数据库表将如何跟踪这一点?

我想过这样的事情:

article_revision_history

ID INT PK
articleID INT FK
articleRevisionID INT FK
userID INT FK
note VARCHAR(255)
createdAt DATETIME

有了这个,我引用了article,article_revision和一个可选user表。如果我使用ORDER BY createdAt DESC我会得到修订历史。从最新的开始。

这是修订历史的最佳方式吗?如果不是最好的方法是什么?

如果我们假设这将是一个软件解决方案,它可能在一天内将超过 100 篇文章添加到数据库中(有多个修订版),那么完整的历史跟踪是否可以维护?你有什么经验?

提前致谢!

4

0 回答 0