2010-08-19 58 views
1

我想知道我是否允許我的用戶選擇他們的帖子將顯示在哪些類別中,並且他們可以從一個到多箇中選擇多個類別。MySQL表問題。 [多部分問題]

  • 我將如何將類別id值或值存儲在數據庫中?
  • 我是否應該將每個值組合在一起,例如45,12,45,78,還是應該一次存儲一個值?
  • 我的桌子結構會是怎樣的?
  • 或者我應該將它添加到現有的表?

回答

0

你所描述的結構是一個真正的many-to-many relationship(在所有標籤的結構和使用的一樣)。

Entries Table 
+----+-------+------+ 
| id | title | text | 
+----+-------+------+ 

Entries-to-Tags Table 
+----------+--------+ 
| entry_id | tag_id | 
+----------+--------+ 

Tags Table 
+----+-----+ 
| id | tag | 
+----+-----+ 

一個典型的SQL調用來檢查從標籤的所有條目將

SELECT * 
FROM tags_table as tg 
LEFT JOIN entries_to_tags AS entg ON tg.id = entg.tag_id 
LEFT JOIN entries AS en ON entg.entry_id = en.id 
WHERE tg.tag = 'my tag' 

一個典型的SQL調用來檢查標籤從一個入口將

SELECT * 
FROM entries AS en 
LEFT JOIN entries_to_tags AS entg ON en.id = entg.entry_id 
LEFT JOIN tags_table AS tg ON entg.tag_id = tg.id 
WHERE en.title = 'my article title' 
+0

在'條目到Tags'的'id'字段表是不必要的。使'entry_id'和'tag_id'成爲該表的(複合)主鍵。 – 2010-08-19 17:55:07

+0

@Jeff Mattfield,真的!我已經將其設置在我自己的未來版本控制方案中。爲簡單起見而改變。 THKS! – Frankie 2010-08-19 17:57:38

0

設計數據庫表的最好方法是儘可能以最小的塊數分開它們。在這種情況下,我將使用3個表格進行設計:Post,Category和PostCategory。 發佈將成爲用戶創建的每個帖子的表格。 類別應該可能是查找表。 PostCategory是存儲每個帖子的類別的表格。

  • Post是一對多PostCategory
  • 類別是一對多PostCategory
  • PostCategory具有和帖子ID主類別ID IDS