首頁 >後端開發 >php教程 >商品表 数据库设计

商品表 数据库设计

WBOY
WBOY原創
2016-06-06 20:46:431355瀏覽

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

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

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

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

回复内容:

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

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

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

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

尺码(chimas)表

<code class="lang-sql">id  |  mark
------------
1   |  X
2   |  XL
3   |  XLL
4   |  M
5   |  S
</code>

颜色(colors)表

<code class="lang-sql">id  |  color
------------
1   |  蓝
2   |  白
3   |  红
4   |  紫
5   |  灰
</code>

衣服(yifus)表

<code class="lang-sql">id  |  name
------------
1   |  大衣
2   |  毛裤
3   |  内衣
4   |  内裤
</code>

衣服与颜色关联(yifu_colors)表

<code class="lang-sql">id  |  color_id  |  yifu_id
----------------------------
1   |    1       |  1
2   |    1       |  2
3   |    2       |  1
4   |    2       |  2
</code>

衣服与尺码关联(yifu_chimas)表

<code class="lang-sql">id  |  chima_id  | yifu_id
----------------------------
1   |  1         |  1
2   |  2         |  2
3   |  1         |  2
4   |  2         |  1
</code>

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

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

前三个表引用二楼的

尺码(size)表

<code>id  |  mark
------------
1   |  X
2   |  XL
3   |  XLL
4   |  M
5   |  S
</code>

颜色(colors)表

<code>id  |  color
------------
1   |  蓝
2   |  白
3   |  红
4   |  紫
5   |  灰
</code>

衣服(clothes)表

<code>id  |  name
------------
1   |  大衣
2   |  毛裤
3   |  内衣
4   |  内裤
</code>

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

衣服样式表(clothes_spec)

<code>id | clothes_id | size_id | color_id
------------------------------------
 1 |      1     |    1    |     2
 2 |      2     |    1    |     2
 3 |      1     |    3    |     1
</code>

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

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

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

查询红色衣服有哪些尺码

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

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

商品表:

<code>good_id, title, cate_id
</code>

类目属性表:

<code>cate_id, attr_id
</code>

商品属性分类表:

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

商品属性详情表:

<code>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
</code>

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

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn