Ms access 审计表设计建议
这是正确的方法吗?有什么更好的建议吗Ms access 审计表设计建议,ms-access,database-design,ms-access-2010,audit-trail,changelog,Ms Access,Database Design,Ms Access 2010,Audit Trail,Changelog,这是正确的方法吗?有什么更好的建议吗 下面是employee表及其影子表的屏幕截图,tlu name和dept字段可能会更改,并且当前使用影子表跟踪所有更改 在主表中插入/更新记录,并在数据宏的帮助下将其复制到阴影表中 超级用户必须批准/拒绝卷影表中的所有记录 主表将具有更新的对齐方式,而影子表将具有任何员工的全部更改历史记录 当通过userform在主表中添加/更新记录时,将在影子表中创建记录副本,该副本必须经过管理员批准 当通过userform在主表中添加/更新记录时,处于活动状态字段将设置
tlu name
和dept
字段可能会更改,并且当前使用影子表跟踪所有更改处于活动状态
字段将设置为false,一旦管理员批准,该字段将更新为true据我所知,您的要求如下:
- 更改/插入的数据应立即对所有人可见,并带有未批准数据的可见标志
- 这是合理的,如果您假定大多数更改是正确的,并且将获得批准(希望是正确的;)
- 如果更改被拒绝,主表中的数据应自动恢复到最近批准的状态
- 否则,主表将永远处于(某种)未定义状态,
和(显然)错误的数据is_active=False
但是如果被审计的列数可能在将来改变,您可能会考虑一个具有两个表的方法,如在这个项目中:
审核标题表格 每次插入一条记录时,此表都会插入一行, 在已设置为使用自动审核的表中更新或删除 系统 审计详情表格 此表与AuditHeader相关,插入时有一行用于 插入或更新操作期间更改的每一列,以及 对于删除操作期间的每列 如果每次更改都保存旧值+新值,则可以仅从当前审核条目恢复为“旧”状态 主表的结构更改(或者如果您决定用户也可以编辑emp_name
)不需要更改审核表的结构,因为主表中的每个审核列都映射到AuditDetails中的一行,而不是一列
编辑:附加优势:
在示例数据中,已将更改的值标记为红色。显然,访问表不是这样工作的。如果要保留此信息(“到底编辑了哪一列?”),则需要在审核表中添加一列
AuditDetail将涵盖这一点,因为它包含每个具有旧值+新值的更改。您试图实现的标准化级别是什么?只是好奇:为什么有人想要批准审核日志?如果要阻止,应阻止用户编辑主表。审核表最慢的方法是使用表触发器。审核表包含所有字段+操作、操作依据、操作日期。使用“更新前和更新后”事件捕获整行。@krishKM所有更改都必须由超级用户批准,因为每个人都有权自行编辑路线(这是一项业务要求)。目前我正在使用表触发器(更改前、更新后)来调整整行。我不理解您的业务逻辑。每个人都可以编辑主表,所有更改都必须经过批准,这似乎是一个奇怪的组合。如果更改被拒绝,会发生什么情况?因此被拒绝的更改将与更改的数据一起永久可见,并且
处于活动状态=False
?那不可能是对的。我有种感觉,这并不是真正经过深思熟虑的请用正确的数据更新屏幕截图,以避免混淆,谢谢。@Santosh:您对您的问题有何期待?谢谢您的建议……干得好!