先给结论:不要急着重做整张表,也不要继续往一个字段里塞更多内容。正确顺序是先判断“不够用”属于哪一类——是字段数量不够,还是同一字段被赋予了多种含义。前者可以增量扩展,后者必须先拆语义,否则每加一个字段都会让旧数据更难解释。下面用一个假设场景说明怎么区分,以及扩展后如何验证没有破坏已有功能。
假设一个内容型站点上线三个月,最初“文章”表只有标题、正文、作者、发布时间。运营后来想给文章加“是否置顶”“所属专题”“外部来源链接”,开发发现加字段不难,难的是旧记录怎么填、前台怎么判断。与此同时,编辑说“作者”一栏有时填的是撰稿人,有时填的是转载来源,统计口径已经乱了。
这时团队通常有两种解释。第一种:字段就是不够,补几个新列即可。第二种:现有字段承担了超出设计范围的职责,问题不在数量,而在语义混杂。两种解释对应的动作完全不同,选错会让后续每次迭代都更痛。
如果每个现有字段的含义始终唯一,只是缺少承载新信息的列,那么增量扩展是成立的。成立条件包括:旧记录在新字段上可以安全地留空;前台在没有新字段时仍能正常展示;新字段之间没有互相依赖。此时用 ALTER TABLE 加列,或通过建站系统提供的自定义字段功能追加,风险可控。
如果同一个字段在不同记录里表示不同东西,比如“作者”既可能是站内编辑,也可能是外部来源,那么直接加列不会解决问题。成立的信号是:同一列出现多种格式;筛选或统计时总要额外判断;不同角色对“这个字段填什么”回答不一致。此时应先拆出“内容责任人”和“来源说明”两个独立字段,再考虑扩展。
不要靠感觉争论,去查可核对的事实。以下动作可以产生区分证据:
如果抽样显示一列多义、三方答案不一致,证据支持解释二;如果含义稳定、只是缺列,证据支持解释一。这个判断结果直接决定下一步是“加字段”还是“先拆字段再加字段”。
假设证据指向解释二,可以按以下顺序处理。第一步,新增字段而不是直接改旧字段,例如新增“内容责任人”和“来源说明”,保留原字段只读一段时间。第二步,写一个一次性脚本,按可判断规则回填新字段,无法判断的标记为待人工处理。第三步,修改前台和接口,优先读取新字段,旧字段作为回退。第四步,观察一个发布周期,确认没有页面报错、筛选结果符合预期后,再决定是否停用旧字段。
这里的关键动作是“先新增、后回填、再切换读取顺序”。它的结果是:旧数据仍然可读,新数据有明确归属,出现问题时可以回退到旧字段。如果跳过回填直接改旧字段,一旦判断规则有误,修复成本会高得多。
扩展字段不是加完就结束。至少核对三件事:列表页和详情页是否仍能正常显示;按新字段筛选时结果是否与人工抽查一致;写入接口在缺少新字段时是否有合理默认值。把这三项做成可重复的核对清单,下次再遇到字段扩展时可以直接复用。若发现某次抓取量或请求量下降,不要立刻归因于字段改动,先排查模板报错、接口超时、缓存失效等更常见的解释,再判断是否与本次扩展有关。