2016-11-28 8 views
0

私は学校用のシステムを作っていますが、私はこのmySQLテーブルを持っています。これについての質問はありますか?

student: id name course_id 
course: id name 
subject: id name 
subject_course: id subject_id course_id 
grade: id type grade 
grade_type: id name 

私は特定のコースのすべての学生がそのコースに関連しているすべての主題のタイプXのグレードを持っているかどうかを確認する必要があります。名前は自明です。 たとえば、grade_type = 'written test'としましょう。だから、1年生のすべての生徒が1年生に関係するすべての科目(例:数学、スペイン語、歴史など)の筆記試験の成績を持っているかどうかを確認する必要があります。はいの場合、私はいくつかのことをする。そうでなければ、別のもの。

これを確認できるクエリはありますか?私は学生の小切手を考えていましたが、効率が悪いと思います。

答えて

1

このスキーマは意味をなさないと思われます。

なぜcourse_idが学生テーブルのフィールドになるのですか?私の推測では、ここに学生とコースの多対多の関係を表現するためにstudent_courseテーブルが必要です。

また、grade_typeテーブルは、ほとんど価値のない簡単で余分なオーバーヘッドのようです。 typegradeの列挙型ではありませんか?

+0

grade_typeには、学校が新しい種類の種類を追加するためのCRUDがあります。 course_idの場合、student_courseのような表に入れることができますが、それを維持するためには害はありません。それは他のタスクを容易にします。 –

+0

@DavidTG学生は複数のコースに関連することは決してありませんか? –

+0

いいえ、決して。ちょうど1つのコース。 –

関連する問題