Я взял базу данных, в которой хранится информация о фитнесе, и у нас были дебаты об определенной таблице и о том, должна ли она оставаться одной таблицей или быть разбита на три таблицы.
На сегодняшний день существует одна таблица под названием тренировки со следующими полями.
id, training_id, повторения, вес, дата, person_id
Итак, если бы я сделал 2 подхода по 3 разных упражнения в один день, у меня было бы 6 записей в этой таблице для этого дня. Например:
id, Exercise_id, повторения, вес, дата, person_id
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, 1/1 /2010, 10
6, 2, 10, 100, 01.01.2010, 10
Итак, вопрос в том, что, учитывая, что в нескольких записях есть некоторые избыточные данные (дата, идентификатор лица, упражнение_ид), следует ли их нормализовать до трех таблиц.
Сводка по тренировкам:
- идентификатор
- дата
- идентификатор_человека
WorkoutExercise:
– id
–workout_id (внешний ключ в WorkoutSummary)
– Exercise_id
WorkoutSets:
– id
–workout_exercise_id (внешний ключ в WorkoutExercise)
– повторения
– вес
Я предполагаю, что недостатком является то, что запросы будут медленнее после этого рефакторинга, так как теперь нам нужно будет объединить 3 таблицы, чтобы выполнить тот же запрос, в котором раньше не было соединений. Преимущество рефакторинга позволяет в будущем добавлять новые поля на уровне сводки тренировки или на уровне упражнений без дополнительного дублирования.
какие-либо отзывы об этой дискуссии?