跟踪订单变更的最佳设计



需要跟踪订单上的以下更改;

  • 谁创建了订单以及何时创建
  • 谁添加/更新/删除了具有数量的项目以及何时

我已经考虑到了这一点,但不确定它是否有任何好处,而且不确定命名约定

LogEventType

  • ID
  • 类型(即UPDATE、DELETE、ADD(

订单日志

  • 日志ID
  • 事件类型(FK_LogOperation_ID(
  • 订单ID
  • Itemnum
  • 数量
  • 用户名

以下是我在不深入更改现有设置和最少工作量的情况下要做的事情。我欢迎批评。

我假设当有人删除/添加项目时,订单标题和详细信息表会立即用新信息更新(类型1-就地更新(

为此,我会将ORDERLOG更改为ORDERSHISTORY。在里面,我会有当前的顺序和对它的任何更改。这将是一个附加。新订单将是一项新纪录。更新是另一个新记录等。

将ORDER_HEADER和ORDER_HOSTORY中的所有字段复制到ORDERSHISTORY。然后添加用于更改检测、当前和更改日期的列。它还有更多,但这将暂时有效。这取决于你,但你可以制作这样的列:

CHANGE_TYPE CHAR(1) -- 'A' to add, 'C' to change, 'D' to delete.
IS_CURRENT INT -- 1 is latest record, 0 is not
EFFECTIVE_DATE  DATETIME -- GETEDATE() when record is inserted

当某个事件发生时,在ORDERSHISTORY中插入一条记录。遵循上面的业务规则,您将能够看到订单从初始到最终的完整历史记录。

您可以在ORDER_HEADER表上设置触发器,以便在该表以任何方式受到影响时插入记录。

值得注意的是,这会造成表蠕变,因此请确保在不再经常需要时进行存档或删除。

相关内容

  • 没有找到相关文章

最新更新