考虑这个ER图
我们有允许参加考试的学生,并且每个考试可以分成多个运行(例如,将多个分组的大组分开或直接连续两次运行同一个考试) 。 是否有可能确保(通过数据库限制)学生只参加属于考试的运行?
我无法找到自己的方式,也不知道如何在网上搜索这句话。
答案 0 :(得分:0)
您有这些表格和列: 考试:身份证,姓名 学生:身份证,姓名 run:id,exam_id(exam.id的外键),when(timestamp),room
您需要一个新的交叉路口表来跟踪哪个学生正在参加哪些考试: int_exam_to_student:exam_id,student_id - 两个外键
现在,您可以查询此内容以确定允许学生参加哪些课程: select run。* from run join int_exam_to_student i on(run.exam_id = i.exam_id)其中i.student_id = 123;