字段不够用,先别急着推翻重做。多数情况下,真正要判断的是:这次扩展是"补字段"还是"改结构"。如果新增信息只是给已有记录加一个可选属性,改字段就够;如果新增信息会改变记录之间的关系,比如一个客户对应多个联系人、一个订单对应多次跟进,那就属于结构变化,继续在旧表上加列只会越加越乱。下面按"保留、改写、退出"三种取舍,说明各自成立的前提和判断证据。
字段不够用有两种完全不同的表现,处理方式也不同。
区分方法很直接:问新增的信息"每条记录最多有几份"。答案恒为一份,就是属性;答案不确定、可能多条,就是关系。这个判断决定了后面是加列还是建新表,做错方向会让后续每次扩展都更贵。
保留原结构、只做增量扩展,成立的前提有三个:新增项是单一值;旧数据允许留空;现有查询和页面不依赖这个字段的必填性。
具体动作是新增字段时设为可空,并给一个明确的默认值或"未填写"状态,而不是硬塞一个占位内容。这样做的直接结果是:历史记录不会因为缺值而报错,新记录可以逐步补齐,页面渲染逻辑只需处理"有值显示、无值隐藏"两种情况。
假设一个本地服务类站点,上线后想给每条咨询记录加"意向等级"。每条咨询只有一个等级,旧记录可以先留空,前台也不展示这个字段——这就适合加列。反过来,如果想记录"这条咨询被哪几个客服先后跟进过",一条咨询对应多人多时点,加一列就装不下,应该考虑改写。
保留策略的代价是字段会逐渐增多,列表和表单越来越长。可以接受的前提是:新增频率低,且每个字段都确实有人看、有人填。如果加了半年没人用,说明问题不在字段数量,而在需求没想清楚。
出现下面任一证据,就该从加字段转向改结构:
改写的动作是抽出子表,用关联标识把主记录和子记录连起来。结果是查询变灵活,但代价是表单和后台要同步改,旧数据需要迁移映射。执行前先做一次小范围试跑:只迁移少量记录,确认列表、详情、筛选三处都能正常显示,再决定是否全量迁移。如果试跑中发现旧数据存在无法映射的脏值,先清洗再迁移,不要带着脏数据改结构。
直接重做整站,只有在结构问题已经渗透到内容、链接和表单多处、且增量修补的成本高于重建时才成立。判断依据不是"字段乱",而是:
如果只是几个字段不够用,重做属于过度反应。更常见的合理路径是先改写数据层,保留前台页面和已有链接,把结构调整限制在后台和接口,减少对已发布内容的冲击。
不管选哪条路,动手前先记录当前状态:导出字段清单、统计每个字段的实际使用情况、列出正在依赖这些字段的页面和查询。扩展完成后,用同一份清单对照,确认哪些字段被替代、哪些仍在使用。这样做的价值在于,如果扩展后出现异常,你能快速判断是字段问题、迁移问题还是页面逻辑问题,而不是凭感觉回滚。
需要提醒的是,后台显示正常、前台却缺内容,或者抓取量、请求量短期波动,都不能单独证明扩展做对了或做错了——这些现象还可能来自缓存、发布节奏或访问来源变化。把字段清单、页面清单和迁移记录放在一起核对,才是可复用的判断依据。