mysql - 我应该如何在数据库中存储域名标签?

标签 mysql database database-design tags

假设 google.com 的标签名为:

search,google,searchengine,engine,web

Facebook 的标签名为:

facebook,social,networking,friends,community

我应该如何将域及其各自的标签存储在数据库中?

最佳答案

你应该创建 3 个表来存储所有这些东西:

  • 域:id |姓名
  • 标签:id |姓名
  • domains_tags: tag_id | domain_id

域:

id | name
------------------
1  | google.com
2  | stackoverflow.com

标签:

id | name
------------------
1  | web
2  | lol
3  | facepalm.jpg

域标签:

domain_id | tag_id
------------------
1         | 1
1         | 2
2         | 3

在此示例中,有 2 个标签与 google 域相关,1 个标签与 SO

相关

对于每个关系,您需要向 domains_tags 添加一条记录,以存储域和特定标签之间的关系。

这项技术被命名为Many-To-Many

正如在另一个答案中所建议的那样 - 您还可以向名为 tagsdomains 添加额外的字段,并将标签存储在那里,用逗号分隔,但这个解决方案很奇怪,因为你'当您需要对域和标签进行一些分析/统计/搜索时,您会遇到麻烦。遵循这个想法的唯一原因是“缓存”当前域的标签列表以仅显示,作为补充(而不是替代!!)到我首先给出的解决方案。

关于mysql - 我应该如何在数据库中存储域名标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4940763/

相关文章:

带 WHILE 循环和数组的 PHP 更新语句

php - Mysql Join inner join left join Multiple Tables null on right table

sql - 这个select语句怎么写?

database - SQLAlchemy - 将一个类映射到多个表,其中一个是只读的

MySQL循环插入组合值

php - 带有来自另一个表的字段检查的mysql DELETE

c# - 连接到 MYSQL 数据库错误(UWP C#)

php - TXT 文件还是数据库?

mysql - 合并具有一对一关系的表

mySQL:具有多列的表