2017-11-29 10 views
0

他の3つのテーブルの結合テーブルを作成するのに、最もエレガントでメンテナンス可能な方法は何でしょうか?3つのテーブルのテーブルコードを結合する

私は3つのテーブルを持っていると言うことができます:学校、学生、先生、プライマリキー(ID)を持つすべて。

学生は多くの学校に通うことができ、多くの教師がいます。 教師は多くの学校で教えることができます。教師は、同じ学校の別の学校で教えることができます。

私は、任意の提案を歓迎し

,,二つのテーブル間の多対多の関係を持つ多くの記事を見て、しかし、3つのテーブルに対処するための正しい方法を見つけることができません。

答えて

1

まず、私の意見では、Courseのコンセプトのようなものを追加する必要があります。どのような具体的にSchoolTeacherに教えるのは、Studentが教えてくれる関係です。私はいくつかのSchoolティーチではなく、すべてTeacherの教えは、すべてのStudentのことSchoolに出席していることと思いますので、

は、私はそれを紹介します。

  • に保たれています。 Schoolは多くのCourseを持つことができます。 (関係)

  • Courseが多く、Studentsがあります。 Studendは多くの人に出くわしますCourseです。 (関係)

  • TeacherCoursesを教えてください。 Courseには1人の先生がいます。 Course - (関係)セット内

すなわちStudent 1つのManyToMany関係がある。 CourseTeacher & Schoolとの関係がManyToOneです。

+0

新しいテーブルを導入することをお勧めします。私はあなたが示唆しているように中間テーブルを追加しようとします。 – tjago

+0

はい、実際には3つのテーブルを結合するのは結合テーブルです。ちょうど私の答えのポイントは、新しいテーブルを導入することではありません(あなたの質問にはすでにありました)が、結合の背後にあるコンセプトが何であるか考える必要があることです。結合表にはどのような関係が記述されていますか?ほとんどの場合、それは「コース」のようなものであり、それ自身の「エンティティ」でもあります。 – pirho

1

私はORMを使用してこれらの種類の関係を手伝っていきます。あなたの関係は、多対多の関係だと思います。

ここには、あなたが望むものと一致する可能性のある記事があります。

Describing Relationships: Django's ManyToMany Through

+0

Thx Richard、Java JPAに関するその他の記事が見つかりました。https://vladmihalcea.com/2017/07/26/the-best-way-to-map-a-many-to-many-association-with-余分な列を使用するときは、jpaおよび休止状態/ – tjago

関連する問題