大家好。我的应用程序有几个要求我必须完成。具体如下:
老师能教很多科目
老师可以教很多年级(班)
一个老师不能被分配到同一个班级的同一个科目上两次。
两(2)名教师不能在同一年级(班级)教授同一科目
查询分配给教师的成绩
查询分配给教师的科目
根据我的要求,这是我设置模式/数据库表的方式:

subject
-----------
id,
name

grades
-----------
id,
name

teachers
------------
id,
name

grade_subject
------------------
id,
grade_id,
subject_id,

subject_teacher
---------------
id,
subject_id,
teacher_id

grade_teacher
---------------
id,
grade_id,
teacher_id

现在,我在这里所拥有的大部分都会起作用,但我面临的问题是,我发现两个老师在同一年级(班级)教的不是同一门课
有了以上的系统设置,我相信很难做到这一点。
例如,我如何设置我的系统以避免两个老师在“12年级”教“化学”?会感谢你们的帮助的。如果我需要解释的话,请告诉我。谢谢。

最佳答案

你快到了!请允许我分享我对数据库的看法:
表格主题

 id
 name

桌上教师
 id
 name

表类
 id
 name

现在,假设每个老师可以教多个科目
表教师科目
 id          PK
 subject_id  FK
 teacher_id  FK

也就是说,一个班级有一套科目
所以某个班(12年级)只能上化学、数学等课。
表主题课程
 id         PK
 class_id   FK
 subject_id FK

现在,我们想说:
桌上教师课
 subject_class_id    PK/FK
 teacher_subject_id  PK/FK

意思是,类似于:
'教师科目'
科目类别1'
不能重复(一个老师不能被分配到同一个班级的同一个科目两次。)
至于“两(2)名教师不能在同一年级(班级)规则中教授同一科目”,我会在你的应用程序上用逻辑实现该规则,这似乎是我无法想象的(有时我缺乏想象力:)一个可以提供你的概念的数据库设置。
编辑:
原因:我作为一名学生错误地阅读和解释了这门课。
Edit2:你问的问题
Select count(teacher_subject_class.teacher_subject_id) from teacher_subject_class
inner join subject_class on subject_class.id = teacher_subject_class.subject_class_id
inner join teacher_subject on teacher_subject.id = teacher_subject_class.teacher_subject_id
inner join subjects on subjects.id = subject_class.subject_id
inner join teachers on teachers.id = teacher_subject.teacher_id
inner join class on class.id in (teacher_class.class_id, subject_class.class_id)
where subject.name = 'Chemistry' and class.name = 'Grade 12';

关于php - 为Laravel(多对多)的老师分配成绩和科目,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46489005/

10-11 07:44