文档章节

关于网站文章分类和tag的思考

吾爱
 吾爱
发布于 2015/01/08 10:42
字数 710
阅读 360
收藏 1

分类是无限分类,即每个分类必须属于一个父分类,最顶级的分类父分类id为0。 一篇文章,应该如何和分类进行关联?传统的做法就是在文章表中有一个category_id字段对应分类id,即一篇文章属于一个分类。 但是现实情况中经常会出现一种需求:要求一篇文章可以在不同的分类下展示,这里不同的分类不是指有父子关系的分类,对于这个问题我知道两种做法:

  1. 发布文章时,选择"同时发布到其他分类",即将文章数据完全复制一份,在数据库中表现为两条记录,只是category_id不同。
  2. 取消文章表的category_id字段,使用另外一张表来存储文章与分类的 多对多 关系,这样保证每篇文章的唯一性。

对于方案1,缺点就是后期维护麻烦,一旦发现文章有错误需要修改,就不得不多次修改,而方案2没这个问题,但是在管理上有问题,比如删除分类同同时删除关联文章,不得不检查文章是否还关联了其他分类。

其实对于方案2,后来有了一种更加完美的替代方案,那就是tag,tag粒度很细,每篇文章都可以有多个tag,我们只需要一个tag表和tag关系表即可完成文章和tag的关联,同样,不管删除文章或tag,我们只需要删除tag关系即可,我们可以通过不同的tag聚合不同分类但是某些领域有关联的文章。

有一些激进网站完全采用tag替代了分类,这里我想了很久,最终决定采用tag+分类的方式,因为考虑到tag比较细散,而我还是要对文章进行一个更高纬度的分类的,我的方案是这样:

  1. 分类还是无限分类,只是我给每个分类加了一个属性 final ,该字段描述分类是否"最终",我认为一篇文章不管它跟多少"方面"有关系,但最终它只能呆在一个分类里,而这个分类必然是最终的,即 最终的分类 不允许有子分类,有子分类的分类不允许发布文章。
  2. TAG系统,为了让不同分类之间的文章产生聚合显示效果,我们采用tag,与分类并不冲突,tag只是用来检索。

如果把文章比作图书,那分类就像图书馆里的书架,而tag的话,就好像图书馆检索系统里的关键词索引。

-完-

© 著作权归作者所有

共有 人打赏支持
吾爱
粉丝 143
博文 269
码字总数 90617
作品 0
后端工程师
私信 提问
加载中

评论(1)

纯洁徐
纯洁徐
和你一样的设计~呵呵
WordPress中文SEO优化建议

WordPress就不用我来介绍了,相当不错的开源建站程序。今天电商圈来分享下WordPress优化的一些建议,欢迎大家拍砖。 1、URL结构 WordPress 允许您更改默认的链接形式,以此提高 URL 的可读性...

李晓龙
2011/04/18
0
0
末路客部落网站系统--NowayerCMS

Nowayercms1.0 系统功能和特点 程序用asp+ACCESS数据库+UTF-8编码编 写 前台文章静态html页面浏览 如果程序不在网站根目录,可在网站根目录生成index.html 手 动生成关于本站html页面 首页,...

匿名
2010/03/03
1K
0
tag标签是什么?对seo有什么用?

作为SEOer的我们在优化网站的时候回遇到几种标签,而tag标签就是其中一种,tag标签和一般的HTML标签不太一样,tag标签是一种特殊的标签,那么tag标签在SEO中有什么用?对SEO有什么用?下面菜...

一墨编程学习
2018/07/10
0
0
wordpress主题制作教程(二):主题文件结构

开始制作WordPress主题之前,首先得了解WordPress主题到底由哪些文件构成,你得清楚WordPress程序是怎样与主题文件连接的。一般来讲一个主题至少需要包含两个文件:index.php和style.css。 ...

drewin
2013/05/19
0
0
2010年Matt Cutts的SEO建议(文字稿)

在Google I/O 2010的一场session里,Matt Cutts给出了网站建设中的一些SEO建议,这里我们整理一下他说了些什么?下面我们归纳的一些重 点,在文章的末尾,你可以下载整篇会议文字记录(英文)...

红薯
2010/06/10
298
1

没有更多内容

加载失败,请刷新页面

加载更多

前端、后端和全栈到底不该学什么

1、前言 在职业规划咨询过程中经常会被问到这样的问题: 老师,我是该深入钻研专精一门,走技术大牛路线,还是所有都要精通,做一个全栈工程师? 类似问题的变种还有,老师我是不是该30岁最迟...

前端攻城小牛
31分钟前
3
0
【git命令】git-stash

应用场景 应用场景:使用git的时候,我们往往使用branch解决任务切换问题,例如,我们往往会建一个自己的分支去修改和调试代码, 如果别人或者自己发现原有的分支上有个不得不修改的bug,我们...

echojson
33分钟前
2
0
centos7.3编译安装OpenSSL1.1.1b

简介 OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。 安装 下载:下载地址 ...

阿dai学长
35分钟前
1
0
0基础【转行】大数据

目前大数据行业异常火爆,不少人都对大数据充满了兴趣,其中有大部分人都是之前没有接触过计算机技术的,对编程语言也不太了解,那是不是这部分零基础的朋友就学不了大数据了呢?答案当然是否...

董黎明
36分钟前
1
0
Krpano 动态传参-action

效果解释:点击热点1,触发显示或隐藏热线2。 hotspot等标签允许编写自定义属性,这里直接设置自定义属性为dk=spot6,点击spot7,显示或隐藏spot6。 action方法体中,直接引用get(dk)即可获得...

华山猛男
41分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部