2010-09-03 82 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