解决方案 »

  1.   

    你数据库是什么。你这样的设计不是很好。比较经典的设计是两套表,你的tags字段,从逗号分隔变成N行:id        title
    1         学习java
    2         jsoup过滤html代码
    3         xss攻击的危害id      aid       tag
    1       1         java
    2       1         数据
    3       1         jsoup
    4       2         jsoup
    5       2         过滤
    6       2         xss攻击
    7       2         java
    ...................
      

  2.   

    谢谢了,我的是mysql,我看很多设计的都是tags设计成一个字段的,不知道他们是怎么实现这个功能的?
      

  3.   

    我的是mysql,我看很多设计的都是tags设计成一个字段的,不知道他们是怎么实现这个功能的?一个字段不会冗余吗?
    不如这样
    id       tag
     1        java
     2       数据
    id        title                                      tags
     1         学习java                             1, 2
      

  4.   

    谢谢了,我的是mysql,我看很多设计的都是tags设计成一个字段的,不知道他们是怎么实现这个功能的?楼主请看“范式”。现行的(基于“行”的)数据库系统,大多不怕行多(相对来说),怕列多或者列复杂
    另外,这种方案如果是查找某篇文章有什么标签,以及某个标签有哪些文章,效率还勉强可以。其他性能堪忧
    1 指定文章的所有标签,性能基本等价
    2 指定标签的所有文章,完全没法用索引,只能使用FIND_IN_SET函数
    3 统计所有标签的排行,还是完全没法用索引,只能FIND_IN_SET,如果文章多,或者平均每个文章的标签多的话,比我那个方案(完全只要用到索引)慢上百倍,千倍甚至更多也不是不可能的当然,如果只是少量文章,少量标签,这个也是可以操作的。不过,你还是要一张完整的标签名称,才能在mysql中间做统计
      

  5.   

    谢谢了,我的是mysql,我看很多设计的都是tags设计成一个字段的,不知道他们是怎么实现这个功能的?楼主请看“范式”。现行的(基于“行”的)数据库系统,大多不怕行多(相对来说),怕列多或者列复杂
    另外,这种方案如果是查找某篇文章有什么标签,以及某个标签有哪些文章,效率还勉强可以。其他性能堪忧
    1 指定文章的所有标签,性能基本等价
    2 指定标签的所有文章,完全没法用索引,只能使用FIND_IN_SET函数
    3 统计所有标签的排行,还是完全没法用索引,只能FIND_IN_SET,如果文章多,或者平均每个文章的标签多的话,比我那个方案(完全只要用到索引)慢上百倍,千倍甚至更多也不是不可能的当然,如果只是少量文章,少量标签,这个也是可以操作的。不过,你还是要一张完整的标签名称,才能在mysql中间做统计
    1点和2点我使用的Lucene框架搜索的,这种功能大多数都不是实时在数据库里面搜索的,所以不存在你说的问题,关键是3点这个功能统计标签的排行我就是不知道用lucene怎么实现的,所以我就来问下这个数据库的设计,非常感谢您的回答
      

  6.   

    这种设计不太好哟,需要处理插入tag表中的返回值,返回的主键值
      

  7.   

    这种设计不太好哟,需要处理插入tag表中的返回值,返回的主键值再不行这样id        title                                      tags
     1         学习java                             java,数据,jsoup
     2         jsoup过滤html代码          jsoup,过滤,xss攻击,java
     3         xss攻击的危害                  xss,jsouptable total
    tags  total
    java    5
    数据  10
    统计信息,你去处理字符串统计非常麻烦但是还是感觉二楼的比较好
    处理主键不麻烦,复选框搞定,不然传数据回来,从数据库取主键也一样,不过慢点
      

  8.   

    这种设计不太好哟,需要处理插入tag表中的返回值,返回的主键值再不行这样id        title                                      tags
     1         学习java                             java,数据,jsoup
     2         jsoup过滤html代码          jsoup,过滤,xss攻击,java
     3         xss攻击的危害                  xss,jsouptable total
    tags  total
    java    5
    数据  10
    统计信息,你去处理字符串统计非常麻烦但是还是感觉二楼的比较好
    处理主键不麻烦,复选框搞定,不然传数据回来,从数据库取主键也一样,不过慢点
    这种也不错,只是查询指定标签的帖子的效率不太好了,现在看来最好的设计就是2楼那种方案,3q