Я взял на себя базу данных, в которой хранится информация о физической пригодности, и у нас были споры по поводу определенной таблицы и того, должна ли она оставаться одной таблицей или разбиваться на три таблицы.
Сегодня существует одна таблица с именем: тренировки , которая имеет следующие поля
id, упражнение_id, повторений, вес, дата, person_id
Так, если бы я выполнил 2 подхода по 3 разных упражнения в один день, у меня было бы 6 записей в этой таблице за этот день. например:
идентификатор, идентификатор упражнения, количество повторений, вес, дата, идентификатор человека
1, 1, 10, 100, 01.01.2010, 10
2, 1, 10, 100, 01.01.2010, 10
3, 1, 10, 100, 01.01.2010, 10
4, 2, 10, 100, 01.01.2010, 10
5, 2, 10, 100, 01.01.2010, 10
6, 2, 10, 100, 01.01.2010, 10
Таким образом, вопрос в том, что в нескольких записях есть несколько избыточных данных (date, personid, exerc_id), если их нормализовать до трех таблиц
WorkoutSummary
- id
- дата
- person_id
WorkoutExercise
- id
- workout_id (внешний ключ в WorkoutSummary)
- упражнение_ид
WorkoutSets
- id
- workout_exercise_id (внешний ключ в WorkoutExercise)
- повторений
- вес
Я предполагаю, что недостатком является то, что запросы будут медленнее после этого рефакторинга, поскольку теперь нам нужно будет объединить 3 таблицы, чтобы выполнить тот же запрос, который раньше не имел соединений. Преимущество рефакторинга позволяет в будущем добавлять новые поля на уровне сводки тренировок или на уровне упражнений без добавления дополнительного дублирования.
есть какие-либо отзывы об этой дискуссии?