欲开发一个书店系统,据需求中的要求为同一本书需可于多个类别中出现。如卓越的:
您可以用以下几种方式找到此商品
图书 > 计算机与互联网 > 程序语言与软件开发 > Web开发 > PHP 
图书 > 计算机与互联网 > 数据库 > MySQL 
按我的思路则只能是将这本书的分类存储多个类id,然后使用find_in_set查询,又或是利用标签的方式,将中文存入字段然后用like查询,但这两个方法的效率都很低,书的数据量据说超过20W本。因为之前做过一个文章系统也是要求多类别显示的,当时是使用find_in_set方法的,效率的确不行,所以这次特来征求下各位高手的意见,希望能得到一个好的方法!请各位不吝指教,望待你能写出具体的方法及实现流程,如后台管理如何操作,前台如何调用,谢谢!

解决方案 »

  1.   

    按照范式的设计。一般是这样。book(bookid,booktitel,author,.....)
    categories(cateid,catedesck...)
    bookcate(bookid,cateid)
      

  2.   

    谢谢,ACMAIN_CHM,
    你说的这个方法我上次就已记下来了,就是多了一个表感觉操作不大方便,希望还有更好的方法
      

  3.   

    试试这个呢?
    table(id,parent_id,booktitle,level)
    value(1,0,图书,0),
         (2,1,计算机与互联网,1),
         (3,2,程序语言与软件开发,2),
         (4,2,数据库,2),
         (5,3,Web开发,3)......................
      

  4.   

    ACMAIN_CHM正解
    后台操作:不要将分类作为书的一个基本属性来考虑,将书与分类都做基本数据录入,再利用专门的界面或流程处理书进入特定分类的问题
    至于分类路径,大可缓存起来(key(category id)=>value(category path))。