最初,我考虑的是一个表,它将处理所有的审计日志,但就灵活性而言,例如在未来,您认为打破表并让每个应用程序拥有自己的审计日志表是否有意义?
例如,对于预订,我将有一个审计表来跟踪字段级别的所有更改,然后我将有另一个用于签证申请的审计表。
我当前的审计日志表设计是这样的
AuditLogID
Module
ActivityType
ReferenceNumber
FieldName
OldValue
NewValue
IPAddress发布于 2012-06-03 19:57:29
您描述的模式似乎与实体属性值(EAV)类似,即每个字段一行。
假设对所有模块中的所有表所做的所有字段更改都将产生一个新的审计行,则此方法存在一些潜在问题
您还可能遗漏了两个要审核的重要属性,即更改的UserId和TimeStamp
也许你可以对你的审计表做一些标准化,例如,有一个“每行一个”的审计表和一个“每个字段一个”的审计表。例如,IP地址、ReferenceNumber、活动类型、UserId和TimeStamp可能是同一行中的所有更新字段的常量,这些字段由单个“动作”改变,并且属于每行一次。
还有其他的选择。
https://stackoverflow.com/questions/10869912
复制相似问题