-- 功能: 设计一个站内关键词库,并关联文章,一遍文章可能对应n个关键词, 一个关键词可能对应n遍文章-- 现在有三个表, 文章表   关联表   关键词表    post(pid, content),   -- content有全文索引    post_keywd(pkid, pid, kid),    keywd(kid, name),
   当用户搜索关键词时对keywd表操作(取得kid), 当用户确定了关键时对post_keywd操作(取得pid) ,    因为文章多个关键词的原因, 这时可能会有很多pid,  问题来了 ,  现在怎么根据这些pid去查询文章呢?   假如有50多个pid .
   这样设计表有问题吗 ?  

解决方案 »

  1.   


    select a.content 
    from post a,post_keywd b,keywd c
    where c.name='关键词' and b.kid=c.kid and a.pid=b.pid
    group by b.pid;
      

  2.   

    select *
    from keywd inner join post_keywd using (kid)
    inner join post usig (pid)设计上看不出有什么问题,毕竟对你的应用并不了解。只能说符合范式的要求。
    post_keywd(pkid, pid, kid 这个表,似乎可以将pkid 去掉,直接以pid, kid 为主键 , 另外创建(kid ,pid) 的复合索引。
      

  3.   

    正如楼上所说,其实post_keywd这个表只是关联用,没有必要整个pkid。