routines
2 つのテーブルは必要ありません。1 つのテーブルと、そのテーブルを参照するテーブル
が必要です。 routines
exercises
routines
1 つのルーチンがすべてのユーザーに対して同じかどうか、または各ユーザーが独自のバージョンの「上腕二頭筋」ルーチンを使用できるかどうかによって、テーブルがもう 1 つ必要になる場合があります。
以下の例を見てください!
例 1 (各ユーザーは独自の「上腕二頭筋」ルーチンを持つことができます):
ユーザー テーブル:
UserId Name
----------------
1 Joe
2 Bill
ルーチン表:
RoutineId Name UserId
-------------------------------
1 biceps 1
2 biceps 2
演習表:
ExerciseId RoutineId Name
--------------------------------------------------------
1 1 first exercise of routine 1
2 1 second exercise of routine 1
3 2 first exercise of routine 2
4 2 second exercise of routine 2
例 2 (「上腕二頭筋」ルーチンは 1 つだけで、すべてのユーザーで同じです):
ユーザー テーブル:
UserId Name
----------------
1 Joe
2 Bill
ルーチン表:
RoutineId Name
------------------
1 biceps
ユーザー <--> ルーチン リンク テーブル:
UserId RoutineId
--------------------
1 1
2 1
演習表:
ExerciseId RoutineId Name
--------------------------------------------------------
1 1 first exercise of routine 1
2 1 second exercise of routine 1
編集:
あなたが言った:
はい、ルーチンは各ユーザーが作成するため、各ユーザーにプライベートです。それらは共有されていません
と:
各演習は、複数回使用できる必要があります。つまり、「背中のトレーニング」ルーチンと「腕のトレーニング」ルーチンで「プルアップ」エクササイズを行う場合があります。
最終的解決:
ユーザー テーブル:
UserId Name
----------------
1 Joe
2 Bill
ルーチン表:
RoutineId Name UserId
-----------------------------------------------------
1 Joe's back workout 1
2 Joe's arm workout 1
3 Bills's back workout 2
「グローバル」演習テーブル:
ExerciseId Name
--------------------------------------------------------
1 pull up
2 whatever
ルーチン <--> エクササイズ リンク テーブル:
RoutineId ExerciseId
----------------------------------
1 2
2 1
3 1
このように、「プルアップ」エクササイズはジョーの腕のトレーニング (ルーチン 2) とビルズの背中のトレーニング (ルーチン 3) にありますが、ジョーの背中のトレーニング (ルーチン 1) にはありません。
「なんでも」ルーチンは、ジョーの背中のワークアウト (ルーチン 1) にのみあります。
これはあなたが望んでいたものですか?