这是正确的做法吗?有什么建议让它更好吗?
答案 0 :(得分:1)
据我了解你的要求:
我想你错过了:
is_active = False
和(显然)错误数据。这可以通过审计表设计完成。查找此emp PK的最新批准条目,并使用其数据。
但是,如果审核的列数将来可能会发生变化,您可以考虑使用两个表的方法,如此项目中所示:https://autoaudit.codeplex.com/documentation
AuditHeader 表
每次插入一条记录时,该表插入一行, 在已设置为使用AutoAudit的表中更新或删除 系统
AuditDetail 表
此表与AuditHeader相关,并插入一行 在插入或更新操作期间更改的每个列 在删除操作期间为每个列。
如果每次更改都保存旧的+新值,则可以从当前的审核条目恢复为“旧”状态。
主表的结构更改(或者如果您确定用户也可以编辑emp_name
)不需要对Audit表进行结构更改,因为Main中的每个已审计列都映射到一行在AuditDetails中而不是列。
编辑:其他优势:
在示例数据中,您已将更改后的值标记为红色。显然,Access表不能像那样工作。如果你想保留这些信息(“哪一列完全被编辑?”),你需要在Audit表中增加一列。
这将由AuditDetail涵盖,因为它包含每个具有旧+新值的更改。