0

ユーザーが質問と各質問の事前定義された回答を使用して1つまたは複数の投票を作成する投票アプリケーションを設計していますが、これまでのところ問題はありません。これを行う最も簡単な方法は3つのテーブルを使用することです。

投票表:

id title description

質問表:

id poll_id question

回答表:

idquestion_id回答

問題は、ユーザーが投票の質問フローで別の動作を選択する可能性があることです。たとえば、通常の投票は質問1から質問N(最後の質問はN)になりますが、私の場合、ユーザーはユーザーは質問4の回答2を選択して、質問7にジャンプし、それらの間の残りを無視します。

この動作をデータベースに保存する方法について少し混乱していますが、何か提案はありますか?

4

2 に答える 2

1

次のようなものが必要なようです。

ここに画像の説明を入力

ここでキーの構造を見てください:

  • QUESTION はPOLL との識別関係にあり、結果の自然キーは一意性だけでなく順序付けも提供します。QUESTION_NO は、同じ POLL_ID を維持しながら単調に増加できます。
  • 同等の効果は、POSSIBLE_ANSWER の ANSWER_NO によって達成されます。
  • ユーザーは、任意の質問に対して最大 1 つの回答を選択できます。ANSWER_NO がACTUAL_ANSWER 主キーの外にあるのはそのためです。
  • 一方、USER_ID は ACTUAL_ANSWER PK 内に保持され、複数のユーザーが同じ回答を選択できるようにします。
  • 理論的には、{POLL_ID, QUESTION_TEXT} の QUESTION_TABLE にキーがあり、同じ投票で 2 つの異なる質問に同じテキストが含まれないようにする必要があります。ただし、QUESTION_TEXT は長くなる可能性があり、BLOB として実装される可能性があります。これは、ほとんどの DBMS がキーによるインデックス付けや制約を行うことができません。同様のジレンマが POSSIBLE_ANSWER.ANSWER_TEXT にも存在します。

ユーザーが質問をスキップした場合は、対応する ACTUAL_ANSWER を省略してください。

于 2013-02-05T11:33:02.297 に答える
0
Answer > NextQuestion table    

AnswerID    NextQuestionID

あなたの答えに基づいて、次の質問はここで定義されます

于 2013-02-05T10:56:56.127 に答える