先给结论:不要急着加字段,也不要急着改表结构。先判断“缺的字段”是展示层需要、业务层需要,还是历史数据需要。三种情况对应三种扩展路径,代价差别很大。下面用你手里的一张现有内容表或表单记录,走一遍可执行的处理流程。
拿到一张已经在跑的记录表,先别动手。把它导出十几条真实数据,逐条看缺的那个信息现在被塞在哪里。常见有三种:
判断依据很直接:去数据库或后台看这条记录有没有对应列。有列没显示,归第一类;没列,归第二类;有列但老数据为空,归第三类。分错层,后面所有动作都会返工。
确认是业务层缺字段后,通常有两种做法,它们都成立,但适用条件不同。
适合字段数量少、和现有记录一对一、查询时经常要参与筛选或排序的情况。代价是每次加列都要动表结构,如果表数据量大,变更窗口和回滚方案要提前准备。
适合字段会持续增加、不同记录需要的字段不一样、或者字段只是偶尔展示的情况。代价是查询变复杂,列表页如果需要展示这些字段,往往要额外关联,性能和维护成本都会上升。
选择条件可以这样用:如果未来半年内预计新增字段不超过三个,且每个字段几乎所有记录都要填,选路径一;如果字段是“部分记录才有”,或者你已经在同一张表上反复加列,选路径二。假设一张表已经有四十列,还要再加五列,且其中三列只有少数记录会用到,那么路径二更合理,因为继续加列会让表越来越难维护。
假设你手上有一张“服务预约”记录表,上线后发现需要记录“客户来源渠道”和“预约时段偏好”。先看这两项:
做完这三步,再决定加列还是建扩展表。这个动作的结果会直接影响下一步:如果选了加列,下一步是写变更脚本并准备回滚;如果选了扩展表,下一步是改写入逻辑和列表查询,而不是先改表结构。
字段加完不等于完成。至少验证:
如果这三项里有一项不通过,先不要继续加下一个字段。因为问题往往出在写入或读取的某一层,继续扩展只会把错误放大。另外,如果发现新字段的请求量或使用量在一段时间内为零,这不能单独证明字段设计正确,也可能是入口没暴露、表单没更新或用户根本不关心这项信息,需要结合表单提交日志和实际咨询内容一起看。
出现下面这些信号时,继续打补丁的代价会超过重新梳理:同一张表半年内加了超过五列;多个字段之间明显是同一组信息被拆散;列表页查询因为关联扩展表变得难以维护。这时更合理的动作是把现有字段按“基础信息、业务扩展、统计标记”分组,重新画一次数据关系,再决定哪些留在原表、哪些合并。这个动作不会立刻让页面变好看,但它决定后续每次扩展是几分钟的事还是几小时的事。
回到你手里的那张表:先确认缺的字段属于哪一层,再按字段数量和填写范围选加列或扩展表,最后用写入、读取、筛选三项验证收口。字段扩展本身不难,难的是每次扩展都不破坏已经跑通的数据关系。