加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 实现标记的方法 – 各自的优点和缺点

发布时间:2020-12-12 06:52:27 所属栏目:MsSql教程 来源:网络整理
导读:Related 使用SO作为示例,如果您预计标签会经常更改,那么管理标签的最明智的方法是什么? 方式1:严重非规范化(逗号分隔) table posts +--------+-----------------+ | postId | tags |+--------+-----------------+| 1 | c++,search,code | 这里的标签是逗
Related

使用SO作为示例,如果您预计标签会经常更改,那么管理标签的最明智的方法是什么?

方式1:严重非规范化(逗号分隔)

table posts
+--------+-----------------+ 
| postId | tags            |
+--------+-----------------+
|   1    | c++,search,code |

这里的标签是逗号分隔的。

优点:使用单个选择查询一次检索标记。更新标签很简单。更新简单,便宜。

缺点:对标签检索进行额外解析,很难统计有多少帖子使用哪个标签。

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

table posts
+--------+-------+-------+-------+-------+-------+
| postId | tag_1 | tag_2 | tag_3 | tag_4 | tag_5 |
+--------+-------+-------+-------+-------+-------+
|   1    | c++   |search | code  |       |       | 

方式2:“稍微规范化”(单独的表,没有交叉点)

table posts
+--------+-------------------+
| postId | title             |
+--------+-------------------+
|   1    | How do u tag?     |

table taggings
+--------+---------+
| postId | tagName |
+--------+---------+
|   1    | C++     |
|   1    | search  |

优点:易于查看标签计数(来自标签的count(*),其中tagName =’C’)。

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

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

table posts
+--------+---------------------------------------+
| postId | title                                 |
+--------+---------------------------------------+
|   1    | Why is a raven like a writing desk?   |

table tags
+--------+---------+
| tagId  | tagName |
+--------+---------+
|   1    | C++     |
|   2    | search  |
|   3    | foofle  |

table taggings
+--------+---------+
| postId | tagId   |
+--------+---------+
|   1    | 1       |
|   1    | 2       |
|   1    | 3       |

优点:

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

缺点:改变标签比方式#1更昂贵。

解决方法

这些解决方案被称为mysqlicious,scuttle和toxi。

This article比较了每种方法的优缺点。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读