商品表 数据库设计

WBOY
Release: 2016-06-06 20:46:43
Original
1338 people have browsed it

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

比如一件衣服,这件衣服有红色、白色、蓝色,
红色又有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>
Copy after login

颜色(colors)表

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

衣服(yifus)表

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

衣服与颜色关联(yifu_colors)表

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

衣服与尺码关联(yifu_chimas)表

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

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

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

前三个表引用二楼的

尺码(size)表

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

颜色(colors)表

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

衣服(clothes)表

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

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

衣服样式表(clothes_spec)

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

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

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

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>
Copy after login

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

商品表:

<code>good_id, title, cate_id
</code>
Copy after login

类目属性表:

<code>cate_id, attr_id
</code>
Copy after login

商品属性分类表:

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

商品属性详情表:

<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>
Copy after login

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

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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template