sql >> Base de Datos >  >> RDS >> Mysql

Problema de la base de datos, cómo almacenar la estructura de datos cambiante

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