我想知道我是否允許我的用戶選擇他們的帖子將顯示在哪些類別中,並且他們可以從一個到多箇中選擇多個類別。MySQL表問題。 [多部分問題]
- 我將如何將類別id值或值存儲在數據庫中?
- 我是否應該將每個值組合在一起,例如45,12,45,78,還是應該一次存儲一個值?
- 我的桌子結構會是怎樣的?
- 或者我應該將它添加到現有的表?
我想知道我是否允許我的用戶選擇他們的帖子將顯示在哪些類別中,並且他們可以從一個到多箇中選擇多個類別。MySQL表問題。 [多部分問題]
你所描述的結構是一個真正的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'
設計數據庫表的最好方法是儘可能以最小的塊數分開它們。在這種情況下,我將使用3個表格進行設計:Post,Category和PostCategory。 發佈將成爲用戶創建的每個帖子的表格。 類別應該可能是查找表。 PostCategory是存儲每個帖子的類別的表格。
在'條目到Tags'的'id'字段表是不必要的。使'entry_id'和'tag_id'成爲該表的(複合)主鍵。 – 2010-08-19 17:55:07
@Jeff Mattfield,真的!我已經將其設置在我自己的未來版本控制方案中。爲簡單起見而改變。 THKS! – Frankie 2010-08-19 17:57:38