2011-03-27 80 views
1

我真的想在用戶從一個字段中選擇他們時向博客文章中添加多個標籤,但我想知道如何在mysql中存儲標籤,我是否應該有字段來存放所有標籤,或者應該一個一個存儲即將多個標籤添加到博客文章的最佳方式是什麼?

tags_field = (cats ,animals, fur) 

OR

id1 cats 

id2 animals 

id3 fur 

我想他們呈現給用戶時使用的第一個例子,然後爆炸的名單和他們sepearte成單一的標籤! :))感謝

回答

4

你應該使用三個表:您存儲的職位

  • 一臺;每行一個帖子
  • 您存儲標籤的一張表;每行一個標籤
  • 和一個聯接,能,您存儲夫婦tag_id + post_id

這樣,一個標籤可以通過幾個職位中,和一個後能有幾個標籤 - 並沒有任何類型的數據的重複。


所以,基本上,你的表是這樣的:

posts 
    - id ; primary key 
    - date 
    - title 
    - content 

tags 
    - id ; primary key 
    - name 

posts_tags 
    - tag_id ; primary key ; foreign key to tags.tag_id 
    - post_id ; primary key ; foreign key to posts.post_id 
+0

你好,我有這樣的結構,以及:))在我當前的數據庫,所以我假設我應該去與第二個例子!大聲笑:)) – pingpong 2011-03-27 15:48:49

+0

在單個字段中存儲多個數據通常是一個不錯的主意;-) – 2011-03-27 15:50:44

+0

謝謝:)))明確我知道你爲什麼有72.k代表! – pingpong 2011-03-27 15:51:27

1

如果用第一種方法去,你將在查詢困難。例如,您將無法輕鬆找到所有標記爲「貓」的帖子。如果你採用第二種方法,那不會是一個問題。

換句話說,你應該有postId_tag表來映射帖子和標籤。