我想知道实现标签系统的最佳方法是什么,比如SO上使用的标签系统.我在想这个但是我无法想出一个好的可扩展解决方案.
我正在考虑拥有一个基本的3表解决方案:拥有一张tags桌子,一张articles桌子和一张tag_to_articles桌子.
这是解决这个问题的最佳解决方案,还是有替代方案?使用这种方法,表格会在时间上变得非常大,而且对于搜索而言,我认为这不是太有效.另一方面,查询执行速度并不重要.
我想更详细地说明在数据库中存储标签的toxi方法 - 在SO上的其他地方提到过.
数据库架构是:
Table: Item
Columns: ItemID, Title, Content
Table: Tag
Columns: TagID, Title
Table: ItemTag
Columns: ItemID, TagID
Run Code Online (Sandbox Code Playgroud)
这可能是一个愚蠢的问题(但我不知道答案)...表标签中的每个条目都应该有一个唯一的标题.即我只存储一次标签或每次使用它时存储它?
为了说明,我最终应该得到以下两个表中的哪一个:
TagID Title
1 Fish
2 Cat
3 Dog
Run Code Online (Sandbox Code Playgroud)
要么
TagID Title
1 Fish
2 Fish
3 Cat
4 Fish
5 Dog
6 Cat
Run Code Online (Sandbox Code Playgroud)
如果使用第一个表,在输入标签之前我首先必须运行和sql语句来查明它是否存在,对吗?
任何帮助将不胜感激.由于黑客攻击和索引,我最近手指烧伤,想要开始正确的基础知识.