先给结论:字段不够用通常不是“加一列”就能解决,而是要先判断新增信息属于哪一类——是原有实体的补充属性、还是需要独立成表的新实体。前者可以低风险扩展,后者若继续塞进旧表,往往会让发布、筛选和推广落地页一起变脆。下面用一个假设情境把决策过程串起来。
假设某企业站上线时只卖一类设备,产品表里只有名称、型号、价格、简介四个字段。上线半年后业务扩展到三条产品线,每条线都有自己的参数、适配场景和交付周期,推广落地页还要求按参数筛选。这时如果继续在原表加“参数一”“参数二”“参数三”,短期能发布,长期会出现三个后果:字段含义随产品线漂移、筛选条件写死在模板里、推广页与详情页数据口径不一致。
判断依据可以看一条:新增信息是否只对部分记录有意义。如果只对部分记录有意义,且数量会继续增长,就应拆成独立结构;如果对所有记录都成立、数量固定,才适合直接加字段。
适合新增属性稳定、数量可预期的情况。比如所有产品都要增加“是否支持定制”这一项,取值只有是或否,且未来不会衍生出多个子项。动作是:先在测试环境加字段并回填历史数据,再改发布表单和前台模板,最后检查列表页、详情页、筛选页三处是否都读到同一来源。结果如果三处一致,说明可以进入下一步;如果只有详情页正常,说明模板层还有硬编码,需要先清理再继续加字段。
适合“一对多”关系。比如一个产品对应多条技术参数,每条参数有名称、数值、单位、排序。此时应新建参数表,用产品标识关联,而不是在主表里不断加列。动作是:先定义参数的可选名称集合,避免同一含义出现“功率”“额定功率”“输出功率”三种写法;再把前台筛选改为按参数表查询。结果会直接影响推广落地页——如果筛选逻辑仍读主表字段,扩表后页面会显示为空或报错,必须先改查询再上线。
这里有一个可区分的证据:如果只有推广页筛选异常,而站内搜索正常,问题多半在落地页查询条件;如果两者都异常,问题更可能在数据结构或关联关系本身。
这套顺序的核心不是追求一次设计完美,而是让每次扩展都能被验证:结构变更影响录入,录入影响展示,展示影响推广承接。任何一步结果异常,都说明下一步不应继续。
如果出现以下情况,继续加字段的维护成本会超过重建成本:同一含义在不同记录中写法不统一、筛选条件已经无法用简单规则描述、推广页需要为每条产品线单独写一套查询。此时更合理的动作是先冻结新增字段,梳理现有数据的实际取值分布,再决定是迁移到新结构还是保留旧结构做兼容。这个判断不依赖某个工具或平台,只取决于数据关系是否已经超出原设计的表达能力。
扩展字段本身不是问题,问题是把不同关系类型的信息混在同一层。先分清补充属性和独立实体,再按录入、展示、推广承接的顺序逐层验证,才能让上线后的这次扩展不变成下一次返工的起点。