先别急着改数据库。你手上最值得动手的资料,是最近一次真实提交的表单记录或订单记录。把它导出来,逐列标注“现在必须用”和“以后可能要筛”,你会得到一张字段缺口表;这张表能决定是加一张附表、加一个字段,还是把整块数据迁到独立表,而不是凭感觉直接改主表。
字段不够用通常分三种,处理代价差别很大。
判断方法很直接:如果同一个字段未来会出现“第2个、第3个值”,它就是一对多,不要塞进主表。如果某个值需要保留每一次变动,它就是历史记录,不要只留最终状态。先做这一步分类,能避免把一次小扩展做成一次全站改造。
假设你手上有一份最近三个月的表单提交记录,想扩展“咨询类型”和“跟进状态”。可以按下面的顺序做,全部在一份副本上完成,不动线上数据。
这一步的产出不是代码,而是一份字段清单:字段名、类型、是否必填、是否可多值、历史是否保留。清单确认后再动结构,返工概率会明显下降。需要说明的是,这二十条样本只能验证字段形态,不能证明新结构一定覆盖未来所有业务,也不能据此推断访问量或转化会变化。
字段扩展最常见的失误,是只改了数据库,忘了另外两处。
一个实际动作是:先在测试环境加字段并录入三条假数据,走一遍“前台提交—后台查看—导出文件”的完整链路。如果导出文件里没有新列,说明导出逻辑没同步,这一步必须在正式扩展前修掉,否则你拿到的仍是旧结构的数据,后续判断会继续失真。
很多执行者拿不到数据库权限,只能改内容或提需求。这种情况下仍可推进,但结论边界要清楚。
把清单交给有权限的人时,附上那二十条样本和期望查询,比只写一句“字段不够用”有效得多。对方能直接判断是加列还是建表,沟通轮次会减少。
出现下面任一情况,就不建议继续在主表上加列:同一类信息已经加到第三个同义字段;需要按时间保留多次变更;需要跨多个业务对象关联。此时把这块数据拆成独立表,主表只留一个标识,后续扩展只动新表,主表保持稳定。
拆表会带来新的连接查询和后台展示改动,这是代价,也是取舍点。若你的查询场景简单、数据量有限,加列仍然更省事;若字段会持续增长,早拆比晚拆便宜。选择依据是字段的增长趋势,而不是当前这一条需求。
最后回到你手上的那份导出记录:先分类,再验证,再同步三处,权限不足时先交清单。字段扩展不是一次性的技术动作,而是一次对业务结构的重新确认,确认清楚了,下一步该加列还是建表,答案会自己浮现出来。