1

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

用例:

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

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

这样,巨大的表 Order 只被读取而不被写入,因此从性能的角度来看它非常有效......

你对这个用例有什么技术?

4

1 回答 1

0

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

我可能只创建一个 OrderStatusCode 表(orderId,statusId),你可以像

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

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

于 2011-03-04T14:48:03.217 回答