1

我有以下方案:我的网站是一个问答游戏,所以每个问题都有“hasMany”答案,但一个问题也有“hasOne”正确答案,也由 Answer 模型表示。我还没有对此进行测试,但是我的程序员的直觉告诉我,检索到的数组将是多余的,它不会将正确的答案与其余的答案分开。

我的问题是,我如何在模型和数据库中表示这一点,有没有更好的方法来表示这种关系?

4

4 回答 4

1

好吧,我可以想出两种方法来做到这一点。

  1. 一个问题有很多答案,而一个问题属于一个正确答案(在问题中有正确答案的 answer_id,所以它看起来像Question(id, answer_id)and Answer(id, question_id)

  2. 在答案上设置一个标志,以反映它是否正确。

我认为选择哪一个更多的是个人意见,但我可能会选择 2,即使 1 从关系思维中更正确,但它减少了冗余,你仍然可以在答案中搜索它。

当然,如果一个问题可以有多个正确答案,那么选项 1 是不可能的。

于 2009-11-26T22:16:15.860 回答
1

或者只是看看这个页面,非常有用;) http://www.charlesgarwood.com/blog/?p=23

于 2009-12-01T10:06:18.910 回答
0

另一种方法是创建映射到同一个表的 2 个模型。在答案中有一个标志,表明它是否是正确的答案。

由于您不会切换哪个答案是正确的,因此在创建时将正确性映射到一个标志就可以了,并且会让您有多个正确答案。使用加权系统,您甚至可以评估答案的正确性。

对于两个单独的模型,请确保在关系或模型本身中设置条件,以便 CorrectAnswer 模型仅找到带有 Answer.correct = true 字段集的答案。然后,您可以拥有一个没有此类条件的通用 Answer 模型。在 Question 模型中完成,您甚至可以纯粹使用关联标志来获取这两种类型。

于 2009-11-29T02:13:37.660 回答
0

尝试在 cakeqs.org 询问它是与 cakephp 相关的门户。但是绝对你应该为这两个关联使用不同的别名

于 2009-12-01T12:01:48.410 回答