第二种更好,产品BOM用第二种更方便

解决方案 »

  1.   

    第一种非常灵活,且应用面可以推广,但逻辑性比较强(相对2来说)
    建议结构稍加入进
    tablename
    class          /*分类代号*/
    classname      /*分类名称*/
    parentclass    /*父类,0表示大类,没有父类*/
    easycode       /*结点简码*/    可以方便多级使用,减少了树结构带来的复杂查询
      

  2.   

    table2     /*子类表*/
    class1         /*大类分类代号*/
    class2         /*小类分类代号*/
    class2name     /*小类分类名称*/上表有些意思,但...下面的表定义,可以存放n级分类:
    tableN    /*n级分类表*/classP         /*所属父类代号*/
    classC         /*子类代号*/
    classCName     /*子类名*/
    LevelC         /*所处级次*/
      

  3.   

    LevelC         /*所处级次*/
    这个字段没有必要要,会增大编程的难度,每次都要算
      

  4.   

    第一种比较好,工作中碰到树的目录结构都是用这种的LevelC         /*所处级次*/
    还是可以保留的,
    其实这个字段是个冗余字段,因为遍历的时候可以得到属于LevelC
    但的却加上这个字段可以简化一部分针对所处级次的运算,
    如我一个很深的节点,我想知道他属于哪个级次的节点虽然我知道他的父再去递归运算,当然也可以,
    但统计的时候就慢了,有时候必要的冗余还是需要的。
      

  5.   

    赞同 Qihua_wu(小吴) 的观点,但节点简码怎么设计比较方便呢?希望大家讨论。
      

  6.   

    结点简码按下属方法:
    第一级,设为A
    第二级则设为AA,下一个分支就AB,再分支就AC。
    以此类推,我就不信你的树结点会超过varchar(8000)
      

  7.   

    这种最好用内连接的表结构--扩展性好~~
    T_Organ(OrgID,OrgNote,ProOrgID,NodeGrade)
            机构代码,机构描述,父机构,节点级别
      

  8.   

    这种最好用内连接的表结构--扩展性好~~
    T_Organ(OrgID,OrgNote,ProOrgID,NodeGrade)
            机构代码,机构描述,父机构,节点级别
    自己补充一下
    对于NodeGrade字段确实是各冗余字段,但是在节点比较多,层次深的应用中这个字段可以简化你的查询等操作;当然上边提到的"简码"也可以减少查询的难度,但要组建一个编码规则,查询时要用到字符处理函数我的设计数据库的原则是:使用适当的冗余数据,提高较高的效率.