看到小伙伴的这个疑问,我就回想起我当初研发【湖八爷博客】时也纠结过这个问题,我相信对于大多数初次研发内容系统的小伙伴来说,都很容易混淆分类和标签的概念以及用途,所以今天就用这篇文章帮大家梳理一下分类和标签的区别。
一,分类和标签有什么区别?
要搞懂分类和标签的区别,首先需要理解分类和标签的概念。
1:分类是指将内容按照不同维度划分成多个类别,类别与类别之间具有排他性,也就是说一篇内容在同一维度下只能属于一个类别。
2:标签则是将内容的具体特点进行标记,而一篇内容可能存在多个明显的特点,也就是说一篇内容可以同时拥有多个标签。
3:分类是自上而下,即先有分类再有内容,是固定的严谨的。标签则是自下而上,即一定要先有内容才有标签。
二,研发内容系统时如何设计分类表?
1:由于分类是自上而下的,根据需求不同,分类的层级也会不同。所以我们不需要想太多,针对这种需求可以直接采用“树形结构”的表设计思路。
2:分类表的具体字段如下。
id:唯一标识符,用于表示每个分类的ID。通常为主键字段。
name:分类名称,用于表示分类的名称。该字段应该唯一且不能重复。
parent_id:父级分类ID,用于表示该分类的父级分类的ID。如果该分类是根分类,则parent_id为0或者为NULL。通过该字段可以构建出分类的层级关系。
path:分类路径,用于表示从根分类到该分类的路径。该字段可以方便地获取到某个分类的完整路径(如果没有该字段,则需要多次查找才能获取到某个分类的完整路径)。
icon:分类图标,移动端APP经常会用到分类图标。
display:是否隐藏,控制分类的显示和隐藏。
sort:分类排序,控制分类的前后排序。
create_time:创建时间,用于记录该分类的创建时间。
update_time:更新时间,用于记录该分类的最后更新时间。
采用这种“树形结构”的表保存分类,不需要担心分类层级(因为一级分类,二级分类,多级分类都可以满足)。
三,研发内容系统时如何设计标签表?
1:由于标签和标签之前没有上下级关系,针对这种需求可以直接采用“扁平化”的表设计思路。
2:标签表的具体字段如下。
id:唯一标识符,用于表示每个标签的ID。通常为主键字段。
name:标签名称,用于表示标签的名称。该字段应该唯一且不能重复。
create_time:创建时间,用于记录该分类的创建时间。
update_time:更新时间,用于记录该分类的最后更新时间。
四,添加内容的时候如何关联分类和标签?
1:关联分类很简单,只需要在内容表中添加一个分类字段(int类型),保存所属分类的id即可。
2:关联标签也很简单,可以参考知乎话题标签。
在添加标签的输入框中输入文字的时候查询出相关联的标签,选中后可以添加下一个标签。
如果标签表中没有这个标签,可以直接创建一个标签。
然后在内容表中添加一个标签字段(string类型),保存选中后的标签id,多个标签id用","拼接起成一个字符串即可保存(之后查询的时候分割一下该字符串即可得到所有标签id)。