2011-08-27 36 views
2

我試圖在我的網站上實現一個類似Facebook的「喜歡」功能的系統。用戶可以點擊一個按鈕,其中counter++的。但是,我有效地將數據存儲到我的數據庫中遇到了問題。數據庫規範化和嵌套列表 - 無法想象的解決方案

每個故事在我的DB的stories表中有自己的一行,列likeusers_like

我希望每個人只能夠喜歡一次故事。因此我需要以某種方式存儲顯示用戶實際上已經發布的數據。

我所能的事情是有一個名爲列users_like然後添加每個用戶,其次是一個逗號,使用CONCAT,然後使用PHP函數explode數據列。

但是,據我所知,這種方法與數據庫規範化的方向相反。

這樣做的最好方法是什麼,我明白「最好」是主觀的。

我不能將liked標誌添加到user表中,因爲會有大量的人可能會喜歡的故事。

感謝

回答

5

你需要一個多對多表中存儲一個外鍵stories表和外鍵user表數據庫。你在這張桌子上放了一個限制,說fk - user fk組合必須是唯一的。

現在,您甚至不必擁有like列,您只需計算與您的故事相對應的多對多表中的行數。

+0

啊,甜美。我有獨特的故事和用戶密鑰,所以這完全符合我的框架。 謝謝。 – Ando