0

在我们的商店中,当我们设计数据库时,我们通常包括每个表的审计属性(LastUpdateUser、LastUpdateDate 等)。这是常见的做法,但是,我注意到当您拥有从其他表“继承”的表时,这将成为一个日益严重的问题,尤其是使用实体框架等工具时。

例如,如果您有表 Customers 和 Employees,并且这些表具有表 People 的外键,那么在您的实体/类模型中,当您建立继承时,您需要更改审计字段的名称,因为它们都存在于表。也许他们需要成为 PersonLastUpdatedUser 和 PersonLastUpdatedDate,而来自Employees 的人仍然只是LastUpdatedUser 和LastUpdatedDate。

在为继承设计表时,您是在两个表中都放置这样的审计字段,还是将它们放在父表中并在子表中的属性更改时更新父表?

4

2 回答 2

1

如果您想使用继承而不是那些属性属于父表,因为具有相关表的父表形成单个实体,并且您跟踪整个实体的审计。如果您出于任何原因在两个表中都需要这些属性,则应该首先警告这些表不适合继承。

于 2012-06-05T17:12:14.450 回答
0

如果您想要真正的审计,您可以创建由触发器填充的单独审计表(永远不要由应用程序填充,否则您将错过需要审计的项目)。它们会显示旧值和新值以及进行更改的日期和用户或应用程序。

如果您想要每个表中的最后一个更新的列(我认为这比仅在父级中更好,因为这不会告诉您哪些表最后更改)并且您想要使用继承,那么您可能需要创建通过将表名添加到 lastUpdated 的唯一名称。所以 PersonLastUpdated 和 OrderLastUpdated 等。

或者你不使用继承。

于 2012-06-05T17:38:15.943 回答