以SO为例,如果您期望标签会经常更改,最明智的管理方法是什么?
桌子上的 **帖子** + -------- + ----------------- + | postId | 标签| + -------- + ----------------- + | 1 | C ++,搜索,代码|
标记以逗号分隔。
优点 :只需一次select查询即可立即检索标签。更新标签很简单。 容易且便宜地更新。
select
缺点 :标签检索时需要额外的解析,很难计算有多少帖子使用了哪些标签。
(或者,如果仅限于5个标签)
桌子上的 **帖子** + -------- + ------- + ------- + ------- + ------- + ------- + | postId | tag_1 | tag_2 | tag_3 | tag_4 | tag_5 | + -------- + ------- + ------- + ------- + ------- + ------- + | 1 | c ++ |搜索| 验证码| | |
桌子上的帖子 + -------- + ------------------- + | postId | 标题| + -------- + ------------------- + | 1 | 您如何标记?| 表格标签 + -------- + --------- + | postId | tagName | + -------- + --------- + | 1 | C ++ | | 1 | 搜索|
优点 :易于查看的标签数量(count(*) from taggings where tagName='C++')。
count(*) from taggings where tagName='C++'
缺点 :tagName可能会重复很多次。
桌子上的 **帖子** + -------- + --------------------------------------- + | postId | 标题| + -------- + --------------------------------------- + | 1 | 为什么乌鸦像写字台?| 表 **标签** + -------- + --------- + | tagId | tagName | + -------- + --------- + | 1 | C ++ | | 2 | 搜索| | 3 | foofle | 表格 **标签** + -------- + --------- + | postId | tagId | + -------- + --------- + | 1 | 1 | | 1 | 2 | | 1 | 3 |
优点 :
缺点 :更改标签比方法1更昂贵。
这些解决方案被称为mysqlicious,scuttle和toxi。
mysqlicious
scuttle
toxi
本文 比较了每种方法的优缺点。