찾다

 >  Q&A  >  본문

php - 商品表 数据库设计

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

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

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

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

大家讲道理大家讲道理2910일 전385

모든 응답(9)나는 대답할 것이다

  • 怪我咯

    怪我咯2017-04-10 14:44:39

    尺码(chimas)表

    1

    2

    3

    4

    5

    6

    7

    8

    <code class="lang-sql">id  |  mark

    ------------

    1   |  X

    2   |  XL

    3   |  XLL

    4   |  M

    5   |  S

    </code>

    颜色(colors)表

    1

    2

    3

    4

    5

    6

    7

    8

    <code class="lang-sql">id  |  color

    ------------

    1   |  蓝

    2   |  白

    3   |  红

    4   |  紫

    5   |  灰

    </code>

    衣服(yifus)表

    1

    2

    3

    4

    5

    6

    7

    <code class="lang-sql">id  |  name

    ------------

    1   |  大衣

    2   |  毛裤

    3   |  内衣

    4   |  内裤

    </code>

    衣服与颜色关联(yifu_colors)表

    1

    2

    3

    4

    5

    6

    7

    <code class="lang-sql">id  |  color_id  |  yifu_id

    ----------------------------

    1   |    1       |  1

    2   |    1       |  2

    3   |    2       |  1

    4   |    2       |  2

    </code>

    衣服与尺码关联(yifu_chimas)表

    1

    2

    3

    4

    5

    6

    7

    <code class="lang-sql">id  |  chima_id  | yifu_id

    ----------------------------

    1   |  1         |  1

    2   |  2         |  2

    3   |  1         |  2

    4   |  2         |  1

    </code>

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-10 14:44:39

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

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

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-10 14:44:39

    前三个表引用二楼的

    尺码(size)表

    1

    2

    3

    4

    5

    6

    7

    8

    <code>id  |  mark

    ------------

    1   |  X

    2   |  XL

    3   |  XLL

    4   |  M

    5   |  S

    </code>

    颜色(colors)表

    1

    2

    3

    4

    5

    6

    7

    8

    <code>id  |  color

    ------------

    1   |  蓝

    2   |  白

    3   |  红

    4   |  紫

    5   |  灰

    </code>

    衣服(clothes)表

    1

    2

    3

    4

    5

    6

    7

    <code>id  |  name

    ------------

    1   |  大衣

    2   |  毛裤

    3   |  内衣

    4   |  内裤

    </code>

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

    衣服样式表(clothes_spec)

    1

    2

    3

    4

    5

    6

    <code>id | clothes_id | size_id | color_id

    ------------------------------------

     1 |      1     |    1    |     2

     2 |      2     |    1    |     2

     3 |      1     |    3    |     1

    </code>

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

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-10 14:44:39

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

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

    查询红色衣服有哪些尺码

    1

    2

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

    </code>

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 14:44:39

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

    회신하다
    0
  • PHP中文网

    PHP中文网2017-04-10 14:44:39

    商品表:

    1

    2

    <code>good_id, title, cate_id

    </code>

    类目属性表:

    1

    2

    <code>cate_id, attr_id

    </code>

    商品属性分类表:

    1

    2

    3

    4

    <code>attr_id, attr_label, attr_key(做alias用), attr_sort

    1,  颜色, COLOR, 0

    2,  尺码, SIZE, 1

    </code>

    商品属性详情表:

    1

    2

    3

    4

    5

    6

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

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-10 14:44:39

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

    회신하다
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-10 14:44:39

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

    회신하다
    0
  • PHPz

    PHPz2017-04-10 14:44:39

    就楼上那几个的答案。。。以后要是出个手机,电脑什么的,岂不是得加一万张表,太逗了

    회신하다
    0
  • 취소회신하다