2016-12-13 9 views
0

私は質問の文言がちょっと難しいと思うので、わかりやすくするつもりです。データベース管理システム、複数のレコードを複数のレコードにする方法

私は練習のテーブル、練習のテーブル、およびユーザーのテーブルを持っています。

練習問題のID、名前、セット、繰り返し、および体重があります。

ワークアウトにはID、名前、難易度、継続時間、休憩時間があります。

ユーザーにはログインと無関係なものがたくさんあります。

現時点では、異なるIDを持つSAMEエクササイズが多数あり、エクササイズIDにつながる外部キーがあります。だから私のテーブルは非常に乱雑に見えます。たとえば、「ベンチプレス」という3つの演習がありますが、異なるワークアウトにリンクされているIDは異なります。同じことがワークアウトに、同じものが多く、ちょうど異なるIDになります。

私の質問は、複数のレコード(演習)が異なるテーブル(ワークアウト)の複数のレコードに属することができるテーブルを作成するにはどうすればいいですか?また、複数の演習を同時に複数のワークアウトで同じエクササイズが複数のワークアウトに表示される可能性があります。

+0

接合テーブルを使用します。アイデアは、関係が独自のエンティティであるようにデータベースをモデル化することです。この方法では、エンティティを複製するのではなく、同じエンティティのペアを指すより多くの関係を追加するだけです。 – CollinD

+0

各テーブルをそれ自身のオブジェクトと考えてください。運動、運動、およびユーザーオブジェクトがあります。それぞれのテーブルでは、異なる属性を保持するためにそれぞれ異なる必要がありますが、互いの関係は存在してはいけません。関係は、別々に、彼ら自身のオブジェクトです。したがって、ExerciseWorkoutテーブルとWorkoutUserテーブルは、IDを格納できます。 'ExerciseID |例えばWorkoutID 'である。関係自体は、属性を持っています。よく 'validFrom | validTo'や 'lastChangedBy'など – JNevill

答えて

0

私はNevillに同意します。

行使表 ワークアウト表 ユーザー表 UserExercise表 UserWorkout表

だから、ユーザーがUserExerciseテーブルとの演習に接続することができます - ExerciseIDとユーザーIDは、あなたの演習へのユーザーのAAリンクを与えるthere-格納されます。 UserWorkoutテーブルと同じです。明らかに、ユースケースに合わせて適応する必要があります。

外部キー定義(FK)を使用して、UserWorkoutテーブルの関係を確立して文書化する必要があります。これは、ExerciseIDがExerciseテーブルのID属性、つまりテーブルの主キー(PK)に属していることを示しています。

これは職場でのリレーショナルモデルです。そのようにデータを複製するのではなく、結合およびビューを使用してリレーショナル表を見やすくすることができます。

関連する問題