Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Problem z bazą danych, jak przechowywać zmieniającą się strukturę danych

Powiedziałbym, że wymaga to relacji 1:n, w której istnieje główna tabela „treningi” i jedna zunifikowana tabela „komponenty”, która zawiera wszystkie czynności związane z treningiem.

Miałbyś swój główny stół workouts :

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

Następnie tabela podrzędna 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 .....

przykładowa wartość wyglądałaby tak:

stół do ćwiczeń:

id          participant      date
1           Harry Miller     2010-08-21

tabela workout_components:

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

Zalety:

  • Nie ogranicza się do konkretnych działań

  • Łatwe do zapytania - na każde pytanie dotyczące tego, jak uzyskać coś z tego rodzaju struktury danych, udzielono już odpowiedzi na SO

  • Aktywności można dowolnie dodawać do każdego treningu



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql, przechowujący wiele wartości w jednej kolumnie z innej tabeli

  2. Historyzacja bazy danych

  3. Nie można zaktualizować danych z bazy danych MySQL

  4. Laravel 5.6 withCount and where statement

  5. Wyliczenie MYSQL:@rownum, nieparzyste i parzyste rekordy