2017-11-10 11 views
1

を持たないためにMYSQL DBトークを構築することができ、私は3つのテーブルusersuserchoices、およびchoicesどのように私は冗長性

ユーザー

  • のuserId

UserChoices

を持っています
  • のuserId私はEにこれらの3つのテーブルをリンクしようとしています
  • choice1
  • choice2
  • choice3

選択肢

  • 選択肢
  • pic_loc

その他。私はchoiceIdをテーブルChoicesに追加してからchoice1 ...をUserChoicesに取り除くことを考えましたが、それは1人のユーザが複数のレコードを持つ原因になります。私が見ていない方法はありますか?

答えて

1

Userテーブル:

  • ユーザーID
  • 名前

選択肢テーブル:

  • ChoiceId
  • pic_loc

UserChoicesテーブル:

  • ユーザーID
  • ChoiceId
表は両方のユーザーと選択肢テーブルをマッピングするために使用される

UserChoices

+0

待ち、私はこれを見て、これはで冗長性を作成するwouldntはユーザーの選択?ユーザーが選択できる複数の選択肢があるとすれば、各ユーザーごとに複数の行があるとします@Sonikas – Kevlwig

+1

事前定義された選択肢とユーザーがある場合、ユーザーに選択肢を割り当てる適切な方法はマッピング表ですが、ユーザーIDは問題ありませんが、ユーザーが同じ選択肢を2回選択するのを防ぐために、固有の制約を追加できます。このような状況であるマッピングテーブルはベストプラクティスです。 – Sonikas