有三个实体:
School, teacher and student
有一些规则:
这意味着我在表格中有这些关系:
现在这是问题所在。假设有以下情况
School A school B
| |____ |
| | |
| Teacher John
| |
| |
Student Ale
正如你所看到的,约翰老师与两所学校相连,而学生艾尔则与约翰老师和学校A相连。
现在,老师约翰离开学校A,但是学生Ale仍然与现在只属于学校B的老师John有关。事实是,Ale不会去学校B,所以他应该被在这种情况下,老师约翰。
我正在尝试以编程方式执行所有操作,但我怀疑架构中存在错误。你能发现什么问题吗?
答案 0 :(得分:2)
我不是Db专家,但如果我是你,我就会这样:
Teacher*--------1 teachesIn 1------------*School
* *
| |
| |
1 |
Student 1--------------
因此,您的学生与教师本身无关,而是将教师与学校之间的表格联系起来, 因此,如果教师停止在学校教学,则自动删除教师和学生之间的关系
答案 1 :(得分:0)
您已声明要将students
直接关联到学校。在SQL中,您可以确保只有teachers
有效且也有此学校。
在SQL中,这可以通过例如INNER JOIN
来实现。当John老师离开A学校时,Student Ale要么必须得到一位新老师,要么学生提示的条目不再有效(并且在使用INNER JOIN
时不会显示。)
答案 2 :(得分:0)
逻辑上你应该设置条件: 学生只能属于一名属于学生学校的教师
在分配之前,您可以检查此条件是否为真。
当教师更新他的学校时,你应该再次检查学生 - 教师的分配。