我有关于数据库记录修订的问题。
首先,我的数据库表包含 name 和 content 列。我希望保存内容(可能还有 name )列的“备份”版本以及进行此编辑的用户。
使用以前版本的审核表是否更好(我应该只保留更改的列或两者)或将所有内容保存在一个表中,只需在其中添加时间戳 ?
注意:我的内容列将是一个文本字段,文本不是很小,会经常更改。
我还想问你是否要很难对表格及其“子”(to-to lists)进行修改。我的意思是继续修改待办事项和前面提到的表。或者如果我以某种方式在 content 列中标记那些待办事项列表会更好(它会降低读写待办事项的性能)吗?
提前谢谢!
答案 0 :(得分:1)
在大多数情况下,最好有一个单独的History表,原因如下:
单独表方法的一个问题是,识别属于给定版本的父记录的子记录的版本更加困难。对此没有直接的解决方案。但最糟糕的解决方案是根据版本时间戳进行过滤。
答案 1 :(得分:1)
我们总是构建另一个具有相同名称但后缀为“_audit”的表,以及两个额外的列。唯一的ID和日期时间。然后我们在更新和删除时构建触发器,将旧行放在历史表中。
这样,一次写入的数据不会占用数据库中两倍的空间,我们可以编写查询来确定特定日期的数据。