我正在设计一个大学管理系统。我有5个表格:学生,教师,课程,可用课程和采取课程。数据库设计。多对多。什么应该是主键?
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
可用课程和课程中应该PK什么?
如果我没有让Available_courses_id(在Table Available_Courses中)主键,那么我将无法连接Courses_Table,如果我在表Available_Courses中创建了所有三个属性的复合键,那么一个教师可以再次注册同一个课程,再次。制作两个属性(即teacher_id和course_id)的组合键将起作用,但会增加数据库中的重复次数,因为它们都将位于Courses_Taken表中以创建关系。
与Courses_Taken表相同,因为我需要在表中使用它的PK出席(尚未完成)。
那么在这种情况下应该怎么做?
看起来像available_courses包含行,老师教课程的行。人们会认为可用的课程将是该表中某些行出现的课程。不是说你的问题如何定义你的表,你只需要告诉我们约束条件。 (CK,FD,FK)。 – philipxy