一种产品可以有多个品牌在生产,一个品牌又能生产多种产品,不同品牌间生产同类产品。简而言之,产品与品牌是多对多的关系。若然我需要在页面上的2个<select>内联动输出产品和品牌,有什么好办法吗?数据库表应该怎么建立?页面又如何联动读取数据呢?

解决方案 »

  1.   

    很简单,对于多对多的关系,一般需要建立关联表.
    1 数据库
    品牌表 品牌id,xxx
           关联表  品牌id ,产品id
    产品表 产品id,xxx
    2 页面联动,应用ajax来做.
      <select id='a1' onchange='xxx();'>
      </select>
      <select id='a2' onchange='xxx1();'>
      </select> 
     每个下拉框变化,都要触发onchange函数,向后台获取数据,以更新另一个下拉框.
    3 无论怎么样,不可能无限制的触发,只能有一主一从.
      主决定从,这是必须的.
      

  2.   

    多级联动 只要表和表有所关联!
    AJAX写的东西还好吧! 建议JQ写的!
    其实很好写的
      

  3.   

    http://blog.csdn.net/t240034137/archive/2009/12/17/5026243.aspx
      

  4.   

    ajax可以实现,我的博客里有个例子
      

  5.   


    我明白你的意思,其实也个想法我也会做。只不过建立一个关联表后,一会产生不少冗余数据,二会产生有大量行记录。要知道这世界上品牌多不胜数,产品种类更不可斗量
    你说的联动的方法我也能写出来,但是如我上面所说,要是在onchange或者jquery的change事件触发后才去查询数据量如此庞大的表,那客户的体验效果是如何的可以想象了吧?当然,可以说把change才出发改成导入页面就触发或者在某种情况下预先异步触发,效果可能会好些。但实际上我想向大家请教的重点不是在怎么实现联动上而是在怎么建立好这个多对多的关系上,然后再考虑联动的问题。
      

  6.   

    我不认为,关联表的数据是冗余数据,反之,这是最能表达两个表多对多关系的最好方法.
    至于大量的行记录也无可厚非,关联表,都是int类型,并不会占多大空间.
      

  7.   

    数据库多对多关系的建立,一般是jakey说的那种了。
      

  8.   

    另外我还想问,关联表中的品牌id 产品id是否要设为外键?若不需要,那么如何保持id的一致性?
      

  9.   


    关联表一个主键id, 品牌id, 和产品id, 用他们表的主键就可以了如 -- 关联表(id, pid, aid)