经常看见一个表里面有 extra_fields 之类的字段,里面放一个大 JSON。每个需求都要加新字段怎么弄?
加字段只是一个表象,任何字段都有一堆相关联的业务逻辑。 本质上数据要持久化是因为业务流程需要中断引入的。 比如顾客点菜让厨师去制作,如果厨师就站在旁边,直接告诉他去做就行了。 厨师不在旁边,就得先把菜写在单子上,传给后厨去制作。 因为多个角色的工作是先后进行的,中间需要一个载体来承载过去的“需求/承诺/契约/合同”,所以才需要持久化。 加字段,代表了新的业务流程。
最常见的扩展需求是要订单加字段。订单上记录了顾客的需求,记录了处理过程,记录了客服的处置,每个需求都可以找到一个给订单加字段的理由。 我们除了订单,还需要报价单,还需要送货记录,还需要退款记录,还需要客服补偿申请。这些表的名字看起来都挺合理,为什么就一定要往订单上堆呢。 加字段都可以转化为加表来实现。 从依赖管理的角度来说,是新增模块来满足新需求,而不是修改底层模块来满足新需求。