我需要模拟这个问题:
一个教师可以监督几个学生。一个学生在 至少一个,最多两个主管。
我正在寻找关于如何执行此操作的实际关系表设计。
答案 0 :(得分:0)
最简单(有点大胆)的方法是
现在给学生列FACULTY1和FACULTY2。两者都是FACULTY的外键。使用NOT_NULL约束FACULTY1。这强制学生至少有一个FACULTY。 FACULTY2可以为null,但它仍然是外键。
FACULTY以某种方式对学生一无所知。当没有学生参考教师时,它没有学生,任何数量的学生都可以参考教师。
这个模型有许多缺点(我说它是粗体):
只有一个FACULTY监督的学生必须在FACULTY1中设置此项(不是FACULTY2)。同样,当受2个FACULTIES监督的学生删除其中一个时,您只能删除FACULTY2,或者您必须先交换这些字段。您可以通过更聪明的约束来绕过这个(FACULTY1不为空或FFACULTY2不为空)
如果您想更改设计,那么学生可以拥有3个功能,您需要为STUDENT添加列。然而,这并不像听起来那么糟糕。
在专业方面,除了引用完整性和NOT NULL参与此设计外。