文本修订的数据库设计

时间:2009-04-15 08:30:44

标签: database text versioning

This question包含了一些关于如何为数字或多选字段等数据设计数据库历史/修订方案的精彩报道。

然而,对于大型文本字段的讨论并不多,正如博客/ Q& A / wiki /文档类型系统中常见的那样。

那么,在基于数据库的编辑系统中存储文本字段历史记录的良好做法是什么?将它存储在数据库中是一个好主意吗?

3 个答案:

答案 0 :(得分:4)

我开发了一个wiki引擎,页面/文章修订版存储在数据库表中。每个版本都有一个顺序修订号,而“当前”修订版用-1标记(只是为了避免NULL)。

修订版文本按原样存储,不存在差异或类似内容。

我认为性能不是问题,因为您不太可能经常访问旧版本。

答案 1 :(得分:2)

鉴于HDD艺术的当前状态,尝试优化 text 存储机制并不值得:Document (ID, Name)DocumentRevision (ID, DocumentID, Contents)表将完成这项工作。 ID中的DocumentRevision也可以作为“存储库”范围的修订号。如果这不是您想要的行为,请为每个文档修订分配一个单独的VersionID

答案 2 :(得分:1)

跟踪文档版本的最明智的方法通常是跟踪对其所做的更改。然后,如果请求特定版本,则可以从当前文档和部分更改集重建它。

因此,如果您有一个很好的方法来描述文档的更改类型(这在很大程度上取决于文档的内容和使用方式),那么一定要使用数据库来跟踪更改,从而跟踪版本。