私は次のスキームを持っています:私のサイトは雑学ゲームなので、すべての質問は「多くの」回答を持っていますが、質問はまた、回答モデルによって表される正しい回答も「1つ」あります。私はまだこれをテストしていませんが、私のプログラマーの本能は、取得された配列は一種の冗長であり、正しい回答を残りの配列から分離しないことを教えてくれます。
私の質問は、モデルとデータベースでこれをどのように表現するかです。この関係を表現するより良い方法はありますか?
私は次のスキームを持っています:私のサイトは雑学ゲームなので、すべての質問は「多くの」回答を持っていますが、質問はまた、回答モデルによって表される正しい回答も「1つ」あります。私はまだこれをテストしていませんが、私のプログラマーの本能は、取得された配列は一種の冗長であり、正しい回答を残りの配列から分離しないことを教えてくれます。
私の質問は、モデルとデータベースでこれをどのように表現するかです。この関係を表現するより良い方法はありますか?
または、このページを見てください。非常に便利です ;) http://www.charlesgarwood.com/blog/?p=23
さて、私はそれを行う2つの方法を思いつくことができます.
質問には多くの回答がありますが、質問は正解に属します (質問の正解には answer_id があるため、 and のようにQuestion(id, answer_id)
なりますAnswer(id, question_id)
)
答えが正しいかどうかを反映するフラグを答えに付けます。
どちらを選択するかは個人的な意見だと思いますが、リレーショナル思考から1の方が正しいとしても、おそらく2番に行くでしょうが、冗長性が減り、回答内で検索することができます.
もちろん、質問に複数の正解がある場合、オプション番号 1 は問題外です。
別のルートは、同じテーブルにマップされた2つのモデルを作成することです。正解かどうかを示すフラグを答えに入れてください。
どちらの答えが正しいかを切り替えることはないので、作成時に正しさをフラグにマッピングすることは問題なく、複数の正解を得ることができます。重み付けシステムを使用すると、答えの正しさを評価することもできます。
2つの別々のモデルを使用する場合は、リレーションシップまたはモデル自体に条件を設定して、CorrectAnswerモデルがAnswer.correct=trueフィールドが設定されている回答のみを検出するようにしてください。そうすれば、そのような条件を持たない一般的な回答モデルを作成できます。質問モデルで行うと、純粋に関連付けフラグを使用して両方のタイプをフェッチすることもできます。
Cakeqs.org で質問してみてください。cakephp 関連のポータルです。ただし、両方の関連付けに異なるエイリアスを使用する必要があることは間違いありません