0
A
回答
0
最简单的(有点大胆)的方式来建模,这是
- 学生表
- 教员表
现在给学生列FACULTY1和FACULTY2。两者都是FACULTY的外键。用NOT_NULL约束FACULTY1。这强制学生至少有一个FACULTY。 FACULTY2可以为null,但它仍然是一个外键。
FACULTY以某种方式不知道关于学生的任何事情。当没有学生参考教师时,它没有学生,任何数量的学生都可以参考教师。
这种模式有很多缺点(我说的是黑体):
一个学生仅一个教员被监督必须具有此集FACULTY1(不FACULTY2)。同样,当受2个FACULTIES监督的学生删除其中的一个时,您只能删除FACULTY2,或者您必须先交换字段。你可以通过一个更聪明的约束来避开这个问题(FACULTY1不为空或者FFACULTY2不为空)
如果你想改变设计,那么学生可以有3个FACULTIES,你需要添加专栏给STUDENT。然而,这并不像听起来那么糟糕。
在pro方面,除了引用完整性和NOT NULL之外没有其他参与设计。
相关问题
- 1. jQuery:在这种情况下,.on()的正确用法是什么?
- 2. 在这种情况下正确的mysql表设计/关系
- 3. 什么是在这种情况下
- 4. 什么是在这种情况下
- 5. 这种情况下最好的情况是什么?
- 6. 在这种情况下正则表达式的正确使用是什么?
- 7. 为什么变量在这种情况下是不确定的?
- 8. 这种情况的正确格式是什么?
- 9. 为什么这种情况是正确的?
- 10. 在这种情况下使用什么设计模式?
- 11. 这种情况的设计解决方案是什么?
- 12. 我们是否需要Hibernate映射在这种情况下?
- 13. 在这种情况下,真正的负面会是什么
- 14. 这种情况下最好的项目设置是什么?
- 15. 在这种情况下应该是什么样的正确的JavaScript语法?
- 16. 什么是wrapper_descriptor,在这种情况下为什么是Foo .__ init __()?
- 17. 这种情况下正确的标记是什么(页面标题和“rootline”)?
- 18. 在这种情况下,AVG()函数的正确用法是什么?
- 19. 在这种情况下使用DTO的正确方法是什么?
- 20. 在这种情况下使用Ember.js控制器的正确方法是什么?
- 21. 在这种情况下,Sass/SCSS mixin参数的正确使用是什么?
- 22. 这种情况下正确的WCF net.tcp绑定安全性是什么?
- 23. 在这种情况下,正确的Rails模型关联会是什么?
- 24. 在这种情况下执行git-rebase的正确命令是什么?
- 25. 为什么在这种情况下没有正确设置听众
- 26. 什么是在这种情况下使用的最佳软件设计
- 27. 什么可能是这种情况下的良好设计模式?
- 28. 面向对象:在这种情况下,什么应该是正确的类设计?
- 29. 这是否正确使用$。在这种情况下推出?
- 30. 为什么在这三种情况下
到目前为止您已尝试过什么,为什么您认为它不正确? – EWit
现在我的设计看起来像这样:一个监督[supervise_id,faculty_id,student_id]; supervise_id是pk,它不是null。有一个检查条件像这样SELECT COUNT(*)FROM监督GROUP BY student_id HAVING count(*)<2 ...至今我还没有在DB上创建任何内容。在执行它们之前需要确保命令是正确的。但我觉得这种创建监督表的设计不符合给定的要求。我错了@EWit先生吗? –