Mysql
 sql >> Base de données >  >> RDS >> Mysql

Problème de base de données, comment stocker la structure de données changeante

Je dirais que cela nécessite une relation 1:n, où il y a une table principale "d'entraînements" et une table unifiée "composants" qui contient toutes les activités d'une séance d'entraînement.

Vous auriez votre table principale workouts :

id   int
participant varchar(255)
date        datetime
...... any other workout related data

Puis la table enfant 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 exemple de valeur ressemblerait à ceci :

tableau d'entraînement :

id          participant      date
1           Harry Miller     2010-08-21

tableau workout_components :

workout_id  tabindex     repeat      quantity     quantity_unit  activity
1           1            3           45           pcs            pushups
1           2            1           2            minutes        rope-jumping

Avantages :

  • Non limité à des activités spécifiques

  • Facile à interroger - chaque question liée à la façon d'obtenir quelque chose à partir de ce type de structure de données a déjà reçu une réponse sur SO

  • Des activités peuvent être librement ajoutées à chaque entraînement