数据表关系:
大类:
bigclass (id,name)
小类:(必属于某一大类,通过bid与大类关联;可能无子类,也可能拥有子类,子类通过sid与小类关联)
smallclass (id,bid,name)
子类:
cubclass (id,sid,name)
产品:(要么直接挂在小类上,sid关联,要么依靠cid联接子类)
product (id,sid,cid,name,...)因此,写入到table时,困难出现了,单选框因为字段名不同不可用,不知道怎么办才能将这sid、cid使得两个当中只有一个有效,另一个又作如何处理?或者提出另外的处理这复杂关系的办法。分不多,多说声谢谢,十分感谢,大恩不言谢

解决方案 »

  1.   


    1.category
    ===============
    cat_id cat_pid cat_name ..
    2.product
    ================
    id cat_id product_name
      

  2.   

    分类表这样做不太好用一个表就行了id  parentid   value
    1     0          大类
    2     0          大类
    3     2          小类 //属于 2 这个大类的
    4     3          子类  //属于 3 这个小类的
    5     4          产品  //属于 4这个子类的。
      
      

  3.   

    class (id,name,pid,map)
    用pid 来形成树形结构
    map 来形成路径。
    例如
    0 根类别    0  0
    1 大类别一  0  01
    2 大类别二  0  02
    3 类别1_1   1  013
    3 类别2_1   1  023然后产品就只要和class 的id 挂接就好了。
      

  4.   

    product (id,sid,cid,name,...)这里的sid和cid可能同时不为0吗?
      

  5.   


    | 大类 |
       |
       |
       |
    | 小类 |
       |   \
       |    \
       |  | 子类 |
       |    /
       |   /
    | 产品 |如上图,本来是无子类的,后来根据需要在其中一些小类上再细分化出子类。由此造成如此麻烦。如使用 cat (id,pid,path,name)
    下直接product (id,cat_id,...)
    那cat保存方式应为
    1   0   0     name_aa
    2   0   0     name_bb
    3   1   01    name_aa_1
    4   2   011   name_aa_1_1
    5   1   02    name_bb_1
    ....
    ....
    对吗?这种“树形”方法很好,但还有些问题:
    查询的时候通过path来判断大类是否有小类或小类是否有子类?
    这个判断式该是怎么写的呢?
      

  6.   

    select * from cat where pid=$pid结果集就是id为$pid的类别的子类或小类