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

时间:2013-10-04 14:27:36

标签: mysql database

有三个实体:

School, teacher and student

有一些规则:

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

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

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

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

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

正如你所看到的,约翰老师与两所学校相连,而学生艾尔则与约翰老师和学校A相连。

现在,老师约翰离开学校A,但是学生Ale仍然与现在只属于学校B的老师John有关。事实是,Ale不会去学校B,所以他应该被在这种情况下,老师约翰。

我正在尝试以编程方式执行所有操作,但我怀疑架构中存在错误。你能发现什么问题吗?

3 个答案:

答案 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)

逻辑上你应该设置条件: 学生只能属于一名属于学生学校的教师

在分配之前,您可以检查此条件是否为真。

当教师更新他的学校时,你应该再次检查学生 - 教师的分配。