如何平衡数据库事务工作流与未决事务类型?

时间:2018-08-28 12:34:25

标签: database tsql relational-database transactional

我有一个产品表和一个表,用于描述针对产品表的交易,如此处定义的堆栈交换答案:https://dba.stackexchange.com/questions/150339/building-an-inventory-database

有4种交易类型:

  1. 购买-从产品中删除数量
  2. 已收到-向产品添加更多数量
  3. 拒付-余额分类帐中的折扣或 具有销售价格的产品
  4. 回滚-添加从中删除的数量 购买交易,例如它平衡了库存
  5. 待处理***- 代表用户购物车中的保留数量

如果购买的交易工作流程为:

  1. 为1种产品创建收到的交易(库存增加1)
  2. 为1种产品创建待处理交易(用户在界面中选择结帐选项,库存减少1)
  3. 为1种产品创建购买交易(用户为界面中的产品付款,库存减少1)

此工作流的数学运算未累加,因为上述情况的总和的最终现有数量为-1。您如何使用待处理的交易来进行此操作?我愿意接受想法。

谢谢您的帮助!

**更新**

我决定去:

  1. 删除拒付交易,因为定价ID会打开 交易,并将在其他业务中计算 处理
  2. 将回滚事务用于未决事务 待处理交易时间> 24或以后购买 交易是参考相关的待处理交易

通过这种方式,交易表本质上可以是仅允许插入的只读表(例如,上述类型的交易)。

选择这条路线可以减轻对与购物车相关的表的需要,这些表表示瞬时数据,因为Orders表将包含对相关交易行的必要引用。另外,当我需要确定用户是否具有“购物车”项目时,该查询将是用户对交易表的选择(不带锁)。

这种方法有什么值得我注意的地方吗?

0 个答案:

没有答案