2014-03-27 30 views
0

因此,我正在製作一個網站,其中一組用戶試圖同時回答謎語,後來能夠向網站提交謎語。哪個數據結構用於給用戶獨特的謎語?

我想讓它的使用者永遠不會被給予兩次相同的謎語。所以我想要建議如何創建一個User.js類和一個Group.js類

User.js類需要一個數據結構來表示它從來沒有見過的謎語。現在我們稱之爲RiddlesNotSeenByUser。

Group.js類需要能夠將每個用戶的所有RiddlesNotSeenByUser合併到數據結構中讓我們調用RiddlesNotSeenByGroup。

然後,我將有一個巨大的謎語數據庫,我將需要高效地在數據庫中找到一個謎語,而不是在數據結構RiddlesNotSeenByGroup中。

謝謝!

回答

2

你可能不想保留一個RiddlesNotSeen列表,因爲如果你這樣做,那麼每當添加一個新用戶時,你必須用所有現有的謎語來填充他的列表。每當添加新的謎語時,都必須更新每個用戶。如果用戶數量和謎語數量甚至相當大,那麼您將會發現這種令人難以置信的昂貴。

你最好保留一個RiddlesSeen列表,並在每次用戶看到新的謎語時更新它。然後,當你想爲用戶選擇一個新的謎語時,你會得到整個謎語列表,刪除他看到的那些列表,並從結果中隨機選擇。數據庫非常擅長這樣做。