2012-12-17 32 views
0

排序我有一個相當普遍的標籤系統設置:最快的方式通過「標記」 DB

table|'keyword'| : tag_id  | tag 
table|'tag_thread'|: tag_thread_id | tag_id  | thread_id 
table|'thread'| : thread_id  | thread_info 

但是,因爲我已經改變了我的標籤將被顯示的方式。

我的新想法是在keyword_tbl中有一個related列。我決定嘗試這條路線,因爲我想做一個麪包屑系統,並且想'訂購'標籤,例如運動 - >棒球 - >投手。另外,如果他們輸入「棒球」,我希望將體育作爲標籤的一部分,而不用擔心它。

keyword_tbl : keyword_id | keyword | related_id 

例如:

keyword_tbl: 
keyword_id // 1  // 2  // 3 
keyword // sports // baseball // pitchers 
related // 0  // 1  // 2 

0標誌着事實,這是一個 '通用' 的標籤,是最廣泛的術語。這意味着對於他們發佈的每個線程,我只需要存儲一個值(最詳細的,或上面例子中的「投手」)。從「投手」開始,我可以派生出相關的領域,並以倒退的方式創建麪包屑。

我的問題是這樣的:我想用麪包屑做什麼更好的路線?我的計劃是否有人可以看到的方式有什麼特別的錯誤?

謝謝

+0

[看這裏看起來和你的一樣] [(http://stackoverflow.com/questions/7221196/correct-way-to-set-up-mysql-database-for-related-tag-searches))。 –

回答

1

這裏有一些潛在的問題(但這並不意味着你在錯誤的軌道上)。

通常,標籤比類別更寬鬆。聽起來你正在將它們混合在一起,這可能是一個問題。當你有一個適用於棒球和橄欖球的人的標籤(比如說,「左撇子」)時會發生什麼?標籤是爲了避免這種分類問題而發明的,其中所有東西都需要樹中的一個父代。

根據您可能擁有多少級別的麪包屑,查找相關標記集可能效率低下/凌亂。誰負責將標籤分類到樹中?如果它是一個管理員功能(因此不經常發生),您可能需要創建一個「物化視圖」來保存每個標籤的所有相關標籤。

+0

感謝您的反饋意見。要回答你的問題,用戶將有能力創建自己的標籤。所描述的標籤系統存在的問題涉及「左手持有者」,即如果用戶正在查看「左手持標籤」並創建帖子,則無法在「棒球」,「足球」 「或」體育「,以及。這是我試圖克服的問題。 –

+0

這是我的觀點 - 標記和分類作爲概念不是很兼容,不管實現如何。你看到他們混合在一起那樣成功嗎?我很好奇,因爲兩者都很有用,我不知道如何一起使用它們。您可以擁有不同的標籤和類別,但這對您的用戶來說聽起來像是額外的工作。 – jfrank

+0

有趣。我會盡快回復你。現在,我會將其標記爲正確。雖然不是我正在尋找的答案,但肯定是一個信息豐富的答案,這將幫助我發展這個概念。 –