先判断一件事:新字段是“必须马上参与检索和筛选”,还是“只需要先存下来、以后再展示”。前者要改数据库结构并同步改造查询与页面,后者可以先落到一张扩展表或一个备注字段里,等业务确认后再迁移。判断依据不是字段数量,而是这个字段是否已经进入客户的日常操作路径。
如果新字段只用于记录,例如给每条询价补一个“客户来源说明”,且暂时不需要在列表里筛选、不需要统计,那么加一张附属表是更稳的选择。附属表以主记录 ID 关联,写入时不影响原有查询,出错也只影响新功能。
如果新字段已经进入业务动作,例如销售每天要按“意向等级”筛选线索、运营要按“所属区域”汇总,那么它必须成为主表字段,并建立索引。此时继续放在附属表里,会导致每次筛选都要联表,页面越用越慢,最后还是要回头改主表。
两者的分界线可以这样验证:让实际使用的人描述一遍操作顺序。如果新字段出现在“打开列表—筛选—点击处理”这条链路里,就按改主表处理;如果只出现在“打开详情—补充记录”里,就先按加附属表处理。
不要直接打开数据库加列。先做一张字段清单,列出每个字段的名称、类型、是否必填、谁写入、谁读取、是否参与筛选。这份清单的作用不是文档好看,而是让改表的人知道哪些查询依赖旧结构。
盘点完成后做一个动作:在测试环境按新结构写入一批模拟数据,再打开原有页面确认没有报错。这个动作的结果直接决定下一步——如果旧页面正常,说明扩展可以进入正式环境;如果旧页面出现空白或查询变慢,说明还有隐藏依赖没有处理,应先修依赖再上线。
假设一个昭通本地服务类网站,最初表单只收集姓名和电话。上线三个月后,业务方希望记录“客户是从哪类渠道来的”,并且以后要按渠道统计。此时如果只是加一个备注字段,写入能成功,但统计时要靠人工翻记录,说明字段没有进入检索路径,附属表方案成立。
又过一段时间,业务方要求销售每天先看“高意向”线索。这时“意向等级”必须可筛选、可排序,附属表方案就不再成立,应改为在主表增加枚举字段并建立索引。这个例子的数字只用于说明比较方法:字段数量没有变,变的是它是否参与日常筛选。
正式改动按以下顺序执行,可以减少对线上业务的影响:
回退准备同样重要:如果新字段导致查询异常,应能通过关闭入口、保留字段但不读取的方式先恢复业务,而不是立刻删列。删列会丢失已写入的数据,属于最后手段。
如果网站使用的是托管型建站服务,数据表结构可能不对外开放,此时自行改表可能违反服务条款或导致升级失败。更稳妥的做法是先确认服务方是否提供自定义字段功能;如果没有,再考虑把扩展数据放到独立表单工具或客户管理工具里,通过链接关联,而不是强行改底层结构。
另一种例外是字段涉及支付、身份或合同信息。这类字段的存储和展示往往有额外要求,不应只按“能不能存下”来判断,而应先确认业务上是否允许这样收集和保存。
扩展字段不是一次性的技术动作,而是业务变化后的结构跟进。先判断字段是否进入筛选链路,再决定加表还是改表,最后用测试环境的写入结果决定是否进入正式环境,这条顺序比任何具体工具都更值得先确定。