有一个JSP+STRUTS的电子商务的项目。
但遇到个问题:
  当卖家上传商品时,不同的商品有不同的属性,如:手机(铃声,屏幕颜色,有无摄相头。。),
运动鞋(尺码,颜色)。这些属性如何存储在数据库中,如何建表?一个网站有几百种商品,难道要建几百张表?,还是把所商品的属性都放在一张表里,那表的字段也太长了吧。
比如:手机(铃声:60和铉,屏幕颜色:黑色,有无摄相头:有)
运动鞋(尺码:42,颜色:白色)那数据库的表是不是应该这样建:商品ID 商品名 铃声    屏幕颜色 有无摄象头 尺码
001    手机   60和铉   黑色       有      NULL
002    运动鞋   NULL   白色       NULL     42
问题二:
根据上传的商品种类,如何动态的生成不同商品的上传表单?根据商品属性来动态的生成表单就是:
类似掏宝网一样,当卖家上传商品时,页面会让卖家先选择上传什么类型的商品,如果选择“手机”,则接下来的表单会有“屏幕颜色”,“有无摄象头”,“铃声”属性需要卖家填写,如果上传“运动鞋”,会有“尺码”,“颜色”属性需要卖家填写。
如果商品种类少还好,但几百种商品,有N种属性,不知道如何生成。请多指教。

解决方案 »

  1.   

    问题一:
    你可以建3个表(表1和表2也可以合成一个表)
    表1(商品类型表):
    id(自增)   name
    1          手机
    2          运动鞋表2(商品属性表):
    id(自增)  商品ID  商品属性
    1         1       铃声
    2         1       屏幕颜色表3(商品表):
    id(自增)  商品名      所属类型  商品属性值(将属性的值根据表2中的属性按顺序写入)
    1         诺基亚手机  1         60和铉,黑色,...
    2         耐克运动鞋  2         *,*,*,.....问题二:
    直接根据商品类型从表2中取出商品属性就行了。
      

  2.   

    Terry_Y(饿狼)还不错,就是如果这样建表的话,理解上挺难的,其实建数据表一定要符合一定的范式规则
      

  3.   

    Terry_Y(饿狼)的想法和我的差不多
    如果是个小型的交易平台 没必要搞那么复杂
    每款商品的属性 可以定义在表单里
    让电子商务管理员自己添加商品的一些基本属性即可商品ID 商品名 铃声    屏幕颜色 有无摄象头 尺码
    001    手机   60和铉   黑色       有      NULL
    002    运动鞋   NULL   白色       NULL     42你这多麻烦啊?
    手机类→品牌→型号→产品属性(一个大表单什么像素啊和铉啊颜色啊价钱啊)
    产品属性让管理员自己写.
      

  4.   

    商品的值应该是选择的
    商品类别表
    类别id 类别名称 父类id
    类别属性表
    类别id 属性id 属性名称
    属性值表
    类别id 属性id 属性值
    商品表
    商品id 大类id 小类id 图像 属性值
    属性值只存放对应商品属性的值 不同属性间用分隔符| 同属性多值用,分隔
    这样还可以满足自定义属性
      

  5.   

    表一:sub (商品分类) id(自增)  , 名字 , 备注, ....
    表二:product (商品) id(自增) , sub_id   , 名字,  备注, ....
    表三:Attribute(商品属性) id(自增) , prod_id   , 名字,  备注, ....
    这样应该能适应你的要求了