结论有条件:如果现有字段只是冗余不足、数据量可控,优先在原表上做兼容性扩展;如果字段变更会牵动已上线页面、接口或历史统计口径,先加旁路表或扩展表,把新字段集中管理,再决定是否回迁。判断依据不是“哪种更规范”,而是变更影响面与数据一致性成本。
第一种是在原表加字段。它适合新字段可空、默认值明确、旧数据不需要立即补齐的情况。动作是先在测试环境执行变更,用一条历史记录和一条新记录分别验证读写,再观察列表页、详情页和导出是否正常。代价是字段会持续累积,若缺少命名约定,半年后很难判断哪些字段还在使用。
第二种是新建扩展表,用主键关联原记录。它适合字段分组明显、不同业务线各用各的字段、或者新字段只服务某个新页面的情况。动作是把新字段写入扩展表,查询时按需关联。代价是查询变复杂,列表页若一次要展示多个扩展字段,容易出现多次查询;导出和统计也要同步改。
两者并非互斥。常见做法是先用扩展表承接不确定的字段,等字段稳定、使用范围清楚后,再评估是否合并回主表。合并的前提是旧数据补值方案明确,且回迁不会中断线上读写。
如果新需求要求对历史数据做筛选、排序或统计,而旧记录在该字段上全部为空,直接加字段往往不够。此时真正的成本不在加列,而在补数据:补值来源是什么、由谁确认、补错后如何回滚。没有补值方案就上线,页面可能显示空白,筛选结果也会误导运营判断。
另一个反例是字段含义发生变化。比如原本记录“意向等级”的字段,新需求要改成记录“跟进阶段”,两者取值逻辑不同。直接复用旧字段会让历史数据失去可比性,报表口径前后不一致。这种情况下应新增字段并保留旧字段,而不是覆盖。
假设某企业站上线后,表单只存了姓名、电话和留言,三个月后市场部希望按“咨询产品”“所在地区”“是否已有预算”筛选线索。若线索量只有几百条,直接在原线索表加三个可空字段,并在表单增加对应选项,通常够用。若这三个字段还要进入月度统计,且历史线索需要补录,则应先建线索扩展表,把新字段和补录状态放在一起,统计时只统计补录完成的记录。这里的数字仅用于说明比较方法,不代表任何真实项目规模。
完成这四步后,再决定是加列还是建扩展表。若验证中发现历史补值无法完成,就先让新字段只对新数据生效,并在页面上明确标注数据范围,避免把不完整统计当成全量结论。下一步动作是把变更记录写入交付资料,方便后续维护者判断字段来源。