2017-07-21 10 views
1

私は、学生、教師、クラスの関係をモデル化したいと思います。すべての生徒は1人の教師に関連付けられています(教師は多くの生徒を持つことができます)。クラスは3つしかありません。私はこれを考える方法は3つのテーブルがあるということです。 - >(STUDENT_ID、student_name、CLASS_ID)シンプルなデータベースを設計するには

教師表 - >(STUDENT_ID、student_name、CLASS_ID)

クラス表

学生表 - >(class_id、class_name)

テーブル内に生徒と教師の関係を示す方法がわかりません。どの教師がどの生徒に割り当てられているのか、どのように知っていますか?

+0

もう1つの「リンク」テーブル「Student_Teacher」を導入しました。 'class_id'を' Student'と 'Teacher'の両方から削除し、それを新しいテーブルに削除します。 –

+0

別のテーブル「assigned_students」を追加し、student_id、teacher_idの列を持つことができました コード内で、誰に割り当てられているテーブルにプル/挿入してください。 – Adam

+1

これは多対多の関係の例です。学生は多くの教師が教えることができ、教師は多くの学生を教えることができます。関係を「1対多」にするには中間テーブル(StudentTeacherかもしれません)が必要です。 – Eric

答えて

1

これは、いくつかの簡単な加入を用いて達成することができます。

特定の先生に関連するすべての生徒を検索すると仮定すると、teacherの行を取得することから始めます。あなたは教師が教えるclassesに参加するでしょう。最後に、これらのクラスに属するstudentsに参加します。

これは多対多の関係として知られており、データベースの重要な概念です。

select 
    t.student_name, -- I suspect this col might actually be named teacher_name 
    s.student_name, 
from 
    -- Find the classes that a teacher teaches 
    teacher_table t join class_table c on (t.class_id=c.class_id) 
    -- Find the students in those classes 
    join student_table s on (s.class_id=c.class_id) 
where 
    t.student_id = ? -- Again, I suspect this should be "teacher_id" 
+0

私はあなたがteacher_tableとstudent_tableに直接参加することができることを言及する必要があります。しかし、私はクラステーブルを私の答えに含めました。多対多が一般的にどのように達成されるかのデモンストレーションです。クラステーブルからのデータが必要ない場合(where句などで使用するための「クラス完了日」など)は、単純に 'SELECT t.student_name、s.student_name FROM teacher_table t JOIN student_table s ON(t.class_id = s.class_id)WHERE t.student_id =? ' – RToyo

1

これは、必要以上のテーブルですが、Microsoftが作成したいくつかの.NETサンプルは、同様のリレーショナルデータベースを中心に構成されています。ここで

は、そのデータベースへのリンクです:この例では https://msdn.microsoft.com/en-us/library/bb399731(v=vs.100).aspx

、生徒と教師は、両方の人のテーブルに保持され、2つの異なる参加のテーブルを通じてコースのテーブルに関連しています。 。学生グレードとコースインストラクター。

enter image description here

そして、ここにリンクしてContosoの大学スキーマです: https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/getting-started-with-ef-using-mvc/creating-a-more-complex-data-model-for-an-asp-net-mvc-application

enter image description here

関連する問題