数据库设计问题在这里。
假设我们有一个webapp或使用#标签处理20-40个字词的东西。存储用户主题标签的最佳方法是什么。
例如,如果用户输入。`”I like to have #lunch at
还值得指出的是,这些标签必须是可搜索的,例如有多少人对午餐进行了哈希标签等等。
在这个问题上的建议会很棒,在将可变大小的输入存储在mysql中时,我总是有些困惑。每个音符可以有无限数量的主题标签,最好的存储方式是什么?
我建议在消息和标签之间使用典型的多对多关系。
那意味着您需要3张桌子。
Messages
Id
UserId
Content
Tags
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