使用SO作为示例,如果您预计它们会经常更改,那么管理标记的最明智的方法是什么?
table posts +--------+-----------------+ | postId | tags | +--------+-----------------+ | 1 | c++,search,code |
这里的标签是逗号分隔的.
优点:使用单个select查询一次检索标记.更新标签很简单. 更新简单,便宜.
缺点:对标签检索进行额外解析,很难统计有多少帖子使用哪个标签.
(或者,如果仅限于5个标签)
table posts +--------+-------+-------+-------+-------+-------+ | postId | tag_1 | tag_2 | tag_3 | tag_4 | tag_5 | +--------+-------+-------+-------+-------+-------+ | 1 | c++ |search | code | | |
table posts +--------+-------------------+ | postId | title | +--------+-------------------+ | 1 | How do u tag? | table taggings +--------+---------+ | postId | tagName | +--------+---------+ …
我正在尝试使用mysql json功能识别时间序列中的趋势标签(基于最大命中).下面是我的表
CREATE TABLE TAG_COUNTER (
account varchar(36) NOT NULL,
time_id INT NOT NULL,
counters JSON,
PRIMARY KEY (account, time_id)
)
Run Code Online (Sandbox Code Playgroud)
在每个web api请求中,我将为每个帐户获取多个不同的标签,并根据标签的数量,我将准备INSERT ON DUPLICATE KEY UPDATE查询.下面的示例显示了带有两个标记的插入.
INSERT INTO `TAG_COUNTER`
(`account`, `time_id`, `counters`)
VALUES
('google', '2018061023', '{"tag1": 1, "tag2": 1}')
ON DUPLICATE KEY UPDATE `counters` =
JSON_SET(`counters`,
'$."tag1"',
IFNULL(JSON_EXTRACT(`counters`,
'$."tag1"'), 0) + 1,
'$."tag2"',
IFNULL(JSON_EXTRACT(`counters`,
'$."tag2"'), 0) + 1
);
Run Code Online (Sandbox Code Playgroud)
time_id是yyyyMMddhh,它是每行的每小时聚合.
现在我的问题是treding标签的回溯.下面的查询将为我提供tag1的聚合,但在进行此查询之前我们不会知道这些标记.
SELECT
SUBSTRING(time_id, 1, 6) AS month,
SUM(counters->>'$.tag1')
FROM TAG_COUNTER
WHERE counters->>'$.tag1' > 0
GROUP BY month; …Run Code Online (Sandbox Code Playgroud) 我打算建一个网站贴标签.标签最多可以包含五个标签,例如stackoverflow.com.
谁能告诉StackOverflow的标签系统?具有post和tag的关系数据库系统.
我应该在post表中添加一列还是应该为它创建单独的标记表?标签可以用空格或逗号分隔.
可能重复:
您如何建议实施标签或标记
我有一个网站,其中包含一些包含大量文章的数据库.我想实现类似于stackoverflow上的标签的标签.
我可以想到实现它们的两种基本方法:
创建一个单独的Tags表,其中包含与Articles表的一对多关系.
将标签文本字段添加到我的文章表.
第一种方法似乎是最好的,但需要两个额外的表,这些表会变得非常大.似乎还有相当大的开销更新和维护数据.
第二种方法更容易实现和维护,并且使用更少的资源.但搜索效率会降低.我可能会使用LIKE甚至是全文搜索.
我对其他人认为最好的方法很感兴趣.或许还有另一种方法.
tags ×2
algorithm ×1
analytics ×1
asp.net ×1
database ×1
json ×1
mysql ×1
sql ×1
sql-server ×1
time-series ×1