【问题标题】:How to capture state of an entity in Database during the course of business process?如何在业务过程中捕获数据库中实体的状态?
【发布时间】:2011-03-03 03:14:58
【问题描述】:

我请那些已经在处理这种情况的人分享他们的经验。

用例:

一个业务订单进入系统 > 激活 > 订单被接受或过期 > 待处理 > 是否成功履行。

你看到了吗?实体至少有 4 个状态。我正在做的是我有一个主表“订单”,然后是其他四个仅包含 orderIds(活动、过期、待处理、已完成)的表,并且在查询不同状态的订单时我正在执行 JOINS。

这样大表Order只读不写,从性能的角度来看非常有效...

您对这个用例有什么技巧?

【问题讨论】:

    标签: java database-design data-modeling business-process


    【解决方案1】:

    您是对的,因为性能(写入消除),这个用例需要额外的表。但是有四个表可能会在后续迭代中导致很多维护问题。

    我可能只创建一个 OrderStatusCode 表(orderId、statusId),您可以像这样进行 JOINS 操作

    select * from order 
       inner join activeorder 
          on 
       order.orderID = activeorder.ActiveOrderID 
          WHERE activeorder.status = 'l'
    

    但我感觉,就整个商业周期而言,实体状态的变化不会超过 6-10 次。将所有东西放在一张桌子上应该不是问题。如果您对“where status_id = x”选择的status_id 有合理的索引。但另一方面,拥有额外的表格可以很容易地添加一些关于状态码的额外属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-22
      • 1970-01-01
      • 2019-03-07
      相关资源
      最近更新 更多