0

存在三个实体:

School, teacher and student

有一些规则:

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

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

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

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

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

如您所见,John 老师连接到两所学校,学生 Ale 连接到 John 老师和 A 学校。

现在约翰老师离开了学校 A,但学生 Ale 仍然与现在只属于学校 B 的老师 John 保持联系。事实是 Ale 不去学校 B,所以他应该被 John 老师断开连接这个案例。

我正在尝试以编程方式完成所有这些工作,但我怀疑架构中有问题。你能看出它有什么问题吗?

4

3 回答 3

2

我不是 Db 专家,但如果我是你,我会这样:

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

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

于 2013-10-04T14:51:12.460 回答
0

你已经说过你students直接把你和学校联系起来。在 SQL 中,您可以确保只有teachers有效的也有这所学校。

在 SQL 中,这可以通过例如INNER JOIN. 当 John 老师离开 A 学校时,Student Ale 要么必须换一个新老师,要么 Student Ale 的条目不再有效(使用 时不会显示INNER JOIN)。

于 2013-10-04T14:34:26.013 回答
0

从逻辑上讲,您应该设置以下条件:一个学生只能属于该学生所在学校的一位老师

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

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

于 2013-10-04T14:35:58.427 回答