У меня есть приложение, которое собирает данные о школах, командах и игроках.могут быть вопросы, заданные на уровне школы, команды и игрока.
Я разработал 2 дизайна базы данных, и мне просто интересны плюсы и минусы каждого дизайна, прежде чем я пойду по этому пути.
Дизайн 1
В этом дизайне есть отдельные таблицы для всего.дизайн базы данных кажется четким, но я ожидаю, что в коде будет много репликации для поддержки трех наборов таблиц, которые по сути одинаковы.
Таблицы:
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 может быть не нулевым.
Это кажется самым простым решением, но оно имеет избыточные столбцы, поэтому кажется немного грязным
Таблицы:
Questions (id, type, questiontext, length, is_required)
Answers(id, school_id, team_id, player_id, question_id, answer)
Любая обратная связь приветствуется или предлагает улучшениедизайн, если у вас есть лучшее решение.