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在主表中添加/更新记录时,处于活动状态字段将设置

这是正确的方法吗?有什么更好的建议吗

  • 下面是employee表及其影子表的屏幕截图,
    tlu name
    dept
    字段可能会更改,并且当前使用影子表跟踪所有更改

  • 在主表中插入/更新记录,并在数据宏的帮助下将其复制到阴影表中

  • 超级用户必须批准/拒绝卷影表中的所有记录

  • 主表将具有更新的对齐方式,而影子表将具有任何员工的全部更改历史记录

  • 当通过userform在主表中添加/更新记录时,将在影子表中创建记录副本,该副本必须经过管理员批准

  • 当通过userform在主表中添加/更新记录时,
    处于活动状态
    字段将设置为false,一旦管理员批准,该字段将更新为true


  • 据我所知,您的要求如下:

    • 更改/插入的数据应立即对所有人可见,并带有未批准数据的可见标志
    • 这是合理的,如果您假定大多数更改是正确的,并且将获得批准(希望是正确的;)
    我想你错过了:

    • 如果更改被拒绝,主表中的数据应自动恢复到最近批准的状态
    • 否则,主表将永远处于(某种)未定义状态,
      is_active=False
      和(显然)错误的数据
    这可以通过审计表设计来完成。查找此emp PK的最新批准条目,并使用其数据

    但是如果被审计的列数可能在将来改变,您可能会考虑一个具有两个表的方法,如在这个项目中:

    审核标题表格

    每次插入一条记录时,此表都会插入一行, 在已设置为使用自动审核的表中更新或删除 系统

    审计详情表格

    此表与AuditHeader相关,插入时有一行用于 插入或更新操作期间更改的每一列,以及 对于删除操作期间的每列

    如果每次更改都保存旧值+新值,则可以仅从当前审核条目恢复为“旧”状态

    主表的结构更改(或者如果您决定用户也可以编辑
    emp_name
    )不需要更改审核表的结构,因为主表中的每个审核列都映射到AuditDetails中的一行,而不是一列

    编辑:附加优势:

    在示例数据中,已将更改的值标记为红色。显然,访问表不是这样工作的。如果要保留此信息(“到底编辑了哪一列?”),则需要在审核表中添加一列


    AuditDetail将涵盖这一点,因为它包含每个具有旧值+新值的更改。

    您试图实现的标准化级别是什么?只是好奇:为什么有人想要批准审核日志?如果要阻止,应阻止用户编辑主表。审核表最慢的方法是使用表触发器。审核表包含所有字段+操作、操作依据、操作日期。使用“更新前和更新后”事件捕获整行。@krishKM所有更改都必须由超级用户批准,因为每个人都有权自行编辑路线(这是一项业务要求)。目前我正在使用表触发器(更改前、更新后)来调整整行。我不理解您的业务逻辑。每个人都可以编辑主表,所有更改都必须经过批准,这似乎是一个奇怪的组合。如果更改被拒绝,会发生什么情况?因此被拒绝的更改将与更改的数据一起永久可见,并且
    处于活动状态=False
    ?那不可能是对的。我有种感觉,这并不是真正经过深思熟虑的请用正确的数据更新屏幕截图,以避免混淆,谢谢。@Santosh:您对您的问题有何期待?谢谢您的建议……干得好!