sql >> Database >  >> RDS >> Mysql

Databaseprobleem, hoe de veranderende gegevensstructuur op te slaan?

Ik zou zeggen dat dit een 1:n-relatie vereist, met een hoofdtabel voor 'workouts' en een uniforme tabel met 'componenten' die alle activiteiten van een training bevat.

Je zou je hoofdtabel hebben workouts :

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

Dan de onderliggende tabel 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 .....

een voorbeeldwaarde ziet er als volgt uit:

trainingstafel:

id          participant      date
1           Harry Miller     2010-08-21

tabel workout_componenten:

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

Voordelen:

  • Niet beperkt tot specifieke activiteiten

  • Eenvoudig op te vragen - elke vraag met betrekking tot hoe u iets uit dit soort gegevensstructuur kunt halen, is al beantwoord op SO

  • Activiteiten kunnen vrij worden toegevoegd aan elke training



  1. Variabele MySQL-trigger declareren

  2. Hoe REPEAT() werkt in MariaDB

  3. Controleer of e-mail al in de database bestaat

  4. CAST naar DECIMAAL in MySQL