私は、学校、チーム、選手に関するデータを収集するアプリを持っています。 学校、チーム、プレーヤーレベルのカスタマイズされた質問があります。データベース構造のフィードバック
私は2つのデータベースデザインを考え出しました。私はその道を行く前に、各デザインの長所と短所に興味を持っています。
デザイン1
このデザインはすべてのために別々のテーブルを持っています。データベース設計ははっきりしているようですが、基本的に同じ3組のテーブルをサポートするために、コード内に多くのレプリケーションが存在することが予想されます。
テーブル:
SchoolQuestions (id, questiontext, length, is_required)
SchoolAnswers(id, school_id, school_question_id, answer)
TeamQuestions (id, questiontext, length, is_required)
TeamAnswers(id, team_id, team_question_id, answer)
PlayerQuestions (id, questiontext, length, is_required)
PlayerAnswers(id, player_id, player_question_id, answer)
デザイン2
この設計は、2つのテーブルのすべてを格納します。
Questions.typeフィールドには、回答テーブルでENUM('SCHOOL', 'PLAYER', 'TEAM')
ある、唯一schoold_id、TEAM_ID又はplayer_idのがNULLでないことができます。
これは、最も簡単な解決策のように思えるが、冗長列を持っているので、
テーブル少し厄介そうです:あなたはより良いを持っている場合
Questions (id, type, questiontext, length, is_required)
Answers(id, school_id, team_id, player_id, question_id, answer)
すべてのフィードバックを感謝、または改良されたデザインを提案しています溶液。
3つの列について1つの一般的なID – bumperbox