我现在要做的这个网站产品展示菜单是这样的产品展示 (第一层)
---------
自动门系列
自动门配件
门禁系列
隔断系列
五金系列自动门系列 (第二层)
---------
自动平滑门
自动弧型门
自动套叠门
自动旋转门
自动平开门
医用密闭门
特种自动门
地铁屏蔽门
直角自动门自动门配件 (第二层)
----------
平滑门马达
旋转门马达
马达编码器
齿轮减速箱
自动门吊件
自动门滑轮
门用传感器
电脑控制板
电子元器件
同步皮带轮
同步齿型带平滑门马达 (第三层)
----------
交流数字伺服马达
直流有刷伺服马达
直流无刷伺服马达
空心杯转子直流无刷伺服马达
旋转门马达 (第三层)
---------
交流数字伺服马达
直流有刷伺服马达
直流无刷伺服马达
空心杯转子直流无刷伺服马达
我的问题是
想做动态添加类别和跟据类别添加产品,动态显示产品菜单和跟据菜单链接来显示该类别的产品我的想法是只设两个表class和product
考虑到要只用一个products.aspx页来搞定全部的功能,我的数据库设计方面没有头绪望有经验的同志给点意见

解决方案 »

  1.   

    我看到我给的分数比较少,这是因为我第一次来这个论坛,第一次发贴 还有这是我的第一个asp.net网站 总之是新手一个,望各位不吝赐教我看到CSDN网站在这个问题上做得不错,不知道他们的思路是如何的
    在线等 呵呵~
      

  2.   

    id        自动增长记录ID
    parentid   如果是第一层设为0,如果是第二层设为第一层所在的id,如果是第三层设为第二层所在的id
    content   所显示的内容
    这是个无限级的树数据库
    读取的时候
    第一层 parentid=0
    第二层 parentid=第一层的id
    第三层 parentid=第二层的id
    ................
      

  3.   

    我这样考虑过,这样对于实现显示菜单是完全可以的
    但是要和product表中的外键classid关联我的麻烦在于:点击第二层菜单(如自动门配件)时,页面也要显示点东西呀,而product表中的classid有可能是第四层的(平滑门马达-交流数字伺服马达),这样一来在点击自动门配件时则会显示“无记录”,我想要的是怎样知道产品类别的上级就是第二层的“自动门配件”,而且连接查询也有一个麻烦的就是我不知道这个产品类别目前是几级所以数据库就不会设计了,呵呵~
      

  4.   

    就是说如果是最末级:
    "select * from product where classid="+Request["id"];
    如果不是则
    select maxcls as max(级数) from class union select mincls as min(级数) from class where id="+Request["id"]; //获得当前级和最高级(分类越往下级越高)
    然后
    string strsql="select * from class where classid in (";
    for(int i=1;i<=maxcls-mincls;i++)
    {
     if(i==maxcls)
      strsql+= "select id from class where parentid=" + Request["id"];
     else
      strsql+= "select id from class where parentid in (";
    }strsql+= new string(')',maxcls-mincls);最后生成的SQL查询语句可能会这样:
    string strsql="select * from class where classid in (select id from class where parentid in (select id from class where parentid=11)); //11为Request["id"]所获值我只知道这样一个写法,不知道有没有更好的,还有这样做效率会不会太差了
      

  5.   

    最后生成的应该是:
    string strsql="select * from product where classid in (select id from class where parentid in (select id from class where parentid=11))"; //11为Request["id"]
      

  6.   

    这样恐怕一个Class表不能完成吧。