小编典典

实施标签的方法-每种方法的利弊

sql

以SO为例,如果您期望标签会经常更改,最明智的管理方法是什么?

方法1:严重不规范化(以逗号分隔)

桌子上的 **帖子**
+ -------- + ----------------- + 
| postId | 标签|
+ -------- + ----------------- +
| 1 | C ++,搜索,代码|

标记以逗号分隔。

优点 :只需一次select查询即可立即检索标签。更新标签很简单。 容易且便宜地更新。

缺点 :标签检索时需要额外的解析,很难计算有多少帖子使用了哪些标签。

(或者,如果仅限于5个标签)

桌子上的 **帖子**
+ -------- + ------- + ------- + ------- + ------- + ------- +
| postId | tag_1 | tag_2 | tag_3 | tag_4 | tag_5 |
+ -------- + ------- + ------- + ------- + ------- + ------- +
| 1 | c ++ |搜索| 验证码| | |

方式2:“略微归一化”(单独的表格,没有交集)

桌子上的帖子
+ -------- + ------------------- +
| postId | 标题|
+ -------- + ------------------- +
| 1 | 您如何标记?|

表格标签
+ -------- + --------- +
| postId | tagName |
+ -------- + --------- +
| 1 | C ++ |
| 1 | 搜索|

优点 :易于查看的标签数量(count(*) from taggings where tagName='C++')。

缺点 :tagName可能会重复很多次。

方式3:酷孩子的(用交集表标准化)

桌子上的 **帖子**
+ -------- + --------------------------------------- +
| postId | 标题|
+ -------- + --------------------------------------- +
| 1 | 为什么乌鸦像写字台?|

表 **标签**
+ -------- + --------- +
| tagId | tagName |
+ -------- + --------- +
| 1 | C ++ |
| 2 | 搜索|
| 3 | foofle |

表格 **标签**
+ -------- + --------- +
| postId | tagId |
+ -------- + --------- +
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |

优点

  • 没有重复的标签名称。
  • 更多的女孩会喜欢你。

缺点 :更改标签比方法1更昂贵。


阅读 124

收藏
2021-04-15

共1个答案

小编典典

这些解决方案被称为mysqliciousscuttletoxi

本文 比较了每种方法的优缺点。

2021-04-15