SQL 学生、课程和出勤之间的关系
SQL relationship between student, lessons and attendance
对于一个学校项目,我试图存储学生、他们的出勤情况以及他们可以查看哪些在线课程。
例如,允许黄带学生观看白带和黄带课程。带系统被一个 kyu 取代,它也可以有一个 dan。
到目前为止,我已经创建了以下内容:
Student
: 学号 (PK), 名字, 姓氏, 年龄, kyu, dan
Attendance
: attendanceID (PK), studentID (FK), 日期
Lesson
: lessonID(PK), name, kyu, dan
我一直在寻找课程和学生之间可能的关系,因为仅仅把 FK 放在学生的课程中感觉是错误的。
据我所知,这只是一个大class,所以我无法在学生-class和class-课之间建立关系。
据我了解,应该是多对多的关系,因为很多学生可以上同一堂课,学生可以有很多课,所以另一个 table 持有学生和 leason id 就可以解决问题,我觉得
我了解到您在课程和学生之间存在 N-M 关系,其中每个学生可以注册多个课程,并且每个课程可能(并且希望)由许多学生学习。
表示这种关系的典型方法是创建一个桥梁 table,它存储哪个学生参加了哪个课程。说 table student_lesson
:
id
: 主键
lessonID
: table 课程的外键
studentID
: table student 的外键
您需要在列 (lessonID, studentID) 上创建唯一约束 - 或者删除跳过 id
,并使 (lessonID, studentID) 成为桥 table 的主键。
对于一个学校项目,我试图存储学生、他们的出勤情况以及他们可以查看哪些在线课程。
例如,允许黄带学生观看白带和黄带课程。带系统被一个 kyu 取代,它也可以有一个 dan。
到目前为止,我已经创建了以下内容:
Student
: 学号 (PK), 名字, 姓氏, 年龄, kyu, danAttendance
: attendanceID (PK), studentID (FK), 日期Lesson
: lessonID(PK), name, kyu, dan
我一直在寻找课程和学生之间可能的关系,因为仅仅把 FK 放在学生的课程中感觉是错误的。
据我所知,这只是一个大class,所以我无法在学生-class和class-课之间建立关系。
据我了解,应该是多对多的关系,因为很多学生可以上同一堂课,学生可以有很多课,所以另一个 table 持有学生和 leason id 就可以解决问题,我觉得
我了解到您在课程和学生之间存在 N-M 关系,其中每个学生可以注册多个课程,并且每个课程可能(并且希望)由许多学生学习。
表示这种关系的典型方法是创建一个桥梁 table,它存储哪个学生参加了哪个课程。说 table student_lesson
:
id
: 主键lessonID
: table 课程的外键studentID
: table student 的外键
您需要在列 (lessonID, studentID) 上创建唯一约束 - 或者删除跳过 id
,并使 (lessonID, studentID) 成为桥 table 的主键。