Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Problema de banco de dados, como armazenar a estrutura de dados em mudança


Eu diria que isso exige um relacionamento 1:n, onde há uma tabela mestre de "treinos" e uma tabela de "componentes" unificada que contém todas as atividades de um treino.

Você teria sua tabela principal workouts :
id   int
participant varchar(255)
date        datetime
...... any other workout related data

Em seguida, a tabela filha 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 .....

um valor de exemplo ficaria assim:

mesa de treino:
id          participant      date
1           Harry Miller     2010-08-21

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

Vantagens:

  • Não se limita a atividades específicas

  • Fácil de consultar - todas as perguntas relacionadas a como obter algo desse tipo de estrutura de dados já foram respondidas no SO

  • As atividades podem ser adicionadas livremente a cada treino