2016-05-12 9 views
1

モデル間の関係は、彼または彼女は、YesまたはNo私は質問ごとに、各ユーザーが30個の質問の同じ調査を行いますシンプルなアプリをデザインしたいと思います

を選択しますOne-To-One、多対1、多対多の3種類の関係です。

しかし、関係を設定するにはどの方法が最適かわかりません。ここで

は、私が何を考えている:

User: 
+ id (PK) 
+ name 

Question: 
+ id (PK) 
+ content 

Choice: 
+ user (Foreign Key) //Many-To-One or One-To-One ? (1) 
+ question (Foreign Key) //Many-To-One or One-To-One ? (2) 

私があればわからないので、ここに捕まってしまった:

(1) 1ユーザーは多くの選択肢が(多対一)にすることができOR 1ユーザーは各質問(1対1)に対して1つのみ選択できますか?

(2) 1質問には選択肢が1つのみ(はい/いいえ)、1つの質問はこのユーザーに対しては「はい」、別のユーザーには「いいえ」とすることができます。

ありがとうございました!

答えて

0

ユーザーと選択肢の関係は、1人のユーザーが多くの質問に対して多くの選択肢を持つことができるため、単純な一対多です。

同じ理由で、ユーザーと質問の関係も同じです。

さらに、バッファリングされる可能性があるのは、Choiceモデルのユーザーフィールドと質問フィールドの両方に制約があるという事実です。質問ごとに1ユーザーにつき1つの選択肢しかないはずです。

詳細はmodel meta options and unique togetherです。次のように

+0

は、あなたの迅速な答えをいただき、ありがとうございます。私の次の質問があまりにも無知なら私を許してください:私はあなたの答えを理解すると、1ユーザーが多くの質問オブジェクトを持っているため、ユーザーと質問は一対多の関係にあります。しかし、質問のオブジェクトを30個作成し、多くのユーザーにそれらを再利用する方法があるのだろうかと思います。これが可能であれば、多くのユーザーが1つの質問を使うことができます。この場合、ユーザーと質問の関係は多対多になりますか? さらに、ChoiceとQuestionの関係は何ですか? –

+0

あなたはこれについてあまりにも混乱しており、私はあなたにそれをより明確にする方法を知らない。データモデリングに関しては常に意見がありますが、QuestionとUserは、Choiceモデル以外には全く関係がないように見えます.Choiceモデルは、ユーザーが質問に関してどの選択をしたかを示しています。あなたがこれをモデル化する方法はたくさんあります。例えば、Choiceをスルーモデルとする多対多の関係を使用することができます。あなたがすべきであれば、誰もこの文脈で言うことができません。 – Wtower

+1

Wtowerありがとう!あなたが私に与えたモデルのメタオプションからもっと読んで、あなたの提案を試してみよう!いい日! –

1

あなたの要件は次のとおりです。

  1. 選択する多くのユーザーのための30個の質問があります。
  2. 1つの質問に対して、ユーザーは2つの選択肢があります。はいまたはいいえです。

ので

from django.db import models 
class Choice(models.Model): 
    user = models.ForeignKey(User) 
    question = models.ForeignKey(Question) 
    choice = models.BooleanField() 
+0

ありがとうBill。彼!いい日! –