最初,我正在考虑一个将处理所有审计日志的表,但就灵活性而言,例如将来您认为,打破表并让每个应用程序都拥有它们是有意义的自己的审计日志表?
例如,对于预订,我将有一个审核表,它将跟踪字段级别的所有更改,然后我将有另一个签证申请审核表。
我当前的审核日志表设计是这样的
AuditLogID
Module
ActivityType
ReferenceNumber
FieldName
OldValue
NewValue
IPAddress
答案 0 :(得分:1)
您描述的模式似乎与实体属性值(EAV)一致,即每个字段一行。
假设所有模块中所有表的所有字段更改都将导致新的审核行,则此方法存在一些潜在问题
您还可能错过了两个要审核的重要属性,即更改的UserId和TimeStamp
您可以对审计表进行一些规范化,例如:拥有“每行一个”审计表和“每个字段一个”审计表。 例如IP地址,ReferenceNumber,活动类型,UserId和TimeStamp可能是同一行中所有更新字段的常量,这些字段由单个“操作”更改并且每行属于一次。
还有其他选择