2

わかりましたので、ユーザーが提供されたエクササイズのセットリストを使用してルーチンを構築できるようにするウェブサイトを進行中です. 彼らは、自分で作成してタイトルを付けるルーチンに多くのエクササイズを追加できます。

だから私はユーザーテーブルが必要だと思っています。各ユーザーには、いくつかのルーチンがあります。各ルーチンにはいくつかの演習があります。

したがって、ユーザー、ルーチン、エクササイズの 3 つのテーブルを作成します。

しかし

「ルーチン」と「エクササイズ」をリンクするにはどうすればよいですか。「ルーチン」は複数のテーブルにする必要があるためです。ユーザーが「上腕二頭筋」ルーチンを作成してエクササイズで埋めると想像すると、次に、彼は「上腕三頭筋」を作成し、エクササイズで埋めます。次に、「上腕二頭筋」と「上腕三頭筋」と呼ばれる 2 つのルーチン テーブルが必要になります。

では、これに対応するためにデータベースをどのように構築すればよいでしょうか?

各ユーザーには一意の ID があることに注意してください。すべてのエクササイズには一意の ID があり、すべてのルーチンには一意の ID があります。

4

2 に答える 2

3

routines2 つのテーブルは必要ありません。1 つのテーブルと、そのテーブルを参照するテーブル
が必要です。 routinesexercisesroutines

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) にのみあります。

これはあなたが望んでいたものですか?

于 2012-11-13T21:30:15.150 に答える
1
create table users(
userid int not null AUTO_INCREMENT PRIMARY KEY,
firstname char(30) not null,
lastname char(30) not null
);

create table routines(
rid int not null AUTO_INCREMENT PRIMARY KEY,
userid int not null,
rname char(30) not null
);

create table execises(
eid int not null AUTO_INCREMENT PRIMARY KEY,
rid int not null,
ename char(30) not null
);
于 2012-11-13T21:31:06.070 に答える