首页 > 解决方案 > 师生答疑——数据库设计

问题描述

我正在设计一个数据库。我有问题,答案,学生和教师实体问题仅由学生提出,但由教师和学生回答,如下所示: e

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

标签: databaseclassumldiagram

解决方案


由任何一个提出的Questions要求Student和相关的要求,或者可以在 UML 中借助约束来表示:AnswerStudentTeacher

在此处输入图像描述

因此,在您的模型 2 中,关于回答者的答案可能存在关联:学生和教师。但是约束表明,对于给定的答案,只有其中一个是活动的。约束用大括号表示。您可以使用自然语言(或像我在这里所做的那样的伪自然语言),或者使用更正式且不那么模棱两可的 OCL 表达式。

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

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

在此处输入图像描述

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


推荐阅读