Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Datenbankproblem, wie man sich ändernde Datenstrukturen speichert

Ich würde sagen, dies erfordert eine 1:n-Beziehung, in der es eine Master-"Trainings"-Tabelle und eine einheitliche "Komponenten"-Tabelle gibt, die alle Aktivitäten eines Trainings enthält.

Sie hätten Ihre workouts am Haupttisch :

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

Dann die untergeordnete Tabelle 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 .....

ein Beispielwert würde so aussehen:

Trainingstabelle:

id          participant      date
1           Harry Miller     2010-08-21

Tabelle workout_components:

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

Vorteile:

  • Nicht auf bestimmte Aktivitäten beschränkt

  • Einfach abzufragen - jede Frage, wie man etwas aus dieser Art von Datenstruktur bekommt, wurde bereits auf SO

    beantwortet
  • Aktivitäten können jedem Training frei hinzugefügt werden