0

わかりましたので、大学の出席システムを作成していますが、MySQL でテーブルを作成するのに問題があります

私が抱えている問題は、学生のグループを 1 つのクラスにグループ化することです。だからMySQLでは

テーブル名: CourseGroup: courseGroup_id、student_id(FK)、course_id(FK)

1 つのクラスに多数の生徒が所属するようにしたいのですが、後から考えると、教師はそのクラス グループの登録を行うことができます。

MySQL で「courseGroup_id」を一意のフィールドとして設定しましたが、出席テーブルで「courseGroup_id」をリンクしようとすると、「student_id」と「course_id」しか選択できません。

courseGroup_id を選択して、1 つのクラスの生徒を表示することは可能ですか?

私の出席テーブルは次のようになります: 出席: week_number, day, time, courseGroup_id, present

1 つのクラスに属するすべての生徒を表示できるようにしたい

4

1 に答える 1

0

私はあなたの用語に少し迷っています。あなたは「クラスID」について話しますが、質問ではそれを参照しないでください。代わりに「コース」を使用します。

ここでできる最善のオプションは、1つまたは複数のコースに多くの学生を登録できるため、多対多の関係を可能にする別のテーブルを作成することだと思います。このタイプのテーブルは、学生とコース間のマッピングを可能にします。

たとえば、マッピングテーブル「student_courses」を次のように作成すると、

student_id INT
course_id INT

その後、コースごとに学生を選択できます(学生テーブルに参加します)

SELECT * from student_courses sc
INNER JOIN students s
  ON s.student_id = sc.srudent_id
WHERE sc.course_id = ?CourseId

それを逆にして、個々のコースごとにコースを表示することもできます。

SELECT * from student_courses sc
INNER JOIN courses cs
  ON cs.courset _id = sc.course_id
WHERE sc.student_id = ?StudentId

また、student_coursesには2つのインデックスが必要であり、パフォーマンス上の理由から、student_idとcourse_idの両方にインデックスを付ける必要があることも指摘しておく価値があります。

于 2013-03-07T20:12:48.930 に答える