sql >> Databáze >  >> RDS >> Mysql

Problém databáze, jak uložit měnící se datovou strukturu

Řekl bych, že to vyžaduje vztah 1:n, kde existuje hlavní tabulka „cvičení“ a jedna sjednocená tabulka „komponent“, která obsahuje všechny aktivity cvičení.

Měli byste svůj hlavní stůl workouts :

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

Potom podřízená tabulka 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 .....

příklad hodnoty by vypadal takto:

cvičební stůl:

id          participant      date
1           Harry Miller     2010-08-21

tabulka workout_components:

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

Výhody:

  • Není omezeno na konkrétní aktivity

  • Snadné dotazování – každá otázka související s tím, jak něco získat z tohoto druhu datové struktury, již byla zodpovězena na SO

  • Ke každému tréninku lze libovolně přidávat aktivity



  1. Jak zkrátit tabulku pomocí Doctrine?

  2. Funkce NUMTOYMINTERVAL() v Oracle

  3. Jak seskupit spojité rozsahy pomocí MySQL

  4. Jak LTRIM() funguje v MariaDB