师生答疑——数据库设计

Question answered by teachers and students - Database design

我正在设计数据库。 我有问题、答案、学生和教师实体 学生提问,师生共同回答的问题,如下:

所以一个答案应该只有一个教师 ID 或学生 ID 我如何在不使用继承的情况下在 class 图中表示它?

Student 询问 Questions 以及 StudentTeacher 提供的相关 Answer 的要求可以在 UML 中表示constraint

因此,在您的模型 2 中,关于回答者的答案可能存在关联:学生和教师。但是约束告诉我们,对于给定的答案,只有其中一个拖车处于活动状态。约束在大括号之间表示。您可以使用自然语言(或像我在这里所做的那样的伪自然语言),或使用更正式且歧义更少的 OCL 表达式。

在关系数据库中,您可以完全使用此方案,并具有两个可为空的外键,例如 ByStudentByTeacher,并且您的代码必须确保约束是尊重。

在 UML 中表示这一点的另一种方法是在泛化的帮助下显示缺失的概念:

这在概念上更有希望。然而,在关系数据库中,没有办法直接表达这一点。因此,您需要使用一些最终与上述内容非常相似的 table 映射,或者使用额外的 single inheritance table 来映射 Author