私は大学の管理システムを設計しています。私は5つのテーブルを持っています:学生、教師、コース、Available_CoursesとTaken_Courses。データベース設計。多対多。主キーは何が必要ですか?
Student:
student_id (PK)
Teacher:
teacher_id (PK)
Courses:
courses_id (PK)
Available_Courses:
available_courses_id
teacher_id
course_id
Courses_Taken:
courses_taken_id
student_id
courses_available_id
Available-CoursesとCourses_TakenテーブルのPKはどのようにする必要がありますか?
私がavailable_courses_id(表Available_Courses)のプライマリキーを作成しないと、Courses_Tableに接続できなくなり、Available_Coursesテーブルの3つの属性すべてのCompositeキーを作成すると、1人の教師が同じコースに再度登録できます。再び。 teacher_idとcourse_idという2つの属性の複合キーを作成すると、データベース内の繰り返しが増加します。その両方がCourses_Taken Tableにあり、関係を作成します。
同じことがCourses_Takenテーブルにあります。私はテーブル出席でそのPKを使用する必要があります(まだ作成されていません)。
このような状況では、どうすればよいですか?
student
id int unsigned(P)
teacher
id int unsigned(P)
course
id int unsigned(P)
available_courses
teacher_id int unsigned (F teacher.id)--\__(P)
course_id int unsigned (F course.id)---/
courses_taken
student_id int unsigned (F student.id)--\__(P)
course_id int unsigned (F course.id)---/
available_coursesは、コースが教師によって教えられる行を保持しているようです。利用可能なコースは、そのテーブルの何行かに表示されているコースであると考えられます。あなたのテーブルをどのように定義するかはあなたの質問にとって重要ではありません。 (CKs、FDs、FKs)。 – philipxy