2016-04-02 14 views
0

現在、私は学生システムに取り組んでいます。私のプロジェクトでは、各学生に多数のコースが登録されている必要があります。データベースを設計する最良の方法は何ですか? 現在、私は学生情報、 を含むstudentsという名前のテーブルを作成しました。また、coursesという名前のテーブルにはコース名が含まれています。 私はそれを行う方法は、コーステーブルへの学生のテーブルの参照から外来のキーを作成することであることを知っていると私はそれを試みたが、私はそれを正確にどのように混乱している。ありがとうございます。 1対多関係データベース設計

あなたは、多対多の関係をモデル化するためのテーブルを作成する必要があります
+0

これは、多対多の関係に近いように聞こえます。学生は複数のコースに参加することができますが、コースでは複数の学生も受け入れます。 –

+0

あなたの返事をありがとう。 はい、あなたは正しいです。各生徒が複数のコースに登録されていることを確認して、生徒が自分のプロフィールに登録したコースを表示する方法。 –

答えて

0

Students [ id | name | etc..] 
Courses [ id | name | etc.. ] 
Students in Courses [ id | student_id | course_id ] 

あなたは可能でもそこでの関係(何年に学生がコースに入りました、の詳細彼/彼女が完了しなかった何年、授業料が支払われたなど。)

データをこれらの表に次のようなものになります。

学生を

Id  Name 
------ -------- 
S1  John 
S2  Jane 
S3  Mike 
S4  Larry 

コース

Id  Name 
------ -------- 
C1  Java for beginners 
C2  C# for dummies 
C3  Phyton for Noobs 

学生コース

Id  CourseId StudentId 
----- ------ -------- 
01  C1  S1 
02  C2  S1 
..... 
99  C3  S3 

にあなたはインナーを使用してデータを照会することができ、テーブル(擬似コード)に参加:

Select S.Id, S.Name, C.Id, C.Name 
From Students S 
Inner Join 'Students in Courses' SC ON S.Id = SC.StudentId 
Inner Join Courses C ON SC.CourseId = C.Id 
+0

ご返信ありがとうございます 私のためにそれを明確にするように。 「Java」というコースがあり、3人の学生が登録されているとします。 ですので、students_in_coursesテーブルは次のようになります: id | 1st_student_ID | JAVA_ID id | 2nd_student_ID | JAVA_ID id | 3rd_student_ID | JAVA_ID –