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

分类是无限分类,即每个分类必须属于一个父分类,最顶级的分类父分类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的话,就好像图书馆检索系统里的关键词索引。

-完-

时间: 2024-12-10 18:41:58

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

新闻资讯类系统 ---- 文章分类和标签的设计

零. 简介 博客. CMS(网易新闻. 腾讯新闻) 之类的系统, 核心就是文章, 一切的一切都围绕着文章进行, 所以设计一个好的文章分类和标签的数据库关系模型, 对后续编码及维护将会起到至关重要的作用. 一. 分类 一篇文章, 比如 <大陆 ** 明星又离婚了> 这属于 「娱乐」 类新闻, 又属于 「中国」 分类下的新闻, 所以文章和分类的关系一般是 1 对 N . 数据库表结构设计 article : 字段名 注释 id title 文章标题 author 作者 create_time 创建

在云服务器搭建WordPress博客(四)创建和管理文章分类

不同主题的文章划分到不同的分类,有助于访客寻找他们想要的内容,提高用户体验.所以,为你的网站创建文章分类是很有必要的.那么,WordPress系统如何创建和管理文章分类呢?今天倡萌就简单介绍一下. 创建分类之前,最好对你网站的内容取向有个比较清楚的了解,然后列出可取的分类名称(一般为2-6个字为宜). 进入 后台 – 文章 – 分类目录,就可以看到分类创建和分类管理界面: 添加新分类目录 分类目录的添加默认有4个选项: 名称 – 分类的名称,一般为 2-6 个字为宜,如上图的“WordPress

文章分类和标签的数据库设计

几乎在所有web项目中,都涉及文章分类和标签的设计,应该说这是一个比较常见.典型的案例.站长并不保证我的思路就是最好的,只是分享出来大家一起交流一下,互相促进与提高. 我们假设的开发项目是一个博客系统,最核心的部分就是与文章相关的,那么我们今天讨论如何设计博客系统的文章分类和标签. 1.首先,分类和标签都是要和具体的文章相关联的,当然也可能一些文章既没有分类也没有标签,这一点是大家在写查询的时候容易疏忽的地方.因为我们的第一感觉就是,在查询文章列表的时候关联分类表,查出所有的文章和分类,对应关系

网站文章若何优化的顶级办法

新网站的排名可以说基本上都是依靠文章的原创性,还有关键词的优化排名获取大量流量的.一个新网站如果没有写好自己的网站内容,没有创新,不吸引搜索引擎来光临抓取,那么这个网站就会失去99%的流量,自然而然就可以想象网站文章优化的重要性,刚开始做的时候如果有不会的地方,尽量去网上搜索相关的文档资料学习.在这里给大家推荐站长之家这个网站,有很多高手经常在论坛上发布很好的学习资料. 但是对于很多新站长或者从事优化工作的优化人员并没有十分在乎文章的重要性,还有很多站长一直在强调网站内容为王,外链为皇,如果你的

1、文章分类表的创建以及分类列表页模板导入

(1)建立文章分类表 由于之前开启apache的虚拟主机,apache的配置进行了更改,之前phpadmin不能访问,需配置httpd-vhost.conf <VirtualHost *:81> ##ServerAdmin [email protected] DocumentRoot "D:/soft/htdocs/" ##ErrorLog "logs/dummy-host2.example.com-error.log" ##CustomLog &quo

怎样实现分享网站文章到微信朋友圈时指定缩略图

当下朋友圈很火,很多企业都将微信朋友圈作为品牌传播的途径,经常会发一些精彩的文章到微信朋友圈供大家自发传播,这样的想法很好,对于优质的内容,网友们也乐于转发与朋友们分享,对品牌宣传与推广确实是有好处的. 通过微信公众平台发文章,需要登录微信公众平台,非常麻烦,而且不能同步到网站中,同一篇文章可能要在多在地方编辑发布,增加了人力和时间成本,有没有一劳永逸的办法呢?当然是有的,其中之一是做一个能在台式机.笔记本电脑.平板电脑.手机上显示出一致效果的网站(IT领域叫响应式网站或全屏幕适应网站),先在这

假如我来架构12306网站---文章来自csdn(Jackxin Xu IT技术专栏)

(一)概论 序言:  此文的撰写始于国庆期间,当中由于工作过于繁忙而不断终止撰写,最近在设计另一个电商平台时再次萌发了完善此文并且发布此文的想法,期望自己的绵薄之力能够给予各位同行一些火花,共同推进国内的大型在线交易系统的研发工作,本文更多地站在软件工程角度来看待整个问题,有关后续的技术问题研究,将在另外的博文中予以探讨. 一年一度的国庆大假刚落下帷幕,由于这次长假是历史上最长的一次,因此出行问题备受关注,而铁路出行作为最主要的出行方式更是大家讨论的热点,老生常谈的购票难问题又被提起.这几天我在

博客整体迁移到个人网站(www.lcode.org),网站文章更新,请大家移步...

博客整体迁移到个人网站(www.lcode.org),网站文章更新,请大家移步我的个人技术专栏... 我的个人技术专栏地址:http://www.lcode.org  后面所有技术文章会在个人网站首发更新....

ecshop怎么全局调用指定文章二级分类(注意是文章分类不是二级商品分类)

1.直接将以下代码复制到要显示的模板,修改所需文章分类id,其中 {if $cat.id eq 16}的意思是调用文章分类ID为16下的二级文章分类     <? $GLOBALS['smarty']->assign('article_categories',   article_categories_tree(0)); //文章分类树 ?> <!--{foreach from=$article_categories item=cat}-->     {if $cat.id