2016-09-19 86 views
-2

我正在創建一個系統,允許用戶(通過用戶標識號進行標識)對帖子投票(認爲是Reddit,StackOverflow等)。使用MySQL實現投票或「喜歡」

用戶可以投票或不投票。

給定帖子上的投票數很容易存儲在包含帖子的表格中。

然而,跟蹤投票的人是完全不同的任務,我不知道如何處理。

我想我可以有一個表,將有兩列:用戶ID和帖子ID。

當他們在帖子上投票時,我將他們的用戶ID和帖子ID添加到該表中。如果他們不動,我從表中刪除該條目。

EG:

User ID | Post ID 
1  | 3949 
1  | 4093 
2  | 3949 
etc... 

這是一個合理的解決方案?

+2

「這是一個合理的解決方案嗎?」是。 – nogad

回答

0

是的,這是相當簡單和容易解決問題的解決方案。你可以對你的評論做同樣的事情(如果你喜歡的話)。在您的MAIN_POST表中分配一個post_id,並在其他表中使用相同的post_id(註釋(post_id,user_id,post_comment,comment_time)和投票(post_id,user_id,vote_status(您可以使用1進行投票,0進行投票) 。它會使你的sql查詢複雜化,檢索數據,但有一點你可以做到。而在Android方面,有很多技巧可以處理和提供應用程序中的這些數據,並且您可以像Facebook一樣進行此類投票(如)和評論意見(您的意見和喜歡,以及其他人的姓名)。

0

在這種情況下,使用'in between'或'joining'表格是完全可以接受的解決方案。如果相關,您甚至可以向關係添加時間戳,並在用戶向上投票時向用戶顯示

此外,重要的是要妥善處理索引和關鍵字,以便在數據集增長後也可以正確執行表結構。

0

我不會刪除表中的行。我明白你爲什麼想這樣做,但爲什麼會丟失信息?相反,保持+ 1/-1值的每個條目,然後總結值後:

select sum(vote) 
from uservotes 
where postid = 1234; 

而且,我與Rick同意,你還應該包括創建日期/時間。