2

我的第二个考虑是简单地复制与应用基线的活动文档或文档文件夹相关联的表数据,并将其存储起来以备不时之需。代码复杂度节省将是巨大的,架构将保持简单,尽管在存储使用方面有一些影响(尽管我不相信它会那么大)

4

2 回答 2

4

这也是我在当前项目中面临的问题。这里有一些很好的答案。

我个人使用选项#1,在每个“版本化”表的 pkey 中添加一个版本列。FKeys 也使用版本列。我的主要考虑是易于查询,因为存储要求很高。我有严格限制保留的版本数量的余地,这可以缓解这个问题。

于 2009-07-20T01:47:14.350 回答
1

我真的认为您正在寻找一个时态数据库。我们自己的实现将一对审计日志标识符添加到表中,即“创建 ID”和“删除 ID”(修改数据库的每个事务都汇总在“审计日志”中并赋予唯一的顺序标识符)。对于向表中添加记录的每个事务,审计日志标识符用作创建 ID,而删除 ID 为零。当记录更改时,新版本具有新的创建 ID,并且相同的标识符用作旧版本的删除 ID。

创建删除 ID 为零的表视图非常容易,创建一个仅包含当前数据的虚拟表。您还可以在处理特定事务之前或之后查找表的内容,获取修改表的特定行的事务列表等。

所有这一切都会受到时间、空间和复杂性的惩罚。但对我们来说,处理大笔资金,这是值得的。

于 2009-07-22T02:10:59.940 回答