【发布时间】:2011-03-04 18:35:31
【问题描述】:
我目前正在从事一个中型网络项目,但遇到了问题。
我想要做的是显示一个问题和一张图片。我有一个(全局)问题列表和一个(全局)图像列表,应该针对所有图像询问所有问题。
就用户可以看到的问题和图像应随机选择。然而,来自答案(问题/图像对)的统计数据将用于研究目的。这意味着必须选择所有问题/图像对,以便答案将均匀分布在所有问题和所有图像中。
用户应该只能回答一次特定的问题/图像对。
我正在使用 mysql 数据库和 php。目前,我有三个数据库表:
tbl_images (image_id)
tbl_questions (question_id)
tbl_answers (answer_id, image_id, question_id, user_id)
其他列与此特定问题无关。
解决方案 1:
跟踪每个图像/问题的使用次数(在每个表中添加一列)。始终选择被问得最少的图片和问题。
问题:
我真正感兴趣的是图像问题之间的分布,反之亦然,而不是每个问题都是全局的。
解决方案 2:
添加另一个表,其中包含所有问题/图像对以及它被询问的次数。选择最低的组合(如果计数列按升序排序,则为第一行)。
问题:
不强制用户只能回答一次问题。也不会给用户选择随机的现象。
解决方案 3:
与 #2 相同,但将问题/图像/user_id 存储在表中。
问题:
性能问题(?),为每个用户浪费了大量空间。可能会有半大量的数据(数千个问题/图像和至少数百个用户)。
解决方案 4:
从所有可用内容中随机选择一个问题和图像。如果答案数量足够多,它们将均匀分布。
问题:
如果我添加一个新问题或图像,他们将不会得到比其他人更多的答案,因此永远不会赶上。我想要所有问题/图像对的统计数据数量均等。
解决方案 5:
加权随机。随机选择一些问题/图像对(例如大约 10 到 100 个),然后从中挑选出用户未回答的最佳(例如,最低的全局计数)。
问题:
不保证最近添加的问题或图像会很快得到很多答案。
解决方案 #5 可能是迄今为止我想出的最好的解决方案。
非常感谢您的意见,感谢您的宝贵时间。
【问题讨论】:
-
我在上一个问题中得到了一些关于加权值的很好的答案。也许他们会帮助你。 stackoverflow.com/questions/4030427/…
-
P.S.编程中没有“真正的随机”之类的东西。只有伪随机(除非你可以使用自然随机生成器,即使那样,也可以说它只是随机的,因为我们不知道如何预测它。)
标签: php mysql sql performance