让我们说google.com上有标记:
search,google,searchengine,engine,web
Facebook有标签:
facebook,social,networking,friends,community
我应该如何将域及其各自的标签存储在数据库中?
答案 0 :(得分:2)
你应该创建3个表来存储所有这些东西:
domains: id | name
tags: id | name
domains_tags: tag_id | domain_id
域名:
id | name
------------------
1 | google.com
2 | stackoverflow.com
标签:
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
正如在另一个答案中提出的那样 - 您还可以向名为domains
的{{1}}添加其他字段,并用逗号分隔存储标记,但此解决方案很奇怪,因为当您遇到麻烦时会遇到麻烦我需要对域名和标签进行一些分析/统计/搜索。遵循这个想法的唯一理由是“缓存”当前域的标签列表,只显示作为添加(不替换!!)到我先给出的解决方案。
答案 1 :(得分:0)
听起来像一个非常简单的表,有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
...