我建议在消息和标签之间使用典型的多对多关系。
那意味着您需要3张桌子。
Messages
(列Id
,UserId
和Content
)Tags
(列Id
和TagName
)TagMessageRelations
(列:MessageId
和TagId
-在消息和标签之间建立连接-通过指向Messages.Id
/的外键Tags.Id
)
这样,您不必多次存储标签,而仅创建与消息的新关系(当然,如果该标签已存在于标签表中)。
这样你可以
- 轻松 计算 有 多少标签 (
SELECt COUNT(*) FROM Tags
) - 每个标签仅保存一次 ,搜索标签即可轻松建立索引
- 或 计算 每个用户 使用某个标签的 次数-例如:
SELECt COUNT(*) FROM Tags INNER JOIN TagMessageRelations ON Tags.Id =TagMessageRelations.TagId INNER JOIN Messages ON TagMessageRelations.MessageId= Messages.Id GROUP BY Messages.UserId



