http://www.360buy.com/products/1620-1621-1626-0-0-0-0-0-0-0-1-1-1.html
这是京东的产品页京东的产品属性分为
第一种  一种是主分类 例如: 首页 > 家居、厨具、家装 > 家纺 > 床品件套 第二种  是下面的 商品筛选  有类别 品牌 规格 价格 这些可以交叉查询 我分类设计成2张表 一张是主表 保存主分类 另外一张表是辅助表 保存 辅助分类的(就是类别 品牌 规格等东西)在输入产品的时候 主表的数据可以保存到属性表  采用线性设计 
ID 产品ID 分类ID  前台搜索该分类下面的产品的时候 是没问题的 而辅助分类表的属性保存就麻烦了
采用分字段设计 肯定是行不通的,只有采用线性设计 不如有该页面的品牌 富安娜 类别的 三件套 
数据库设计ID 产品ID 辅助分类ID再前台查询的时候 根据主分类毕竟容易 可以直接在主属性表里面查询分类ID就可以得到要找的产品当涉及到辅助分类交叉查询的时候就犯难了,不知道怎么查询了 先根据主表查询主分类ID 得到所有产品列表 再根据这些列表查询辅助分类属性表 交叉 如果同时满足 富安娜 三件套 那么就必需满足 产品=床品套件 品牌=富安娜 类别=三件套 难道这样查询 产品主分类ID=床品套件 然后 辅助分类ID in(富安娜,三件套) ? 或者辅助分类表和主分类表合并成一张表直接 分类ID in(床品套件,富安娜,三件套)? 这时就糊涂了 想不通了 模糊的感觉 这样查询都是错误的 

解决方案 »

  1.   

    对照京东的产品属性页
    第一种 主分类   例如: 首页 > 家居、厨具、家装 > 家纺 > 床品件套
    第二种 筛选分类 例如: 类别 品牌 规格 价格 这些可以交叉查询我设计成2张表 
    一张是主表 保存主分类 另
    外一张表是辅助表 保存 辅助分类的(就是类别 品牌 规格等)在输入产品的时候 主表的数据可以保存到属性表 采用线性设计  表1(主分类属性表)
    ID 产品ID 分类ID 
    1  11     13前台搜索该分类下面的产品的时候 是没问题的  而辅助分类表的属性保存就麻烦了
    采用分字段设计 肯定是行不通的,只有采用线性设计 比如有该页面的品牌 富安娜 类别的 三件套  
    数据库设计表2(辅助分类属性表)
    ID 产品ID 辅助分类ID
    1   11    富安娜
    2   11    三件套
    3   11    浪漫婚庆
    在前台查询 主分类的产品 可以直接在表1 根据ID查询到产品ID当涉及到表2的时候就不知道怎么查询了?  在该页面 我要查询 床品套件下面的 富安娜 三件套 符合这三个条件的产品 ?怎么查?
      

  2.   

    表:
    1:类表表 A
    2:品牌表 B
    3:规格表 C
    ......
    10:工艺表
    11:产品表(类别ID,品牌ID,规格ID)F查询
    select a.name,b.name,c.name from F inner join A on F.类别ID=A.类别ID inner join b on .....我觉得应该是这样设计的。
    ID作为主键关联,多表查询效率也不会很差。
      

  3.   

    http://www.cnblogs.com/ivony/archive/2008/08/15/1269034.html http://www.qiyeku.com/news/1241816/发2个帖子 一个使用了京东的方案一个把京东的方案扁的一文不值
      

  4.   

    lz好像把商品的分类与商品的属性混淆了。举个例子:商品的分类如下:
    <xml>
        <one id="01 000 000" attr="图书、音像">
            <two id="01 001 000" attr="音像">
                <three id="01 001 001" attr="音乐"></three>
                <three id="01 001 002" attr="影视"></three>
                <three id="01 001 003" attr="教育音像"></three>
            </two>
            <two id="01 002 000" attr="文艺">
                 ...
            </two>
        </one>
        <one id="02 000 000" attr="手机数码">
           ...
        </one>
        <one id="03 000 000" attr="家用电器、汽车用品">
           ...
        </one>
        ...
    </xml>假设id长度为8,前两位表示第一级菜单,中间3位表示第二级菜单,后面3位最后级菜单就拿床上4件套来举例,商品本身的属性有:
    品牌,价格,风格,工艺,...等.
    这些属性也可以用xml来表示,比如价格:
    <xml>
        <element>1-99</element>
        <element>100-199</element>
        <element>200-299</element>
        <element>300-399</element>
        ....
    <xml>如果床上4件套分类菜单时的id是 09 021 039
    将所有分类和此分类包含的商品属性做关联,
    那我通过039这个尾号就可以找到所有此类商品的所有属性了。