[博客日志] 初步实现为文章打标签的功能

忙了一下午,终于为博客加上了为文章打标签的功能~~~

自从我把文章的固定链接改成纯ID之后,就越发觉得标签(tag)比分类重要。因为:

  • 分类一般是一对多模式。就是一个分类下可以有很多文章。一篇文章一般不属于多个分类;
  • 而标签却是多对多模式。也就是说,一篇文章可以拥有多个tag,同时一个tag下也可以有多篇文章。

分类把文章限制得太死,tag可以把不属于一个分类下的文章联系起来。尽管这两篇文章可能完全不属于一个分类。

比如有一篇文章《解决PHP中MySQL。。。》,那么具体要放到PHP和MySQL中哪个分类呢?都不好。最好是打两个标签就好!!

实现

数据库模式最早是借鉴了WordPress的设计(读了很多它的代码,借鉴了很多)。一共三个数据表。

  • 一篇文章一条记录,就像下面这样的格式:

    文章ID文章标题文章内容
    1标题1内容1
    2标题2内容2
  • 标签表记录了所有的标签:

    标签ID标签名
    1标签1
    2标签2
  • 这个表记录文章所拥有的标签表,它把前面两个表结合起来:

    文章标签ID文章ID标签ID
    111
    221
    322

    上表说明:ID为1的文章拥有标签1,ID为2的文章同时拥有标签1和标签2。很简单明了吧?

为什么要这样设计。我无法透露太多,因为我也不特别懂。但我完全参考了WordPress,以及这个问题(Database Design for Tagging)以及这篇文章(Tags: Database schemas),文章中也给出了性能测试。

GitHub提交日志:初步实现文章打标签功能(未作太多测试)

发表于:2015年07月14日 ,阅读量:897 ,标签:博客日志

版权声明:若非特别注明,本站所有文章均为作者原创,转载请务必注明原文地址。