想复杂了!班级表:id   名称             根     一级    二级
1    “一年级一班”   X学校  一年级  一班
2    “二年级一班”   X学校  二年级  一班老师班级对应表:
老师id  班级id
1        1
1        2检索出所有属于一年级的项目:
where 一级='一年级'某老师既教“一年级一班”又教“二年级一班”,查询一年级的老师:
select distinct 老师id
from 老师班级对应表
where 班级id in (select id from 班级表 where 一级='一年级')

解决方案 »

  1.   

    同意Haiwer,这是设计关系数据库的基本思路,这就是最基本的“关系”
      

  2.   

    http://expert.csdn.net/Expert/topic/1375/1375432.xml?temp=.8956873
      

  3.   

    Haiwer(海阔天空),CrazyFor(蚂蚁):
        我个人的意见是树的好坏在二个方面:
        一、树的可扩充性,这方面链表理论上是没有限制的,但编码的方式由于受到编码长度的限制,其结构受到了很大的限制。
        二、结构检索的效率,例如要检索某一级分类的所有子分类,那么用链表必须首先使用递归检索出所有属于此分类的所有ID然后用where ID in(1,2,3...)的方式的方式检索出相应的子分类,可见使用递归检索ID时效率本就很低,然后使用可能是SQL中效率最低的in,在层数、分类较少的情况下效率还可以,但随着层数、分类的不断扩充效率低就不用说了。而使用编码的方式只需要用lile '01%'就可以检索出所有的子分类,如果对编码的字段建立索引,而需要like的是后模糊检索,其效率比链表不知要好多少倍。
        三、编程的效率,综合上面的结论,很容易知道,在层数、分类较少的情况下链表是很好的工具,但在多层次下编码的效率应该是最高的,并且其程序设计也很简单,无须又检索ID又in(...)。
        回到我的问题,实际上这个问题与使用何种树并没有关系,因为使用链表和编码这些都只是在分类管理中的效率,但在一个老师对应多个班级时并不只是部门检索的问题,而是通过已知道的部门ID检索出属于这个部门的记录,对链表和编码实际上都是一样的。