2009-04-15 40 views
7

This question包含一些如何为数据(如数字或多选字段)设计数据库历史记录/修订方案的优秀报道。用于文本修订的数据库设计

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

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

+0

我假设你想嵌入一个链接(“这个问题包含...”),所以请编辑你的文章,并包括它。 – 2009-04-15 08:35:52

+0

更正链接格式。 – Cerebrus 2009-04-15 08:43:41

回答

4

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

修订文本是按原样存储的,不是diffd或类似的东西。

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

+0

我做了同样的事情,到目前为止对我来说工作得很好。该系统现在是2年左右。 – 2009-04-15 09:22:03

1

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

所以,如果你有一个很好的方法来描述文档的变化类型(这主要取决于文档是什么以及它是如何使用的),那么通过一切手段使用数据库来跟踪变化,因此版本。

2

由于硬盘技术的当前状态,它只是不值得努力尝试优化文本存储机制:Document (ID, Name)DocumentRevision (ID, DocumentID, Contents)表将做的工作。 DocumentRevision中的ID也可以用作“储存库”全修订版号码。如果这不是您想要的行为,请为每个文档修订分配一个单独的VersionID