Direi che questo richiede una relazione 1:n, dove c'è una tabella "allenamenti" principale e una tabella "componenti" unificata che contiene tutte le attività di un allenamento.
Avresti il tuo tavolo principale workouts
:
id int
participant varchar(255)
date datetime
...... any other workout related data
Quindi la tabella figlio 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 valore di esempio sarebbe simile a questo:
tabella di allenamento:
id participant date
1 Harry Miller 2010-08-21
tabella workout_components:
workout_id tabindex repeat quantity quantity_unit activity
1 1 3 45 pcs pushups
1 2 1 2 minutes rope-jumping
Vantaggi:
-
Non limitato ad attività specifiche
-
Facile da interrogare:ogni domanda relativa a come ottenere qualcosa da questo tipo di struttura dati ha già avuto risposta su SO
-
Le attività possono essere aggiunte liberamente a ogni allenamento