mysql怎么设计才能让一个文章对应多个tag
mysql让一个文章对应多个tag的设计方法:通过引入一个中间表来实现多对多的关系。具体来说,将文章和标签分别看作两个实体,通过一个中间表来建立它们之间的多对多关系。中间表包含两个外键,分别指向文章和标签表中对应的记录。
要让一篇文章可以对应多个tag,通常需要设计一个多对多的关系,这可以通过引入一个中间表来实现。
具体来说,将文章和标签分别看作两个实体,通过一个中间表来建立它们之间的多对多关系。中间表包含两个外键,分别指向文章和标签表中对应的记录。每当一篇文章与一个或多个标签产生关联时,就在中间表中插入相应的记录,同时记录对应的文章ID和标签ID。
这样设计的好处是,可以轻松地查询某个标签下的所有文章,也可以方便地查找某篇文章所对应的所有标签。如果需要添加或删除文章与标签之间的关系,只需在中间表中插入或删除记录即可,不会对文章或标签本身造成影响。
以下是一个简单的MySQL代码示例:
CREATE TABLE articles (
id INT NOT NULL AUTO_INCREMENT,
title VARCHAR(100) NOT NULL,
content TEXT NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE tags (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
CREATE TABLE article_tags (
article_id INT NOT NULL,
tag_id INT NOT NULL,
FOREIGN KEY (article_id) REFERENCES articles(id),
FOREIGN KEY (tag_id) REFERENCES tags(id)
);
其中:
目前主流的博客系统、CMS都会有一个TAG标签系统,不仅可以让内容链接的结构化增强,而且可以让文章根据Tag来区分。相比传统老式的Keyword模式,这种Tag模式可以单独的设计一个Map的映射表来增加系统的负载和查询的效率。
此方案分为2个表:
Tag表表结构代码如下:
tagid # tag标签的ID
tagname #tag内容
num #当前Tag的引用个数
文章表结构代码如下:
ID #文章ID
title #文章标题
tags #tags列表,多个以,分割
tagid #tags的ID 多个以,分割
…
此种方式Tag标签主要内容保存在文章表中,对于Tag表的压力较小,只是添加的时候更新一下Tag的引用数量,但是查询的时候效率不足,不是好办法。
第二种方案使用2个Tag表,其中一个保存Tag信息,另一个保存映射信息:
Tag表代码如下:
tagid # tag标签的ID
tagname #tag内容
num #当前Tag的引用个数
Tagmap表代码如下:
tagid
aid
文章表代码如下:
ID #文章ID
title #文章标题
tags #tags列表,多个以,分割
…
这种形式,每次发布内容和修改内容的时候都去更新一下Tag表和 Tagmap表。查询的时候需要从Tagmap表中查找响应的文章ID,然后使用文章ID去查询具体的文章信息,因为每次查询都是使用索引,所以效率较高。
前两种方案都是使用纯粹的Mysql来设计的,第三种方案将使用Nosql的魅力来设计。基本结构同方案2,只是在Tag表和Tagmap表中使用mongo/redis这样的nosql数据库服务器,这样可以发挥nosql数据库强大的线性查询能力。
延伸阅读1:MySQL是什么
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是较好的 RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。
最后建议,企业在引入信息化系统初期,切记要合理有效地运用好工具,这样一来不仅可以让公司业务高效地运行,还能最大程度保证团队目标的达成。同时还能大幅缩短系统开发和部署的时间成本。特别是有特定需求功能需要定制化的企业,可以采用我们公司自研的企业级低代码平台:织信Informat。 织信平台基于数据模型优先的设计理念,提供大量标准化的组件,内置AI助手、组件设计器、自动化(图形化编程)、脚本、工作流引擎(BPMN2.0)、自定义API、表单设计器、权限、仪表盘等功能,能帮助企业构建高度复杂核心的数字化系统。如ERP、MES、CRM、PLM、SCM、WMS、项目管理、流程管理等多个应用场景,全面助力企业落地国产化/信息化/数字化转型战略目标。 版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们微信:Informat_5 处理,核实后本网站将在24小时内删除。版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系邮箱:hopper@cornerstone365.cn 处理,核实后本网站将在24小时内删除。
相关文章推荐
立即开启你的数字化管理
用心为每一位用户提供专业的数字化解决方案及业务咨询