2010-09-03 78 views
0

我想創建一個網站,以訓練選擇題,問題是我不想重複每個用戶的問題,我會有很多問題和概率隨機獲得相同的問題是非常小的,對我來說重要的是,用戶不會看到相同的問題,那麼是否需要這樣做呢?我怎麼能這樣做..我想保存所有問題ID列表,並用它來調用新的問題還沒有使用,並保存更改....這種方式我必須保存加載的字符串登錄,包含所有問題,這是一個有效的方式來做到這一點?數據庫結構問題,對於多個問題ramdomaly叫

任何想法都歡迎改變結構更好

回答

1

我覺得你的基地的想法是正確的。存儲用戶已經在某處回答的問題的ID。類似

 asked_questions 
-------------------------- 
user_id   int 
question_id  int 

有了這個,你可以很容易做到

SELECT * FROM questions WHERE questions.id NOT IN (SELET asked_questions.question_id FROM asked_questions WHERE asled_questions.user_id = currentLoggedInUserId) LIMIT 10; 

,並有10個問題的用戶目前還沒有看到。

+0

嗨,我很擔心存儲效率,如果我有10,000個問題和1000個用戶...它超過1000萬記錄的2個整數......超過80 GB,我想記住最後100個問題那張桌子!這將是一個很好的解決方案,不要以爲用戶會記得比這更多......這會使設計變得困難嗎?因爲我需要知道更新的記錄ID! – seismael 2010-09-08 07:40:41

+0

如果您使用適當的索引,那應該不成問題。 1000萬條目並不多,應該可以通過精心設計的數據庫輕鬆處理。您可以將每個「ask_question」存儲爲日期,以便您知道用戶最後回答問題的時間,並可以根據日期來決定。 – DrColossos 2010-09-08 16:52:36