即使条目被删除,我也希望处理用于报告目的的条目。
例如(简单场景),我有两个表:
如果管理员做某事,它将被保存到AdministratorActions
表中。应该可以从Administrators
表中删除一些管理员(条目)。
但是当我们从表中删除(真正删除)某些管理员时,我们无法将AdministratorActions
中的操作追溯到已删除的名称。
最简单的解决方案是:只需在IsDeleted
表中添加一列Administrators
,实际上不会删除这些条目。但我认为,这是一个非常丑陋的数据库设计。
还有其他好的解决方案吗?
背景是:我们必须报告所有已完成的操作,并且应该能够跟踪返回发起者的操作(表Administrators
的管理员名称。
我非常感谢你的帮助。
答案 0 :(得分:2)
我觉得它根本不丑。
如果您想要物理删除管理员记录,那么您将无法从AdministratorActions创建FOREIGN KEY约束 - 恕我直言,这是一个更糟糕的情况。
在记录中使用某种形式的IsDeleted / Status标志来保持参照完整性是很常见的,这可以确保您可以从FK约束中受益。
另一种方法是在AdministratorActions表中存储管理员的数据,而不是通过id链接。但是,您应该问自己是否真的需要这种级别的数据重复。
答案 1 :(得分:1)
您可以将AdministratorActions
表和AdministratorName
列反规范化。