繁体   English   中英

设计记录更新批准

[英]Design Record update approval

问题陈述:
在更改反映在主记录中之前始终批准记录更新。 想要尝试使用SQL数据库解决此问题。
例如。 用户:{“ name”:“ Ravi Kumar”,“ city”:“ Bangalore”}说我们想将城市更新为“ Delhi”,但必须经过批准才能在主记录中反映出来。

一旦获得批准。 它应该显示:用户:{“ name”:“ Ravi Kumar”,“ city”:“ Delhi”}

必备功能:

  1. 更改必须获得批准,然后才能反映在主记录中
  2. 要保留的记录的审核跟踪
  3. 如何支持表联接? 如果使用联接多个表来获取记录怎么办? 基本上,如果db已标准化。

可能的解决方案:

  1. 在表中还有一个“已批准”列。 所有已批准的记录将具有状态1,其余状态将为0。要获取当前记录,我们必须获得具有最近时间戳且已批准= 1的记录。

  2. 有2个表,一个包含主表,另一个包含批准表。 当有人批准后,我们​​将对主表中的记录进行更改。

问题:

  1. 标准化时如何合并联接? 当必须加入时,它是简单还是复杂? 可能吗
  2. 如果是联接,我们是否仍可以像休眠一样使用ORM来实现?
  3. 如果有多个更新等待同一记录的批准,并且每个更新都会修改不同的字段集。 如果所有记录都被批准,则考虑中的记录可能仅具有最后的更新更改(假定使用了上述解决方案之一)。

    例如。 主表中有一条记录,没有未经批准的记录。 现在,用户将一个属性更改为“名称”,然后提交批准。 另一个用户更改属性“城市”并提交批准。 另一个用户更改了属性“工资”并提交了批准。 所有未批准的记录均被批准。 现在最后一次更新(更改了薪水属性),该更改包含旧名称,而不是第一次更新中的旧名称。 如何获得所有批准的更改。
    这可以通过仅存储更改的属性而不是整个属性来实现。 但这会带来更多代码更改的代价。

这些问题如何在行业中解决?

相关问题:
将更改存储到需要获得批准才能可见的数据库记录的最佳方法是什么?
处理需要批准的记录的更改的结构

如果您要非常小心地批准更改,并且期望进行如此多的更改,以至于有可能在批准之前的更改之前对记录进行更多更改,那么最好的方法是使用一组单独的表每个提议的更改都有一个记录。

这些“未决变更”记录可能(应该)包括有关变更交易的额外信息,例如谁提出该变更交易以及何时提出。

您处理所有这些变更(尤其是冲突或重叠变更)的过程将取决于您的业务规则,而您尚未明确说明。 选项包括:

  • 防止第二个更改挂起
  • 最后更改获胜
  • 必须按顺序批准更改,并在官方数据之上叠加较早的未决更改,以便推测所有较早的更改将在应用较晚的更改之前得到批准

关于规范化的数据库和联接,在您的情况下不会出现任何特殊问题。 无论如何,您都将加入包含官方批准数据的表。 如果要加入记录的临时/预先批准版本,则应创建一个视图,以反映与正式数据重叠的这些更改,然后加入该视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM