0

假设我正在为所有博客免费工作,允许作者标记他们的帖子(基本上是 twitter 等)。我该怎么做才能优化查询以提高速度?

我正在考虑有一个标签字段,其中内容是标签列表

例如,条目可能是关于总统的文章,标签可能是:

tag={politics, family, social, news, economy}

请注意,这些标签不是预定义的,并且作者会随心所欲地添加它们。

我描述的方法是最好的吗?还是有更有效的方法来做到这一点?

可能很重要,我使用的是应用程序引擎数据存储,我的语言是 java。

最终目标是允许用户通过特定标签进行搜索,比如用户想要通过标签“婚姻”进行搜索。

4

1 回答 1

2

首先,您可能不希望数据库中的任何字段成为任何内容的列表,因为您通常希望它在最坏的情况下保持第三范式,并且将列作为值列表违反第一范式。

我用小规模项目进行标记的方式(没有尝试过任何大型项目,所以我不确定这将如何可扩展)是有一个包含标签的查找表和一个链接表包含要标记的事物的密钥及其标签的密钥。

所以它看起来像这样:

Thing                   Thing_Tags             Tags
------                  -----------            ----
ThingID (Guid)          ThingID (Guid)         TagID (Guid)
otherAttributes         TagID (Guid)           Tag (varchar)
于 2013-05-24T17:29:39.970 回答