对于这种情况,ER映射的正确设计是什么?

时间:2014-05-04 15:51:29

标签: sql oracle

我需要模拟这个问题:

  

一个教师可以监督几个学生。一个学生在   至少一个,最多两个主管。

我正在寻找关于如何执行此操作的实际关系表设计。

1 个答案:

答案 0 :(得分:0)

最简单(有点大胆)的方法是

  • 学生表
  • 一个FACULTY表

现在给学生列FACULTY1和FACULTY2。两者都是FACULTY的外键。使用NOT_NULL约束FACULTY1。这强制学生至少有一个FACULTY。 FACULTY2可以为null,但它仍然是外键。

FACULTY以某种方式对学生一无所知。当没有学生参考教师时,它没有学生,任何数量的学生都可以参考教师。

这个模型有许多缺点(我说它是粗体):

  • 只有一个FACULTY监督的学生必须在FACULTY1中设置此项(不是FACULTY2)。同样,当受2个FACULTIES监督的学生删除其中一个时,您只能删除FACULTY2,或者您必须先交换这些字段。您可以通过更聪明的约束来绕过这个(FACULTY1不为空或FFACULTY2不为空)

  • 如果您想更改设计,那么学生可以拥有3个功能,您需要为STUDENT添加列。然而,这并不像听起来那么糟糕。

在专业方面,除了引用完整性和NOT NULL参与此设计外。