如图所示的商品分类,数据库应该怎么设计?
我自己的思路是用一张表来设计。
字段有:id,category_name,parent_id
其中放一个字段来存放父级分类的 ID。
还有个简单的做法,每一层分类都设计成一张表。
项目需求只涉及到三层分类,那么就三个表:一级分类表->二级分类表->三级分类表,从左至右,他们是一对多的关系。
但需求要求分类和商品是多对多的关系。一个商品可以有多种分类,一个分类对应多种商品。
这个时候,例如查询父级分类,要把所有该分类和子分类下的商品都查询出来,
像 ORM 的话,该怎么去查询呢?
请大家多多指教。
1
lasuar 2020-03-01 10:55:54 +08:00
三级体现在哪里?不是商品有个属性而已吗,分类,颜色,布局,语言四个字段,没理解对?
|
2
airyland 2020-03-01 10:56:26 +08:00
如果可以确定只有 3 级,直接保存 3 级的字段到商品表里,这样就可以查询任何一级的商品了。
|
3
onice OP @lasuar 我是这么理解的。一级是首页的分类,如下图示:
![www.erdangjiade.com2.png]( https://i.loli.net/2020/03/01/2f5F1cXpTneQiDt.png) 一级就是顶部的分类,有 js 特效,php/mysql 等,二级分类就是左侧的分类,有:模板分类,模板颜色,模板布局,模板语言,三级就是二级分类右侧的分类,例如模板分类右侧的不限,行业,商城。 |
5
imn1 2020-03-01 13:18:13 +08:00
级数不多,而且每节点有唯一父级,path 方式记录,这样组织分类不需要递归,可以直接查
|
6
Macolor21 2020-03-01 13:26:51 +08:00
这不是多级分类,而是规格属性,库存应是 SKU,商品货号是 SPU,大概是这样把。
详细设计参考电商: https://www.cnblogs.com/leefreeman/p/4060227.html |
7
jj783850915 2020-03-01 13:32:14 +08:00 via Android
同 6L 那这个相当于 sku 的 tag 分类应该是 数码产品>通讯工具>手机 这种类型等我
|
8
Macolor21 2020-03-01 13:33:19 +08:00
拿手机来说,
规格-->货品 ,规格=高通 865, 摄像头 1200W,分辨率多少,规格是通用的,可以绑定大的货品,如 iPhone11,小米 10 属性-->商品 ,金色 iPhone 128g. 属性和商品绑定在一起就成了 sku,实际的库存数量。 属性的金色相比规格,更不通用。 货品包含多个属性的商品 |
9
lasuar 2020-03-01 16:56:35 +08:00
@onice 贴图完整点嘛,看了首页图才明白你的意思。虽然可以把每级分类都作为字段,但这样不够灵活,特别是当有些商品只有 2 级分类,而有些商品增加到 4 级甚至更多分类的时候,这里通过 parent_id 的方式会更节省字段和灵活一点,要说递归查询的话也不会有多少速度影响,毕竟你的场景是商品分类,分类不会是无限级,分类表数据不会太大。
这样做的话 如果要查询 A 分类下的所有商品: 》根据 A 分类递归查询到最深层的所有分类 id 集合,然后使用 in typ_id_sets 查出所有的商品即可(商品的分类 id 字段表示最深层的分类) |
10
meteor957 2020-03-01 21:34:38 +08:00 via Android
最好 pid 关联下,3 级分类 根据需求后面大概率会变
|
11
abellee000 2020-03-02 03:28:00 +08:00 via Android
树状关系 可以参考 closure table
|
12
okchum 2020-03-02 05:27:50 +08:00
同 6 楼,这个不属于分类。这个功能更像 Filter,筛选 Attribute。
|