一个商城,产品有多类别,如手机,图书,衣服等,他们的属性都不一样,如
手机:型号,品牌
图书:作者,出版社
衣服:大小等等
那该如何设计数据库表呢?
分不同的表?不会吧?

解决方案 »

  1.   

    good(id,goodName),商品表
    good_property(id,goodId,propertyId),商品属性中间表property(id,propertyName)属性表
    property_value(id,propertyId,propertyValue)属性值表,一个属性可以有多个值 ,如品牌:诺基亚,三星等。
      

  2.   

    商城查询 主要操作都是分类查询,所以分表策略很好 。
    这样分表 有几个好处 ,首先  ,不同种类表可以放在不同服务器上, 如你所说,产品站内搜索 在各表间可以并行执行。  我们平时为防止多表查询,是为了防止多表 join 查询 ,你上面的情况都是在一个表里就可以做的 无需表连接
      

  3.   

    各位,非常感谢各位的解答,我参考了各位和ITeye上的一个网友的建议,我把我的思路写出来了,贴出来给大家看看,不足之处,欢迎大家拍砖商品表:product 
    商品:ID   
    商品类型:typeId   
    商品名称:name  
      
    商品类型表:type   
    商品类型:id   
    商品类型:typeName 类型属性表:property
    商品属性:id  
    商品类型:typeId   
    属性名称:propertyName 如款式、风格等   
      
    商品属性值表:property_value   
    商品:id   
    商品属性:propertyId 比如款式的商品属性ID   
    商品属性值:value 比如款式为拉链夹克  
      

  4.   

    个人感觉上面的设计  是 抽离出 属性和 产品的多对多关系,
    我到觉得有时候并没必要弄得规范化程度那么高啊。商品表:product商品id:poductId
    商品名称:productName
    商品类型:poductType
    服装表服装ID: id
    服装Name:name
    服装类型:type(鞋子,裤子)
    鞋子表:
    鞋子ID:id
    尺码:size
    详细介绍:detail
    裤子表:
    裤子长度:length
    裤子腰围: 腰围(英语不会)
    详细介绍:detail
    个人感觉分表设计不错,首先 服装ID参照产品ID, 鞋子ID参照服装ID分类搜索 ,比如鞋子 裤子 ,直接搜分表 ,站内搜索的时候可以搜product表, 一般搜索结果是  类型和名字,
    当用户点进网店的时候再来搜索详细信息,  也不需要连接查询。哈 我 还是学生没什么经验,不知在公司项目是怎么搞的
      

  5.   


    是啊,我刚开始也有过分表设计的想法,但是想想还是算了,分类很多,有十几二十种,单是这所建的表就不少,而且,站内搜索的时候,不能只单单根据product 和名字来查,如果有逛过淘宝的童靴们都有了解,搜索的时候,很多是根据属性搜索的。这个分表很难实现。
    昨天我看看淘宝的开放API,那个设计,我看的头大,很是杯具
      

  6.   


    如果分类很多 可以在类加载的时候读取出来放到内存中 如Map中这样效率会比较高了
    搜索商品的时候可以用lucene来实现的