需求背景 目前主流的博客系统、CMS都会有一个TAG标签系统,不仅可以让内容链接的结构化增强,而且可以让文章根据Tag来区分。相比传统老式的Keyword模式,这种Tag模式可以单独的设计一个Map的映射表来增加系统的负载和查询的效率。 数据库设计方案1 此方案分

需求背景

目前主流的博客系统、CMS都会有一个TAG标签系统,不仅可以让内容链接的结构化增强,而且可以让文章根据Tag来区分。相比传统老式的Keyword模式,这种Tag模式可以单独的设计一个Map的映射表来增加系统的负载和查询的效率。

数据库设计方案1

此方案分为2个表:

1.Tag表

2.文章表

Tag表表结构:

tagid # tag标签的ID

tagname #tag内容

num #当前Tag的引用个数

文章表结构:

ID #文章ID

title #文章标题

tags #tags列表,多个以,分割

tagid #tags的ID 多个以,分割

...

此种方式Tag标签主要内容保存在 文章表 中,对于Tag表的压力较小,只是添加的时候更新一下Tag的引用数量,但是查询的时候效率不足,不是好办法

数据库设计方案2

第二种方案使用2个Tag表,其中一个保存Tag信息,另一个保存映射信息:

Tag表:

tagid # tag标签的ID

tagname #tag内容

num #当前Tag的引用个数

Tagmap表

tagid

aid

文章表

ID #文章ID

title #文章标题

tags #tags列表,多个以,分割

...

这种形式,每次发布内容和修改内容的时候 都去更新一下Tag表和 Tagmap表。

查询的时候需要从Tagmap表中查找响应的文章ID,然后使用文章ID去查询具体的文章信息,因为每次查询都是使用索引,所以效率较高。

数据库设计方案3

前两种方案都是使用纯粹的Mysql来设计的,第三种方案将使用Nosql的魅力来设计。

基本结构同方案2,只是在Tag表和Tagmap表中使用mongo/redis这样的nosql数据库服务器,这样可以发挥nosql数据库强大的线性查询能力。

1) 第一种方式的表结构设计与方案2完全相同,只是数据库服务器换了。

2)其他的方案,当然是发挥Nosql的线性能力来设计存储的Key了,尤其是使用redis的时候,使用的Key的结构可以完美的提高查询效率

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

mysql中mapping标签的作用_3种高效的Tags标签系统数据库设计方案分享相关推荐

  1. 3种高效的Tags标签系统数据库设计方案分享

    需求背景 目前主流的博客系统.CMS都会有一个TAG标签系统,不仅可以让内容链接的结构化增强,而且可以让文章根据Tag来区分.相比传统老式的Keyword模式,这种Tag模式可以单独的设计一个Map的 ...

  2. delimiter在mysql中的作用_细细研究MySql中delimiter起到的作用_MySQL

    MySql中delimiter究竟可以起到些什么作用呢?可能不少人都有这样的疑惑,下文就为您介绍MySql中delimiter的作用,供您参考. MYSQL导出一个SQL后: DELIMITER $$ ...

  3. html中center的作用,html center标签的作用是什么?html center标签的应用实例解析

    html center标签的作用是什么?html center标签的应用实例解析都在本篇文章里.主要介绍了html center标签的定义及使用说明,还有关于HTML中center和align的区别 ...

  4. mysql 创建函数 split_在mysql中实现split函数的几种方法

    在mysql中实现split函数的几种方法 关注:98  答案:2  mip版 解决时间 2021-02-07 11:27 提问者夜落花台 2021-02-07 02:11 在mysql中实现spli ...

  5. MySQL中,关联查询的3种写法…

    原文地址:MySQL中,关联查询的3种写法(USING/ON) 作者:王小安 看看下面三个关联查询的 SQL 语句有何区别? [sql]  view plain copy SELECT * FROM  ...

  6. MySQL中for update的作用和用法

    一.for update定义 for update是一种行级锁,又叫排它锁. 一旦用户对某个行施加了行级加锁,则该用户可以查询也可以更新被加锁的数据行,其它用户只能查询但不能更新被加锁的数据行. 如果 ...

  7. mysql中的foreignkey的作用_mysql中的外键foreign key

    一.如果一张表中有一个非主键的字段指向了别一张表中的主键,就将该字段叫做外键. 一张表中可以有多个外键. 外键的默认作用有两点: 1.对子表(外键所在的表)的作用:子表在进行写操作的时候,如果外键字段 ...

  8. MySQL中 修改语句使用的关键字是什么_表示修改一个数据库对象的SQL关键字是什么...

    表示修改一个数据库对象的SQL关键字是:ALTER.在数据库中,可以使用"ALTER TABLE"语句来改变原有表的结构,可以在已有的表中添加.删除或修改列. 本教程操作环境:wi ...

  9. mysql中井号的作用_URL 链接中 井号#、问号?、连接符 分别有什么作用?

    在一个 URL 中可以包含很多的内容,其中不仅仅是包含 26 个英文字母,10 个罗马数字,中文汉字,还可以拥有井号"#".问号"?".连接符"&am ...

最新文章

  1. jquery中对小数进行取整
  2. java安装_Java开发中更多常见的危险信号
  3. 进阶学习(3.9) Bridge Pattern 桥接模式
  4. 【NOIP2013模拟】黑魔法师之门
  5. 连续处理函数reduce
  6. 成功解决python\ops\seq2seq.py TypeError: ms_error() got an unexpected keyword argument 'logits'
  7. 隐藏模块(无模块注入)
  8. 5分钟学会区块链 - 开发一条区块链 Develop BlockChain with Tendermint
  9. [js] 使用ajax请求真的不安全吗?为什么?
  10. ubuntu给pip换源,给conda换源
  11. 微软补丁服务器部署方案,Windows server 2012 r2 单wsus部署成功,需要更新补丁的服务器已有域控该怎么出解决方案...
  12. 一、Fiddler抓包工具 — Fiddler介绍与安装
  13. 编译原理——自下而上语法分析
  14. RuntimeError: generator raised StopIteration(python带我起飞报错)
  15. linux lzma命令,linux lzma安装
  16. Maven 自问自答
  17. 华为mate30pro和华为p40pro有什么区别
  18. linux的三权分立设计思路和用户创建(安全管理员、系统管理员和审计管理员)
  19. Google OR-Tools(一) Get Start
  20. 店铺每日生意营业流水记账本

热门文章

  1. 怎样做好域名防红_微信域名防拦截的工作
  2. Linux svn服务器搭建
  3. HDU1560 DNA sequence IDA* + 强力剪枝 [kuangbin带你飞]专题二
  4. 6. 分类图显示和保存
  5. 银联接口的一些加密方式
  6. 解除工作压力的四大疗法
  7. 高通发布《5G经济》研究:将催生12万亿美元市场
  8. 23种设计模式-装饰模式
  9. 网易漫画Swift混编实践
  10. 路径空间HDOJ 4514 - 湫湫系列故事——设计风景线 并查集+树型DP