mysql 关系学生,教师和学校无法解释

qvtsj1bj  于 5个月前  发布在  Mysql
关注(0)|答案(3)|浏览(54)

有三个实体:

School, teacher and student

字符串
有一些规则:

  • 一个学生只能属于一个老师
  • 一个学生只能属于一所学校
  • 一个教师可以属于一个或多个学校

这意味着我的表中有这些关系:

  • 表学生有一个链接到老师和一个到学校
  • 表教师与学校有一个链接表(多对多关系)

这就是问题所在。假设有以下情况

School A    school B
 | |____       |
 |     |       |
 |    Teacher John
 |     |
 |     |
Student Ale


正如你所看到的,老师John连接到两所学校,学生Ale连接到老师John和学校A。
现在老师John离开了学校A,但是学生Ale仍然与现在只属于学校B的老师John联系在一起。事实是Ale不会去学校B,所以在这种情况下,他应该被老师John断开连接。
我试图通过编程来完成所有这些工作,但我怀疑模式中有什么问题。您能发现其中的错误吗?

wfypjpf4

wfypjpf41#

我不是DBMaven,但如果我是你,我会这样做:

Teacher*--------1 teachesIn 1------------*School
                        *                   *
                        |                   |
                        |                   |
                        1                   |
                      Student 1--------------

字符串
所以你的学生不是链接到老师本身,而是链接到老师和学校之间的链接表,所以如果老师在学校停止教学,你会自动删除老师和学生之间的关系

flvtvl50

flvtvl502#

你已经声明你将students直接链接到学校。在SQL中,你可以确保只有teachers是有效的,也有这个学校。
在SQL中,这可以通过例如INNER JOIN来实现。当教师John离开学校A时,学生Ale必须得到新的教师,或者学生Ale的条目不再有效(并且在使用INNER JOIN时不会显示)。

ix0qys7i

ix0qys7i3#

从逻辑上讲,你应该设定这样的条件:一个学生只能属于一个属于该学生所在学校的老师
在赋值之前,你可以检查这个条件是否为真。
当老师更新他的学校时,你应该再次检查学生-教师分配。

相关问题