Diría que esto requiere una relación 1:n, donde hay una tabla maestra de "entrenamientos" y una tabla unificada de "componentes" que contiene todas las actividades de un entrenamiento.
Tendrías tu tabla principal workouts
:
id int
participant varchar(255)
date datetime
...... any other workout related data
Luego, la tabla secundaria workout_components
:
workout_id int // Which workout this belongs to
tabindex int // Which sorting order this component has in the list
repeat int // Number of repetitions (e.g. 3 sets)
quantity int // e.g. 45 push-ups or 150 meters of cycling
quentity_unit varchar // e.g. minutes or laps
activity varchar // push-ups, cycling .....
un valor de ejemplo se vería así:
tabla de ejercicios:
id participant date
1 Harry Miller 2010-08-21
tabla de componentes_entrenamiento:
workout_id tabindex repeat quantity quantity_unit activity
1 1 3 45 pcs pushups
1 2 1 2 minutes rope-jumping
Ventajas:
-
No limitado a actividades específicas
-
Fácil de consultar:todas las preguntas relacionadas con cómo obtener algo de este tipo de estructura de datos ya han sido respondidas en SO
-
Las actividades se pueden agregar libremente a cada entrenamiento