我要求那些已经在处理这种情况的人分享他们的经验。
用例:
业务订单进入系统 > 变为活动 > 订单被接受或过期 > 待处理 > 是否成功履行。
你看 ?实体至少有 4 个状态。我正在做的是我有一个主表“订单”,然后是其他四个仅包含 orderIds(活动、过期、待处理、已完成)的表,并且在查询不同状态的订单时我正在执行 JOINS。
这样,巨大的表 Order 只被读取而不被写入,因此从性能的角度来看它非常有效......
你对这个用例有什么技术?
我要求那些已经在处理这种情况的人分享他们的经验。
用例:
业务订单进入系统 > 变为活动 > 订单被接受或过期 > 待处理 > 是否成功履行。
你看 ?实体至少有 4 个状态。我正在做的是我有一个主表“订单”,然后是其他四个仅包含 orderIds(活动、过期、待处理、已完成)的表,并且在查询不同状态的订单时我正在执行 JOINS。
这样,巨大的表 Order 只被读取而不被写入,因此从性能的角度来看它非常有效......
你对这个用例有什么技术?
您是对的,因为性能(写入消除),这个用例需要额外的表。但是有四个表可能会在后续迭代中导致很多维护麻烦。
我可能只创建一个 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 有合理的索引。但另一方面,拥有额外的表格可以很容易地添加一些关于状态码的额外属性。