欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

商品表 数据库设计

程序员文章站 2022-04-30 15:24:10
...
目前要做一个手机版商城, 在设计数据库时遇到该问题..

比如一件衣服,这件衣服有红色、白色、蓝色,
红色又有X,XL,XLL尺码,
白色有S,M,X,XL
蓝色有M,X,XL

对于自己设计的数据库一直感到不太满意,望各路大神,赐教.

此问题的引申 一般商场不可能只出售衣服 , 还有会有电子产品等等乱七八糟的 后期扩展性 要怎么办呢?

回复内容:

目前要做一个手机版商城, 在设计数据库时遇到该问题..

比如一件衣服,这件衣服有红色、白色、蓝色,
红色又有X,XL,XLL尺码,
白色有S,M,X,XL
蓝色有M,X,XL

对于自己设计的数据库一直感到不太满意,望各路大神,赐教.

此问题的引申 一般商场不可能只出售衣服 , 还有会有电子产品等等乱七八糟的 后期扩展性 要怎么办呢?

尺码(chimas)表

id  |  mark
------------
1   |  X
2   |  XL
3   |  XLL
4   |  M
5   |  S

颜色(colors)表

id  |  color
------------
1   |  蓝
2   |  白
3   |  红
4   |  紫
5   |  灰

衣服(yifus)表

id  |  name
------------
1   |  大衣
2   |  毛裤
3   |  内衣
4   |  内裤

衣服与颜色关联(yifu_colors)表

id  |  color_id  |  yifu_id
----------------------------
1   |    1       |  1
2   |    1       |  2
3   |    2       |  1
4   |    2       |  2

衣服与尺码关联(yifu_chimas)表

id  |  chima_id  | yifu_id
----------------------------
1   |  1         |  1
2   |  2         |  2
3   |  1         |  2
4   |  2         |  1

依你的需求里衣服包含款式、颜色、大小三个属性。 自然也就是对应四个逻辑数据表了。

你之前纠结的地方在于把颜色和大小附属于款式了。

前三个表引用二楼的

尺码(size)表

id  |  mark
------------
1   |  X
2   |  XL
3   |  XLL
4   |  M
5   |  S

颜色(colors)表

id  |  color
------------
1   |  蓝
2   |  白
3   |  红
4   |  紫
5   |  灰

衣服(clothes)表

id  |  name
------------
1   |  大衣
2   |  毛裤
3   |  内衣
4   |  内裤

第四个表可以是直接是衣服跟尺码和颜色的关联表

衣服样式表(clothes_spec)

id | clothes_id | size_id | color_id
------------------------------------
 1 |      1     |    1    |     2
 2 |      2     |    1    |     2
 3 |      1     |    3    |     1

第四个表这样做的好处是更清晰,因为少了一个表,查起来速度也快一点。但是不足是扩展起来比较麻烦,每添加一个属性就要向表中添加一个列。但是如果是商品量,用户量很大的情况下,这种方式还是比较有优势的。

扩展性是个问题,给出我的想法吧,坐等大牛给出扩展性好的方案:

id(商品id) name(商品名称) color(颜色) size(尺码) count(数量)
1 某衣服 red M 0
1 某衣服 red X 100
1 某衣服 red XL 200
1 某衣服 red XLL 300

查询红色衣服有哪些尺码

select size from table where id={id} and color='red' and count > 0

建议你去网上找关于库存SKU的文章和设计方法

商品表:

good_id, title, cate_id

类目属性表:

cate_id, attr_id

商品属性分类表:

attr_id, attr_label, attr_key(做alias用), attr_sort
1,  颜色, COLOR, 0
2,  尺码, SIZE, 1

商品属性详情表:

good_id, attr_value_id,attr_id, attr_value_title, attr_value_sort
1, 1, 1, 红色, 0
1, 2, 1, 蓝色, 1
1, 3, 2, 19, 0
1, 4, 2, 20, 1

如果你要考虑后期的扩展性,建议采用MySQL的EVA结构,不然上面的几种到扩展的时候,都比较麻烦。

这设计也太糟糕了。。SKU不能这么设计。

相关标签: php mysql web