比如有一张车位表和订单表,车位表有一个状态,当车位有订单的时候,就要把车位状态改成锁定。然后我有一个删除车位的业务,我是直接根据车位状态去判断呢,还是说判断完车位状态,再去校验一下是否有进行中的订单,有进行中的订单就不能删除车位。其实这个问题的本质在于,我能否保证订单和车位状态是否是一致的,如果是一致的,就不需要校验订单,但是因为订单流程变化过多,我不能保证车位状态和订单绝对是一致的,也许一种情况考虑不到位,就有bug产生了。所以,我到底应不应该校验订单,还是说我应该把精力放在保证订单和车位状态同步上。
车位和订单是一对一的关系还是一对多的关系?
这主要还是取决于你的业务场景:
1、校验订单的开销,即查询订单状态所花费的时间,主要取决于数据表结构及数据量
2、状态机的处理,即状态同步需要的工作量,以及流程是否经常变化,是否可控
3、容错要求,即一旦误删车位,其后果是否能够承受
一般来说,如果(1)校验开销不是过大,不论做不做(2)这个处理,都应该要做一个校验,以防止出现误删的情况。
至于做不做(2),就看业务上是否能够分清状态流,以及流程是否多变了