• 请不要在回答技术问题时复制粘贴 AI 生成的内容
onice
V2EX  ›  程序员

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

  •  
  •   onice · Mar 1, 2020 · 8656 views
    This topic created in 2438 days ago, the information mentioned may be changed or developed.

    www.erdangjiade.com.png

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

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

    字段有:id,category_name,parent_id

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

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

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

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

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

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

    请大家多多指教。

    Supplement 1  ·  Mar 1, 2020
    感谢大家的指教。由于项目是个人项目,为了加快开发进度,我把这个功能砍掉了,只留了一个大分类,就像是博客那样。
    Supplement 2  ·  Mar 3, 2020
    补充个完整的图:
    ![www.erdangjiade.com2.png]( https://i.loli.net/2020/03/01/2f5F1cXpTneQiDt.png)
    12 replies  •  2020-03-02 05:27:50 +08:00
    freemoon
    freemoon
    Mar 1, 2020
    1
    三级体现在哪里?不是商品有个属性而已吗,分类,颜色,布局,语言四个字段,没理解对?
    airyland
    airyland
    Mar 1, 2020
    2
    如果可以确定只有 3 级,直接保存 3 级的字段到商品表里,这样就可以查询任何一级的商品了。
    onice
    onice
    OP
    Mar 1, 2020
    3
    @lasuar 我是这么理解的。一级是首页的分类,如下图示:
    ![www.erdangjiade.com2.png]( https://i.loli.net/2020/03/01/2f5F1cXpTneQiDt.png)
    一级就是顶部的分类,有 js 特效,php/mysql 等,二级分类就是左侧的分类,有:模板分类,模板颜色,模板布局,模板语言,三级就是二级分类右侧的分类,例如模板分类右侧的不限,行业,商城。
    onice
    onice
    OP
    Mar 1, 2020
    4
    @airyland 这个方法可行。感谢!
    imn1
    imn1
    Mar 1, 2020
    5
    级数不多,而且每节点有唯一父级,path 方式记录,这样组织分类不需要递归,可以直接查
    Macolor21
    Macolor21
    Mar 1, 2020
    6
    这不是多级分类,而是规格属性,库存应是 SKU,商品货号是 SPU,大概是这样把。
    详细设计参考电商: https://www.cnblogs.com/leefreeman/p/4060227.html
    jj783850915
    jj783850915
    Mar 1, 2020 via Android
    7
    同 6L 那这个相当于 sku 的 tag 分类应该是 数码产品>通讯工具>手机 这种类型等我
    Macolor21
    Macolor21
    Mar 1, 2020
    8
    拿手机来说,
    规格-->货品 ,规格=高通 865, 摄像头 1200W,分辨率多少,规格是通用的,可以绑定大的货品,如 iPhone11,小米 10
    属性-->商品 ,金色 iPhone 128g. 属性和商品绑定在一起就成了 sku,实际的库存数量。 属性的金色相比规格,更不通用。 货品包含多个属性的商品
    freemoon
    freemoon
    Mar 1, 2020
    9
    @onice 贴图完整点嘛,看了首页图才明白你的意思。虽然可以把每级分类都作为字段,但这样不够灵活,特别是当有些商品只有 2 级分类,而有些商品增加到 4 级甚至更多分类的时候,这里通过 parent_id 的方式会更节省字段和灵活一点,要说递归查询的话也不会有多少速度影响,毕竟你的场景是商品分类,分类不会是无限级,分类表数据不会太大。
    这样做的话
    如果要查询 A 分类下的所有商品:
    》根据 A 分类递归查询到最深层的所有分类 id 集合,然后使用 in typ_id_sets 查出所有的商品即可(商品的分类 id 字段表示最深层的分类)
    meteor957
    meteor957
    Mar 1, 2020 via Android
    10
    最好 pid 关联下,3 级分类 根据需求后面大概率会变
    abellee000
    abellee000
    Mar 2, 2020 via Android
    11
    树状关系 可以参考 closure table
    okchum
    okchum
    Mar 2, 2020
    12
    同 6 楼,这个不属于分类。这个功能更像 Filter,筛选 Attribute。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1369 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 22:24 · PVG 06:24 · LAX 14:24 · JFK 17:24
    ♥ Do have faith in what you're doing.