数据库设计-商品价格表的设计
比如是一件衣服,有不同的颜色,尺寸,质地等,价格也不同,这些数据该怎么在数据库中存储?数据库该怎么设计?下边这种实现方式可否?或者有没有更好的实现方式?
衣服表(clothes):id name
价格表(price):cid price color size texture
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
一张表基本上不可能,其实这个东西很没这么简单的,可以参考淘宝当SPU的设计,一个商品对应一个SPU,颜色、质地分别为不同的属性,每个属性有属性值,然后一个SPU下有多个sku也就是不同颜色的衣服,这样一来至少有4个表,其实还是不够(应该还有类目,品牌等等信息)。简单如下:
SPU表:
id name
0 衬衣
Property表:
id name
0 颜色
1 外壳颜色
PropertyValue表:
id name
0 白色
1 黑色
Property_PropertyValue表:关联表
id propertyId propertyValueId
0 0 1 //代表颜色为白色
1 1 1 //代表外壳颜色为白色
SKU表:
id sku spu_id propertyValue price
0 0001 0 0 100 //颜色为白色的衬衣,价格100块
--------------------分割线--------------------------------
如果你要做一个很强大的商品信息发布系统的话,上面的设计是个参考,自己参考淘宝的spu设计做过,确实很复杂。
这里我个人觉得还是两张表更加好(我们以京东的卖衣服为例):
衣服除了不同的颜色和不容的尺寸导致有不同的价格之外,其他的属性都是一样的,比如商品参数,商品简介;用户通过关键字搜索衣服,显示的内容是名字,价格,图片,所以我认为最好在第一张表中最好有ID,Name,Price, ImageURL,Count;Price这里的价格可以设置一个最低价格,用于引导用户进入,ImageURL就是封面图,Count可以用于计数出售的数量,每成交一件,就修改一次,如果想要做详细的统计,可以再查询第二张表,以确定什么尺码和颜色卖的更加好。当然,其他属性比如分类,价格区间等等只要属于商品固有属性的字段都在这张表。
第二张表就和你的思路设计就可以了,Cid可以用统计详细的尺寸颜色交易记录,粗略的销售统计只需要查询第一张表中的Count字段就可以了。
这样设计我觉得好一点,希望大家继续帮我提意见。
用一张表可以不? 我觉得你不能两张表,你这样做的话两张表通过什么关联? 把价格表作为参照表还是把衣服表作为参照表? 如果把价格表作为参照表,那么衣服中就需要有一个id,标记价格表中的某条记录,这样做倒是可以。如果衣服表作为参照,就需要在价格表中添加一个id,标记衣服表中的某条记录,这样的话,不同的价格对应同一条衣服记录,考虑到实际应用,比如卖出一件衣服,那你该如何对数据表进行更新?所以,我觉得衣服与价格并不是一对多的关系,而是一对一的关系,所以使用一张表是可以的,当然如果用两张表,需要把价格表作为参照表,也就是所谓的主表。 综合考虑,还是一张表比较好。
当然,这是我的一点点看法,希望能跟楼主讨论这个问题。
发表下个人看法,三个表:
基本信息表:
id productId sku name descrption imageUrl etc.
1 11 000x 手机1 手机手机 xxx.jpg
2 11 000y 手机1 手机手机 yyy.jpg
3 11 000z 手机1 手机手机 zzz.jpg
属性表:
id sku property value
1 000x 直板 1
2 000x 颜色 red
3 000x 智能 1
4 000y 直板 0
5 000y 颜色 blue
6 000y 智能 0
价格表:
id sku price discount
1 000x 2000 10%
2 000y 1000 20%
3 000z 1500 0