字段不够用,通常不是加一列就能解决。先判断新增数据是“补全已有记录”还是“开启新的业务对象”,前者可在原表扩展,后者应新建关联结构,否则越加越乱。
第一种条件:新字段描述的是同一条记录,只是原来漏了。例如企业站的产品原来只存名称和简介,后来需要补充“适用行业”“交付周期”,这些仍属于同一个产品,直接在原数据结构上增加字段即可。此时的风险是历史记录为空,需要决定是否回填、由谁回填。
第二种条件:新数据描述的是一对多关系。例如一个产品对应多个规格、多个检测报告或多个应用案例。如果继续在产品表里加“规格1、规格2、规格3”,字段会随业务增长无限膨胀,查询和展示都变难。正确动作是新建一张关联表,用产品标识关联多条规格记录。这个动作的结果是:后台录入界面要改成分组或子列表,前台模板也要改成循环输出,下一步必须同步调整录入和展示两端,而不是只改数据库。
可以问三个问题。第一,新字段是否可能一条记录对应多个值?如果是,倾向新建关联结构。第二,新字段是否只在少数页面使用?如果使用面很窄,可以先用独立结构承载,避免主表被低频字段撑大。第三,历史记录没有这个字段时,业务能否接受空值?能接受就先上线再逐步补;不能接受,就要先设计默认值和补录流程。
假设一个柳州本地制造企业的站点,产品原来只有图片和参数。上线三个月后,销售要求每个产品挂多条“应用场景”,并要能单独按场景检索。此时若在原产品表加三个场景字段,检索只能覆盖固定数量;改成场景表加关联表后,检索按关联记录走,扩展数量不受限制。这里的关键不是技术难度,而是业务是否要求“按场景反向找产品”。如果需要,就必须建关联,而不是加列。
这些动作里,冻结写入最容易被跳过。跳过后的直接结果是迁移期间产生的记录可能丢失关联,后续排查成本高于停机几分钟。
如果新需求只是临时统计、一次性导出,或者只在后台内部查看,可以先用独立查询或临时表处理,不进入正式站点结构。判断标准是:这个需求是否会被反复使用、是否需要在前台展示、是否需要长期维护。三个都否,就不必为了临时需求改主表。反过来,只要其中一个是肯定的,就应按长期结构设计,避免第二次返工。
第一,旧页面是否仍能正常打开,尤其是列表页和详情页。第二,后台编辑一条旧记录并保存,看新字段是否被意外清空。第三,按新字段检索或筛选一次,确认结果数量和预期一致。若检索结果为零,先检查数据是否真的写入,再检查查询条件是否写错,不要直接断定结构设计失败。请求量或抓取量在改版后短期波动,也可能来自缓存、抓取节奏或入口变化,不能单独作为结构对错的证据。
字段扩展的本质是让数据结构跟上业务关系。先分清“补字段”和“加对象”,再决定改主表还是建关联表,最后同步改录入与展示,才能避免上线后反复返工。