0

即使条目被删除,我也想处理条目以用于报告目的。

例如(简单场景),我有两个表:

  1. 管理员
  2. 管理员操作

如果管理员做某事,它将被保存到AdministratorActions表中。应该可以从Administrators表中删除一些管理员(条目)。

但是,当我们从表中删除(真正删除)一些管理员时,我们无法将操作跟踪AdministratorActions回删除的名称。

最简单的解决方案是:只需IsDeletedAdministrators表中添加一列,而不实际删除条目。但我认为,这是一个非常丑陋的数据库设计。

有没有其他好的解决方案可以做到这一点?

背景是:我们必须报告所有已完成的操作,并且应该能够将这些操作追溯到发起者(表的管理员名称Administrators

我非常感谢您的帮助。

4

2 回答 2

2

我觉得一点也不丑。

如果您想实际删除管理员记录,那么您将无法从 AdministratorActions 创建 FOREIGN KEY 约束——恕我直言,这是一个更糟糕的情况。

对记录使用某种形式的 IsDeleted/Status 标志以保持引用完整性是非常常见的,这确保您可以从 FK 约束中受益。

另一种方法是将管理员的数据也存储在 AdministratorActions 表中,而不是通过 id 进行链接。但是,您应该问自己是否真的想要这种级别的数据重复。

于 2012-04-04T14:59:45.797 回答
1

您可以对AdministratorActions表和AdministratorName列进行非规范化。

于 2012-04-04T14:57:37.773 回答