实现标签的最佳方式(类似于StackOverflow)

Jon*_*ood 3 sql-server asp.net algorithm

可能重复:
您如何建议实施标签或标记

我有一个网站,其中包含一些包含大量文章的数据库.我想实现类似于stackoverflow上的标签的标签.

我可以想到实现它们的两种基本方法:

  1. 创建一个单独的Tags表,其中包含与Articles表的一对多关系.

  2. 将标签文本字段添加到我的文章表.

第一种方法似乎是最好的,但需要两个额外的表,这些表会变得非常大.似乎还有相当大的开销更新和维护数据.

第二种方法更容易实现和维护,并且使用更少的资源.但搜索效率会降低.我可能会使用LIKE甚至是全文搜索.

我对其他人认为最好的方法很感兴趣.或许还有另一种方法.

Rob*_*obb 7

我个人会选择选项1,之后再提两个表,所以我假设你正在考虑.

Table -Tag
Fields - TagID, TagName

Table -TagArticle
Fields - ArticleID, TagID

Table - Article
Fields - ArticleID, blah, blah, blah
Run Code Online (Sandbox Code Playgroud)

这不应该在存储方式上比转储到文章中的字段要多得多.此外,它是标准化的,它将始终为您的未来做好准备,并使您的数据库能够更好地按标签搜索文章.至于更新,你可能只会偶尔更新你阅读的次数,所以影响应该可以忽略不计,我不能想到任何维护任务,除了确保你的指数是最新的,你要去的无论如何必须在其他桌子上做,应该是自动化的.

附带福利意味着您可以快速创建顶级标签列表或标签云等内容.