先判断一件事:你缺的是“字段”还是“结构”。如果只是某个内容类型少了一两个属性,多数CMS可以在不改代码的前提下加字段;如果缺的是内容之间的关联、版本关系或权限维度,加字段只会把问题推迟。下面的取舍按这个分界展开。
不要急着改表结构。先拿一张纸,把“不够用”的地方写成三列:展示缺什么、录入缺什么、查询或权限缺什么。三列的扩展成本差别很大。
这个分类的价值在于:它让你在动手前就知道,自己是在做一次小改,还是在动数据模型。分类结果直接决定下一步是“保留并扩展”还是“评估退出”。
当新需求仍然落在同一个内容类型里,且不需要跨类型聚合时,扩展是首选。判断依据可以看三条:
假设一个场景:某站的文章类型原本只有标题、正文、封面,上线后运营希望每篇文章标注“适用地区”。这是典型可扩展场景——加一个文本或枚举字段,给历史文章填一个“全国”默认值,模板里输出即可。这里的关键动作是先在一个内容类型上试加字段并导出一次数据,确认导出结果包含新字段且旧内容不报错;只有这一步通过,才值得批量推广到其他内容类型。
反过来,如果新需求是“一篇文章要对应多个作者,每个作者有独立简介页”,那就不是加字段能解决的,它涉及内容之间的关联关系。此时继续加字段,只会得到一串用分隔符拼起来的文本,后续无法可靠查询。
当缺的维度会反复出现、并且需要被筛选或复用,改写比加字段更稳。改写的常见形式有三种:把重复字段抽成独立内容类型、把单选改成可多选、把写死在模板里的值移到可配置项。
改写成立的前提是:你愿意承担一次数据迁移,并且有可回滚的备份。具体动作是先在测试环境复制一份数据,跑一遍迁移脚本,核对记录条数与关键字段是否一致;确认无误后再在生产环境执行。如果迁移后出现部分内容丢失关联,说明映射规则还没覆盖全部旧值,应停止推广并回到映射表修正,而不是继续往前推进。
需要提醒的是,改写会改变编辑的录入习惯。上线前应让实际录入的人试填几条,确认新结构没有增加无谓步骤。这一步省掉,后面往往会出现“字段加了但没人填”的情况。
退出不是失败,而是一种成本判断。以下情况值得认真评估更换:
评估退出时,先做一个可执行的最小动作:把现有内容导出为通用格式,检查字段是否完整、关联是否可还原。如果导出后关键关系丢失,说明迁移成本被低估,应重新估算;如果导出结构清晰,迁移才有讨论基础。这个动作的结论只能说明“数据可迁移性如何”,不能推出“换系统一定更好”,也不能说明新系统就适合当前团队。
扩展完成后,不要只看后台能不能填。至少验证:前台详情页是否正确输出新字段;列表或筛选页是否按预期过滤;导出与备份是否包含新字段。三者缺一,都会在后续维护中变成隐性债务。
如果暂时缺少完整数据或权限,无法做全量验证,可以先在一个内容类型、少量记录上完成上述三项检查,再决定是否扩大范围。这样的最小验证不能证明整体方案无风险,但能排除最明显的结构错误,为下一步决策提供依据。