商品规格设计

最近面试的时候遇到一个问题,大概意思是说商城一件衣服,颜色有蓝、白、黑,尺码有 S、M、L 码,不同的颜色和尺码搭配的价格和库存是不一样的,这种关系如何设计数据库呢?

在这里插入图片描述
示例图

之前也没用遇到过这种问题,第一感觉就是以衣服表为主表,再分表建立子表:颜色表和尺码表以及颜色-尺码管理表。

商品表字段(item):id name…
颜色表字段(color):id name item_id …
尺码表字段(chima):id name item_id …
颜色-尺码表(c-c):id item_id color_id chima_id number price …

回来后上网搜索了相关的内容,发现其实早就有这种 库存 SKU 的文章和设计,关于上面的问题有如下的具体解决方案

商品的无限规格实现
我们发现上面的衣服的库存量单位(SKU)便不再是该商品, 而是到具体属性组合出的规格, 每种规格可能会有不同的售价、运费与库存剩余情况, 所以用户在购买时, 不仅需要记录所购买的商品 ID, 同时也需要记录购买的该商品的具体规格 。
直观分析图示中的规格情况, 尺码、颜色属于衣服不同属性的名称, 与之对应的为属性可选择的的具体值, 属于一对多关系, 在 MySQL 数据库表结构中反应出为:

在这里插入图片描述
插入数据后:
在这里插入图片描述

symbol 字段是对指定商品 ID 下的属性值的一个序号标记, 是为了提高在后面使用到时的检索效率。该值在不同商品间可以重复, 在同一商品的属性中需要保证唯一。 以上就完成了商品 ID 为 128 的商品多属性的存储工作。 为了能够记录和快速查询出每种属性组合出的商品的价格、库存等信息, 我们还需要张表来维护这部分数据, 建立 item_sku 表:
在这里插入图片描述

将示例中具有三种颜色、三种尺码的属性数据生成 SKU 后的 item_sku 表数据图示:
在这里插入图片描述

从图中数据看出, 该商品共有 9 种不同规格可选, 那么这时在确定用户选择的某种规格的价格等信息时只需一条 SQL 语句即可完成:
在这里插入图片描述

总结
如何属性规则再多,也可以利用上述方法,如果设计运费还可以在 SKU 表中加入运费字段。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值