我正在使用sql server数据库存储数据的项目。我有一张桌子:
记录
Id - (PK)
RecordTitle - (varchar(400))
IsDeleted - (bit)
LastUpdatedAtUtc - (long - unix timestamp)
LastUpdatedById - (FK to UserTable)
用户可以添加/编辑/删除多条记录。因此,UserTable和RecordTable之间的关系是1到多个
我想在同一个表中存储记录的编辑/删除历史记录。因此,如果删除记录,我们只需设置 IsDelete 列值 True 。
同样,我想在同一个表中存储编辑历史记录。因此,无论何时用户编辑任何记录,原始记录都不会被更改,而是插入带有更改的新记录。
我想知道处理这个问题的有效方法是什么。我们是否需要在记录表中添加新列以存储编辑历史记录。如果是,那么那些列是什么?
答案 0 :(得分:1)
有很多方法。
1)取一个ParentId列,每当有任何用户编辑记录时,插入带有旧记录ID的ParentId的新记录。所以你将拥有所有历史。
2)取另一个名为history table的表,并在该表中保存旧记录,并在原始表中进行更新。不要忘记将原始表的id作为一个单独的列提及。
3)您可以将一列作为history_column,您可以在其中保存从OLD更改为NEW的字符串。
答案 1 :(得分:0)
向表中添加一个名为ParentRowId的字段,并在同一个表上建立1对1关系,此列包含旧编辑记录的ID,新列包含新值。
答案 2 :(得分:0)
您可以添加新列version
& record_group_id
。
version
将为0
。 record_group_id
在此表中也是唯一的。version
会增加1,但与前一个record_group_id
相同。IsDeleted
设置为True
。因此,在查找记录时,您可以使用version
和record_group_id
的组合来加载最新记录。