假设我正在为所有博客免费工作,允许作家标记他们的帖子(基本上是twitter等等)。我该怎么做才能使查询针对速度进行优化?
我正在考虑使用标记字段,其中内容是标记列表
例如,条目可能是关于总统的文章,标签可能是:
tag={politics, family, social, news, economy}
请注意,标签不是预定义的,而且编写者会随心所欲地添加它们。
我所说的方法是最好的吗?或者有更有效的方法来做到这一点吗?
因为它可能很重要,我正在使用app-engine数据存储区,我的语言是java。
最终目标是允许用户按特定标签进行搜索,例如用户想要通过“婚姻”标签进行搜索。
答案 0 :(得分:2)
首先,您可能不希望数据库中的任何字段成为任何内容的列表,因为您通常希望它在最坏情况下保持在第三范式,并且列是一个违反第一范式的值列表。
我用小规模项目进行标记的方式(没有尝试任何大的项目,所以我不确定它是否具有可扩展性)是有一个包含标记的查找表,以及一个链接表,其中包含要标记的事物的关键字及其标记的关键字。
所以它看起来像这样:
Thing Thing_Tags Tags
------ ----------- ----
ThingID (Guid) ThingID (Guid) TagID (Guid)
otherAttributes TagID (Guid) Tag (varchar)