2011-02-09 71 views
0

比方說google.com呼籲標籤:如何在數據庫中存儲域名標籤?

search,google,searchengine,engine,web 

Facebook有標籤調用:在數據庫

facebook,social,networking,friends,community 

我應該如何同時存儲域及其相應的標籤?

+0

看起來像昨天這個問題:http://stackoverflow.com/questions/4912579/how-do-i-find-websites-using-tag-search要麼你是一個新的帳戶,或多個人們正在努力爲他們完成他們的功課。 – 2011-02-09 02:42:46

+0

@Justin Morgan:或者他們剛剛被聘用到同一個自由職位;-) – zerkms 2011-02-09 02:50:00

回答

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命名tags和存儲標籤有以逗號分隔,但這種方法是奇怪的,因爲你會得到時候麻煩您需要對域和標籤進行一些分析/統計/搜索。遵循這個想法的唯一原因是將當前域的標籤列表「緩存」到剛纔顯示的作爲新增的(而不是替換!!)到我先給出的解決方案。

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 
    ...