商品多级分类数据库怎么设计 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
onice
V2EX    程序员

商品多级分类数据库怎么设计

  •  
  •   onice 2020-03-01 10:47:08 +08:00 7688 次点击
    这是一个创建于 2138 天前的主题,其中的信息可能已经有所发展或是发生改变。

    www.erdangjiade.com.png

    如图所示的商品分类,数据库应该怎么设计?

    我自己的思路是用一张表来设计。

    字段有:id,category_name,parent_id

    其中放一个字段来存放父级分类的 ID。

    还有个简单的做法,每一层分类都设计成一张表。

    项目需求只涉及到三层分类,那么就三个表:一级分类表->二级分类表->三级分类表,从左至右,他们是一对多的关系。

    但需求要求分类和商品是多对多的关系。一个商品可以有多种分类,一个分类对应多种商品。

    这个时候,例如查询父级分类,要把所有该分类和子分类下的商品都查询出来,

    像 ORM 的话,该怎么去查询呢?

    请大家多多指教。

    第 1 条附言    2020-03-01 20:14:56 +08:00
    感谢大家的指教。由于项目是个人项目,为了加快开发进度,我把这个功能砍掉了,只留了一个大分类,就像是博客那样。
    第 2 条附言    2020-03-03 11:28:11 +08:00
    补充个完整的图:
    ![www.erdangjiade.com2.png]( https://i.loli.net/2020/03/01/2f5F1cXpTneQiDt.png)
    12 条回复    2020-03-02 05:27:50 +08:00
    lasuar
        1
    lasuar  
       2020-03-01 10:55:54 +08:00
    三级体现在哪里?不是商品有个属性而已吗,分类,颜色,布局,语言四个字段,没理解对?
    airyland
        2
    airyland  
       2020-03-01 10:56:26 +08:00
    如果可以确定只有 3 级,直接保存 3 级的字段到商品表里,这样就可以查询任何一级的商品了。
    onice
        3
    onice  
    OP
       2020-03-01 11:22:03 +08:00
    @lasuar 我是这么理解的。一级是首页的分类,如下图示:
    ![www.erdangjiade.com2.png]( https://i.loli.net/2020/03/01/2f5F1cXpTneQiDt.png)
    一级就是顶部的分类,有 js 特效,php/mysql 等,二级分类就是左侧的分类,有:模板分类,模板颜色,模板布局,模板语言,三级就是二级分类右侧的分类,例如模板分类右侧的不限,行业,商城。
    onice
        4
    onice  
    OP
       2020-03-01 11:22:49 +08:00
    @airyland 这个方法可行。感谢!
    imn1
        5
    imn1  
       2020-03-01 13:18:13 +08:00
    级数不多,而且每节点有唯一父级,path 方式记录,这样组织分类不需要递归,可以直接查
    Macolor21
        6
    Macolor21  
       2020-03-01 13:26:51 +08:00
    这不是多级分类,而是规格属性,库存应是 SKU,商品货号是 SPU,大概是这样把。
    详细设计参考电商: https://www.cnblogs.com/leefreeman/p/4060227.html
    jj783850915
        7
    jj783850915  
       2020-03-01 13:32:14 +08:00 via Android
    同 6L 那这个相当于 sku 的 tag 分类应该是 数码产品>通讯工具>手机 这种类型等我
    Macolor21
        8
    Macolor21  
       2020-03-01 13:33:19 +08:00
    拿手机来说,
    规格-->货品 ,规格=高通 865, 摄像头 1200W,分辨率多少,规格是通用的,可以绑定大的货品,如 iPhone11,小米 10
    属性-->商品 ,金色 iPhone 128g. 属性和商品绑定在一起就成了 sku,实际的库存数量。 属性的金色相比规格,更不通用。 货品包含多个属性的商品
    lasuar
        9
    lasuar  
       2020-03-01 16:56:35 +08:00
    @onice 贴图完整点嘛,看了首页图才明白你的意思。虽然可以把每级分类都作为字段,但这样不够灵活,特别是当有些商品只有 2 级分类,而有些商品增加到 4 级甚至更多分类的时候,这里通过 parent_id 的方式会更节省字段和灵活一点,要说递归查询的话也不会有多少速度影响,毕竟你的场景是商品分类,分类不会是无限级,分类表数据不会太大。
    这样做的话
    如果要查询 A 分类下的所有商品:
    》根据 A 分类递归查询到最深层的所有分类 id 集合,然后使用 in typ_id_sets 查出所有的商品即可(商品的分类 id 字段表示最深层的分类)
    meteor957
        10
    meteor957  
       2020-03-01 21:34:38 +08:00 via Android
    最好 pid 关联下,3 级分类 根据需求后面大概率会变
    abellee000
        11
    abellee000  
       2020-03-02 03:28:00 +08:00 via Android
    树状关系 可以参考 closure table
    okchum
        12
    okchum  
       2020-03-02 05:27:50 +08:00
    同 6 楼,这个不属于分类。这个功能更像 Filter,筛选 Attribute。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     967 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 22:04 PVG 06:04 LAX 14:04 JFK 17:04
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86