标签系统中标签的ID

4
我正在实现一个类似于StackOverflow标签系统的标签系统。我在考虑存储标签并与问题相关联时,该关系是否直接与标签名称相关或者最好创建一个tagID字段来“链接”问题和标签?直接链接标签名称似乎更容易,但它不太好看,主要是因为在处理统计数据和/或标签分类(依我之见)时可能很难管理。另一个问题是当管理员决定“修复”标签名称时。如果没有与标签名称分离的tagID,则将更改表的键...您有什么想法吗?
感谢所有回复。由于已经有其他帖子涉及相同的主题,因此我将删除此帖子。我想知道为什么搜索和建议对我没有结果...
3个回答

9

谢谢,我在考虑删除这篇帖子。 - Click Ok
3
没必要删除它。答案中的链接很有用。 - Armstrongest

3
你在问题中的最后一句话似乎已经回答了它。假设标签存储在标签表中,我将始终拥有一个ID列(int或GUID)和标签名称的varchar/string列。将某些其他实体与一个或多个标签相关联的多对多(连接表)将具有两个包含“其他实体”和标签ID的ID列。
然后很容易编辑标签(例如更正拼写错误)而不触及关键内容。当使用与连接表相连的查询时,您应该获得更好的性能,并且这也意味着您更好地规范化了数据。
记住,“关键内容,全部关键内容,没有别的东西,所以请帮助我coddd!” :)

0

如果您预计会有很多标签,并且正在使用关系型数据库,那么在内部使用数据库本身支持的ID(比如RID)可能会提供更好的性能。

如果这不是一个问题:可以使用简短的标签名称。您可以为标签提供长名称,在用户界面中也会显示出来,这样在合适的地方(比如在创建新标签时询问用户)就能体现出来。您更有可能需要编辑这些长名称,因为没有直接引用它们,所以这不是个问题。

此外,如果您正在使用关系型数据库,可能很容易通过一个简单的查询来更改一个标签的名称以及其所有引用,这可能会稍微增加一些开销,但可能并不频繁,无需为此进行优化。另外,请考虑您可能会有重复的标签需要合并,所以您可能希望能够做到这一点。


要求用户在创建标签时提供短版本和长版本只会导致混淆。最好坚持使用标签名称或像您建议的人工键。 - BigJump
我同意这可能会导致混淆 - 这取决于网站和它所面向的用户。这可以是可选的,但只需要在标签创建时完成,因此为了获得用户友好的名称,这可能是值得的。 - Tom Alsberg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接