有一个JSP+STRUTS的电子商务的项目。
但遇到个问题:
当卖家上传商品时,不同的商品有不同的属性,如:手机(铃声,屏幕颜色,有无摄相头。。),
运动鞋(尺码,颜色。。。)。这些属性如何存储在数据库中,如何建表?一个网站有几百种商品,难道要建几百张表?,还是把所商品的属性都放在一张表里,那表的字段也太长了吧。
比如:手机(铃声:60和铉,屏幕颜色:黑色,有无摄相头:有)
运动鞋(尺码:42,颜色:白色)
那数据库的表是不是应该这样建:
商品ID 商品名 铃声 屏幕颜色 有无摄象头 尺码
001 手机 60和铉 黑色 有 NULL
002 运动鞋 NULL 白色 NULL 42
问题二:
根据上传的商品种类,如何动态的生成不同商品的上传表单?
根据商品属性来动态的生成表单就是:
类似掏宝网一样,当卖家上传商品时,页面会让卖家先选择上传什么类型的商品,如果选择“手机”,则接下来的表单会有“屏幕颜色”,“有无摄象头”,“铃声”属性需要卖家填写,如果上传“运动鞋”,会有“尺码”,“颜色”属性需要卖家填写。
如果商品种类少还好,但几百种商品,有N种属性,不知道如何生成。请多指教。
------解决方案--------------------
淘宝的分类是非常细的。。。而且每个分类的属性都不一样。。。所以小项目要搞成那样子很难。。。
------解决方案--------------------
问题一:
你可以建3个表(表1和表2也可以合成一个表)
表1(商品类型表):
id(自增) name
1 手机
2 运动鞋
表2(商品属性表):
id(自增) 商品ID 商品属性
1 1 铃声
2 1 屏幕颜色
表3(商品表):
id(自增) 商品名 所属类型 商品属性值(将属性的值根据表2中的属性按顺序写入)
1 诺基亚手机 1 60和铉,黑色,...
2 耐克运动鞋 2 *,*,*,.....
问题二:
直接根据商品类型从表2中取出商品属性就行了。
------解决方案--------------------
lz这种数据库设计肯定是不行的,需要优化,优化程度根据你做的项目的规模。
其实你可以将数据库设计成两个个表格:一、商品类别,二、具体商品的表格。
比如:手机类和鞋类。不同型号的手机都具备相同的属性字段,只是属性内容不一样罢了。
当然设计时,第二个表格中要有一个商品类别属性字段,约束于第一个表格。
如果考虑到第二个问题的话,则需要再添加一个表格:种类属性表。将每个商品所属的类别(约束于表格一)与具有的属性写入即可。
------解决方案--------------------
Terry_Y(饿狼)还不错,就是如果这样建表的话,理解上挺难的,其实建数据表一定要符合一定的范式规则
------解决方案--------------------
Terry_Y(饿狼)的想法和我的差不多
如果是个小型的交易平台 没必要搞那么复杂
每款商品的属性 可以定义在表单里
让电子商务管理员自己添加商品的一些基本属性即可
商品ID 商品名 铃声 屏幕颜色 有无摄象头 尺码
001 手机 60和铉 黑色 有 NULL
002 运动鞋 NULL 白色 NULL 42
你这多麻烦啊?
手机类→品牌→型号→产品属性(一个大表单什么像素啊和铉啊颜色啊价钱啊)
产品属性让管理员自己写.
------解决方案--------------------
商品的值应该是选择的
商品类别表
类别id 类别名称 父类id
类别属性表
类别id 属性id 属性名称
属性值表
类别id 属性id 属性值
商品表
商品id 大类id 小类id 图像 属性值
属性值只存放对应商品属性的值 不同属性间用分隔符| 同属性多值用,分隔
这样还可以满足自定义属性
------解决方案--------------------
表一:sub (商品分类) id(自增) , 名字 , 备注, ....
表二:product (商品) id(自增) , sub_id , 名字, 备注, ....
表三:Attribute(商品属性) id(自增) , prod_id , 名字, 备注, ....
这样应该能适应你的要求了