先给结论:数据字段不够用,通常不是“加几个字段”就能解决,而是要先判断你缺的是存储位置还是业务关系。如果只是某个表单少收了一项信息,扩字段成本很低;如果询盘、报价、样品、订单之间已经互相引用,单表加列会把问题从“字段少”变成“数据对不上”。下面用两个相反的解释帮你定位。
一个常见的反常结果是:你给询盘表加了“目标市场”“预估年采购量”“认证要求”三个字段,前端也同步放进了表单,结果销售反而抱怨信息更难看懂。原因往往不在字段数量,而在于这些字段的归属对象被搞混了。
同一批新增字段,可能属于三个不同层级:
如果你把“年采购量”塞进每一次询盘记录,同一个客户第二次、第三次询盘就会重复填写,且两次填的值可能不同。此时数据库里字段是够了,但语义冲突了。
这种解释成立的证据是:新增字段只被读取,不被其他逻辑引用。比如你只想在询盘详情里多看到“客户所在时区”,方便安排回复时间。
此时可执行的动作是:在原有数据表增加可空字段,前端表单设为选填,历史数据留空。动作结果是——旧询盘不受影响,新询盘开始积累该字段。下一步你就能按“有值/无值”分组,观察填写率是否值得把它变成必填。
适用条件很明确:新增字段不参与权限判断、不参与自动分配、不被报表作为筛选维度。一旦它开始影响销售分配或报价计算,就进入第二种解释。
如果新增字段需要被多个询盘共享,或者需要记录“谁在什么时候改过它”,那么加列只会制造重复和冲突。可区分的证据有三类:
出现任意两类,就应该把字段从询盘表拆到独立的客户或商机实体,再用关联键连接。动作结果是:询盘表只保留本次咨询特有的信息,客户级字段只存一份。下一步的扩展会变成“新增一个客户属性”,而不是“再给询盘表加一列”。
假设一家做工业配件的出口企业,上线三个月后发现需要记录“客户是否要求第三方验货”。
做法A:在询盘表加一个布尔字段。第一次询盘填“是”,第二次询盘填“否”,两个值都留在系统里。销售看到两条记录,无法判断以哪次为准。结果是你需要额外写规则去取最新一条,规则本身又成为新的维护点。
做法B:把“验货要求”放到客户档案,询盘只记录“本次是否提及”。这样客户级答案唯一,询盘级答案保留历史。下一步如果要按验货要求筛选客户,直接查客户档案即可。
两种做法都成立,区别在于:字段是否需要跨询盘保持唯一。需要唯一,就拆实体;只在单次事件内有效,就加列。
在动手改表之前,把准备新增的每个字段过一遍下面三个问题:
核对结果会直接决定你下一步是写迁移脚本、改表单,还是先补一张关联表。字段扩展本身不难,难的是扩展后每个值仍然只有一个可信来源。