2013-02-20 102 views
1

我正在尋找在我正在製作的網站上實現每個用戶的標籤/興趣雲功能。PHP和MySQL中的每個用戶標籤雲

每個用戶都有一個個人資料頁面,並且在所述頁面上顯示他們預先選擇的興趣的標籤雲。每個用戶都可以鍵入他們的逗號分隔,並提供建議,如果這樣的標籤之前已經使用過,或者創建了,如果它不存在。興趣將是諸如音樂流派,興趣愛好等東西。

我還想添加基本功能,如比較用戶標籤雲(共享標籤),以根據他們的雲查找「兼容」的用戶。

我可以使用數據庫物流的幫助來實現這一點。我瞭解簡單的數據庫設計,但是我無法圍繞上述設計進行包裝。

目前數據庫是一張單獨的表,帶有ID /用戶名/密碼/驗證(最後一個用於電子郵件驗證的密鑰)。

我爲標籤雲數據庫提出的唯一想法是兩個表 - 一個標籤帶有tagid和標記名字段,另一個帶有tagid和userid字段的users_tags,以及每個用戶標籤的條目具有。不過,我不確定這是否是最佳做法。

希望有人可以給我一些這方面的指示 - 在此先感謝。

回答

0

使用userid和tagid的表格聽起來像是最佳路線。

找到「兼容」的用戶,你提到你可以運行類似的查詢來

SELECT 
    ut.userid, COUNT(*) ct 
FROM 
    user_tags ut 
WHERE 
    ut.tagid IN (SELECT uta.tagid FROM user_tags uta WHERE uta.userid=24) 
GROUP BY ut.userid ORDER BY ct DESC; 

注意,上面的查詢也將返回原來的用戶,但它的效率遠高於從移除他查詢。

+0

同意 - 除了「......更高效」 - 不包括原始帳戶不會影響性能/效率。使用內部連接而不是子查詢的OTOH很可能會提高性能。 – symcbean 2013-02-20 13:14:07

+0

symcbean,我如何使用內部連接來做到這一點?你能擴大一點嗎?謝謝 – Lemon 2013-02-20 13:54:58