PostgreSQL中存储表行无重复组合并关联推荐产品的方案咨询
存储方案设计
核心表结构设计
你可以用3张表实现需求,兼顾查询效率和配置灵活性:
已有的
goals表(存储基础目标数据)字段 类型 说明 id int 主键,对应你现有目标的ID name varchar 目标名称,比如goal-1 goal_combinations表(存储所有唯一的目标组合)字段 类型 说明 id int 主键,自增 combination_sign varchar 唯一索引,存储升序排序后拼接的目标ID串,比如单目标存 1,双目标存3,4,三目标存1,3,4,保证同组合不管用户选择顺序如何都对应同一条记录goal_count tinyint 组合包含的目标数量,取值1/2/3,方便后续筛选统计 combination_product_bind表(存储组合和推荐产品的关联关系)字段 类型 说明 id int 主键,自增 combination_id int 外键,关联 goal_combinations表的idproduct_id int 外键,关联你的产品表id sort int 可选字段,同一个组合推荐多个产品时用来排序
业务使用逻辑
- 预先生成所有92种组合存入
goal_combinations表,因为数据量极小,完全不会有性能压力 - 前端用户提交选中的目标ID列表后,后台先将ID做升序排序,再用英文逗号拼接为字符串,直接用这个字符串去
goal_combinations表匹配combination_sign字段,就能拿到对应的组合ID - 用组合ID去
combination_product_bind表查询,就能拿到该组合对应的所有推荐产品
配置调整逻辑
要修改某个组合对应的推荐产品时,只需在后台管理界面勾选对应目标,系统自动生成排序后的combination_sign匹配到对应组合,即可直接新增/删除/修改绑定的产品,操作非常灵活。

内容的提问来源于stack exchange,提问作者user3177611
相关产品推荐
相关产品推荐

