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

发布于 2024-10-16 16:11:22 字数 218 浏览 1 评论 0原文

假设 google.com 的标签名为:

search,google,searchengine,engine,web

Facebook 的标签名为:

facebook,social,networking,friends,community

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

Lets say google.com has tags called:

search,google,searchengine,engine,web

Facebook has tags called:

facebook,social,networking,friends,community

How should I store both the domain and its respective tags in a database?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

韬韬不绝 2024-10-23 16:11:22

您应该创建 3 个表来存储所有这些内容:

  • domains: id |名称
  • 标签:id |名称
  • domains_tags: tag_id | domain_id

domains:

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

tags:

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

domains_tags:

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

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

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

该技术被命名为 Many-To-Many

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

You should create 3 tables for store all this stuff:

  • domains: id | name
  • tags: id | name
  • domains_tags: tag_id | domain_id

domains:

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

tags:

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

domains_tags:

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

In this sample there are 2 tags related to google domain and one tag related to SO

And for each relation you need to add one more record to domains_tags that will store relation between domain and particular tag.

This technique is named Many-To-Many

As proposed in another answer - you can also add additional field to domains named tags and store tags there separated by comma, but this solution is weird, since you'll get troubles when you'll need to have some analytics/statistics/searches about domains and tags. The only reason to follow this idea is to "cache" current domain's tag list to just display, as an addition (not replacement!!) to the solution I've given first.

意中人 2024-10-23 16:11:22

听起来像是一个非常简单的 2 列表 |域名 |标签|

CREATE TABLE tag_table (domain varchar(255), tag varchar (255));
SELECT tag FROM tag_table WHERE domain = 'google.com';
INSERT into tag_table (domain, tag) VALUES ('google.com', 'search');



i.e.
  google.com | search
  google.com | google
  google.com | searchengine
  google.com | engine
  google.com | web
  facebook.com | facebook
  facebook.com | social
  facebook.com | network
  ...

Sounds like a very simple table with 2 columns | Domain | tag |

CREATE TABLE tag_table (domain varchar(255), tag varchar (255));
SELECT tag FROM tag_table WHERE domain = 'google.com';
INSERT into tag_table (domain, tag) VALUES ('google.com', 'search');



i.e.
  google.com | search
  google.com | google
  google.com | searchengine
  google.com | engine
  google.com | web
  facebook.com | facebook
  facebook.com | social
  facebook.com | network
  ...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文