先判断一件事:现有字段是“不够宽”还是“不够深”。如果只是缺少某个可选属性,保留原结构、补字段即可;如果核心对象的关系已经错位,比如一个产品只能挂一个分类、一条询盘只能记一个来源,那么继续加字段只会让后续数据更难用,此时应优先考虑改写数据模型,而不是在旧表上叠补丁。
“不够宽”指字段数量或类型不足:原来只有标题和正文,现在想加规格、产地、适用场景;原来来源是单选项,现在想同时记录首次来源和成交来源。这类问题通常能通过新增字段、新增一张附表解决,对已有页面和已有内容的影响较小。
“不够深”指关系设计错误:把本该多对多的关系写成了单选,把本该独立成表的对象塞进了一个文本字段。判断信号很直接——运营人员开始用逗号、竖线或“其他”来塞多个值,或者同一份信息在多个页面重复填写。出现这类信号时,新增字段只能延缓问题,不能消除问题。
保留的前提是:核心对象没变,页面模板不需要重排,历史数据可以留空或批量补默认值。此时的动作是加可空字段,而不是改已有字段的类型或含义。
具体做法上,先给新字段设定明确的取值约束,再决定是否需要在页面上输出。例如原来产品只有“名称、简介、图片”,现在要加“材质”。可以新增一个材质字段,允许为空,先只让编辑在后台填写,前端模板暂不展示;等填写覆盖率足够后,再决定是否在详情页输出。
这个动作的结果会直接影响下一步:如果新字段允许为空且不影响旧页面渲染,就可以继续保留原结构并逐步补数据;如果加字段后必须同步改模板、改列表筛选、改结构化数据输出,那么工作量已经接近一次小规模重构,应重新评估是否值得在旧结构上继续投入。
当出现下面任一情况时,保留原结构的成本会持续上升:一个产品需要属于多个分类;一条内容需要同时关联多个标签且标签本身有独立页面;一条询盘需要记录多个跟进人和多次状态变更。这些都不是“再加一列”能解决的,因为需要的是中间表或独立实体。
改写的典型动作是把原来塞在一个字段里的多值拆成关联记录。假设原来“产品”表里有一个“适用行业”文本字段,编辑习惯写成“餐饮、零售、教育”。改写后应建立行业表,再用关联表把产品和行业连起来。这样每个行业都能有自己的聚合页,筛选也不再依赖文本匹配。
改写的代价是历史数据需要迁移和清洗。迁移前应先备份,再在测试环境验证旧页面是否仍能正常输出。如果旧数据里存在大量不规范写法,迁移规则要写清楚:哪些值映射到哪个行业,哪些无法识别需要人工处理。
退出不是指关站,而是停止在旧数据模型上继续开发,把新需求放到新结构里。适用前提通常有三条同时成立:旧结构的核心关系已经无法支撑当前业务;旧页面数量不多或可以批量重定向;团队能接受一段时间的双轨运行。
如果旧页面已经被大量外部链接指向,直接替换路径会带来额外风险。此时更稳妥的做法是保留旧路径可访问,把新结构放在新路径下,逐步把旧内容迁过去,再决定旧路径是保留还是重定向。这个判断依赖实际的外链和访问数据,不能只凭感觉。
假设一个自助建站站点原来只有“文章”一种内容类型,字段是标题、正文、发布时间。上线后运营想按“教程、案例、公告”分别做列表页,还想给教程加“难度”和“适用版本”。
如果只是想让列表页能区分类型,可以保留原结构,新增一个“内容类型”字段,再按该字段筛选。这个方案改动小,旧文章补一个默认类型即可。
但如果“适用版本”本身需要独立页面、需要被多个教程引用、还需要记录版本号和发布日期,那么继续在文章表里加文本字段就不合适了。更合理的做法是建立独立的版本表,再与文章关联。此时应选择改写,而不是保留。
判断标准可以归结为一句话:新需求如果只是给旧对象增加描述,保留;如果新需求本身是一个需要独立维护、独立展示、被多处引用的对象,改写。
扩展数据字段本身不会自动带来排名变化,它影响的是内容组织能力和页面可维护性。先判断是加字段还是改关系,再决定是否动模板和迁移数据,这样后续每一步都有明确依据,而不是在旧结构上不断打补丁。