0

次のようなデータモデルがあります...

  • トピックには複数の演習を含めることができます (ExerciseTopic(FK) は TopicId(PK) を参照します)。
  • 演習には複数の質問を含めることができます (演習 (FK) は演習 Id (PK) を参照します)。
  • 質問には、複数 (4) の AnswerChoices を含めることができます

ここに画像の説明を入力

各選択肢を一意に識別するのはこの組み合わせであるため、AnswerChoices テーブルの 3 つの部分の主キーが必要です。

  • データの整合性のために AnswerChoices テーブルに外部キーが必要ですか、それとも
  • 複合主キーで十分ですか? 外部キーが必要な場合、それは 2 つの部分からなる複合外部キー (ExerciseId、QuestionId) になりますか?

サンプルデータ ...

  • トピック(T1)
    • 演習 E1
      • 質問 1 (回答の選択肢: a、b、c、d)
      • 質問 2 (回答の選択肢: a、b、c、d)
      • 質問 3 (回答の選択肢: a、b、c、d)
    • 演習 E2
      • 質問 1 (回答の選択肢: a、b、c、d)
      • 質問 2 (回答の選択肢: a、b、c、d)
      • 質問 3 (回答の選択肢: a、b、c、d)
    • 演習 E3
      • 質問 1 (回答の選択肢: a、b、c、d)
      • 質問 2 (回答の選択肢: a、b、c、d)
      • 質問 3 (回答の選択肢: a、b、c、d)
  • トピック(T2)
    • 演習 E1
      • 質問 1 (回答の選択肢: a、b、c、d)
      • 質問 2 (回答の選択肢: a、b、c、d)
      • 質問 3 (回答の選択肢: a、b、c、d)
    • 演習 E2
      • 質問 1 (回答の選択肢: a、b、c、d)
      • 質問 2 (回答の選択肢: a、b、c、d)
      • 質問 3 (回答の選択肢: a、b、c、d)
    • 演習 E3
      • 質問 1 (回答の選択肢: a、b、c、d)
      • 質問 2 (回答の選択肢: a、b、c、d)
      • 質問 3 (回答の選択肢: a、b、c、d)
4

2 に答える 2

1

AnswerChoicesには 4 列のキーが必要なようです: {TopicID, ExerciseID, QuestionID, ChoiceID}。また、テーブル「AnswerChoices」にはforeign key (TopicID, ExerciseID, QuestionID) references Questions (TopicID, ExerciseID, QuestionID).

于 2013-01-08T14:27:00.213 に答える
0

「または」である必要はありません
複合および外部を持つことができます
1 つのオプション

Exercise:
PK TopicID FK to Topic
PK ExerciseID

Question:
PK TopicID FK to Exercise
PK ExerciseID FK to Exercise
PK QuestionID

AnswerChoices:
PK TopicID FK to Question
PK ExerciseID FK to Question
PK QuestionID FK to Question
PK ChoiceID

UserAnsers:
PK UserID FK to Users
PK TopicID FK to AnswerChoices
PK ExerciseID FK to AnswerChoices
PK QuestionID FK to AnswerChoices
PK ChoiceID FK to AnswerChoices

ユーザーが 1 つの回答しか選択できない場合は、ChoiceID から PK を削除します

于 2013-01-08T14:30:36.310 に答える