2010-03-14 97 views
0

我已經編寫了一個小型的論壇軟件在PHP的人在帖子線程,我想支持標籤。什麼是支持標籤系統的SQL方案?

我應該爲此製作多少個SQL表?並簡要介紹標籤系統如何工作?

感謝

+0

可能重複:http://stackoverflow.com/questions/20856/how-do-you-recommend-implementing-tags-or-tagging – APC 2010-03-14 20:39:33

回答

4

基本上你需要的標籤(ID,標籤)表和標籤到崗位M:M關係關係表(TAG_ID,POST_ID)。要選擇一個給定的標籤

select posts.* from posts, tags, post_tags 
    where post_tags.post_id = posts.id 
    and post_tags.tag_id = tags.id 
    and tags.tag = "whatever_tag" 

帖子迴應的評論:單個表(TAG,後)的做法,可能會出現「更簡單」,但它不是完全可擴展的。如果你決定添加一些額外的信息到你的標籤 - 如創建日期或創建它,會怎樣?或者讓用戶擁有「最喜歡的標籤」,就像SO這樣 - 沒有單獨的標籤表,這將會很棘手。

一般來說,最好保留數據庫normalized,即使它在開始的時候看起來很「複雜」。

+0

感謝stereofrog,我想知道如果做1表會更好:標籤(tagtitle,entryid)? – Ryan 2010-03-14 21:00:51

+0

我同意stereofrog。 2表方法可能是最好的方法。保持您的標籤表清潔和獨特也允許M:M關係 – Jayrox 2010-03-14 21:33:48

+0

@Tom:請參閱編輯... – user187291 2010-03-14 21:55:09