4

我正在实现一个类似于 StackOverflow 标签系统的标签系统。我在考虑在存储标签并与问题相关时,这种关系将直接与标签名称相关,或者最好创建一个字段 tagID 以将问题与标签“链接”?看起来直接链接到标签名称更容易,但看起来不太好,主要是为什么在使用统计数据和/或标签分类(恕我直言)时很难管理这一点。另一个问题是当一个管理员决定“修复”标签名称时。如果标签名称中没有标签ID,那么我将更改表的键...

你有什么想法?

感谢所有回复。我将删除此帖子,因为还有其他具有相同主题的帖子。我想知道为什么搜索和建议没有为我显示结果...

4

3 回答 3

3

你问题中的最后一句话似乎回答了它。假设标签存储在标签表中,我将始终有一个 ID 列(int 或 GUID)和标签名称的 varchar/string 列。将一些其他实体与一个或多个标签相关联的多对多(联结表)将有两列包含 ID 的“其他实体”和标签的 ID。然后无需触摸按键即可轻松编辑标签(例如纠正拼写错误)。使用包含与联结表连接的查询时,您应该获得更好的性能,这也意味着您可以更好地规范化数据。

记住,“钥匙,整个钥匙,只有钥匙,所以请帮帮我”!:)

于 2009-02-14T16:11:23.790 回答
0

如果您预见到很多标签,并且正在使用关系数据库,那么使用数据库本身支持的 ID(例如 RID)可能只会给您带来更好的性能。

如果这不是问题:使用简单的短标签名称。您可以为标签提供长名称,这些名称也将显示在用户界面中有意义的地方(例如,在创建新标签时向用户询问)。您更有可能必须编辑长名称,没有任何东西直接引用,所以这不是问题。

另外,如果您使用的是关系数据库,通过简单的查询更改标签名称及其所有引用可能不是很困难,这可能只是一个稍微昂贵的操作,但可能不会完成足够频繁,以至于您需要对其进行优化。并且考虑到您可能也有想要合并的重复标签,所以无论如何您可能希望能够做到这一点。

于 2009-02-14T16:08:48.760 回答