目前我正在开发一个应该支持文本修订的 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_revision
s。所有分配的标签都参考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 篇文章添加到数据库中(有多个修订版),那么完整的历史跟踪是否可以维护?你有什么经验?
提前致谢!