师生答疑——数据库设计
Question answered by teachers and students - Database design
我正在设计数据库。
我有问题、答案、学生和教师实体
学生提问,师生共同回答的问题,如下:
所以一个答案应该只有一个教师 ID 或学生 ID
我如何在不使用继承的情况下在 class 图中表示它?
Student
询问 Questions
以及 Student
或 Teacher
提供的相关 Answer
的要求可以在 UML 中表示constraint:
因此,在您的模型 2 中,关于回答者的答案可能存在关联:学生和教师。但是约束告诉我们,对于给定的答案,只有其中一个拖车处于活动状态。约束在大括号之间表示。您可以使用自然语言(或像我在这里所做的那样的伪自然语言),或使用更正式且歧义更少的 OCL 表达式。
在关系数据库中,您可以完全使用此方案,并具有两个可为空的外键,例如 ByStudent
和 ByTeacher
,并且您的代码必须确保约束是尊重。
在 UML 中表示这一点的另一种方法是在泛化的帮助下显示缺失的概念:
这在概念上更有希望。然而,在关系数据库中,没有办法直接表达这一点。因此,您需要使用一些最终与上述内容非常相似的 table 映射,或者使用额外的 single inheritance table 来映射 Author
。
我正在设计数据库。
我有问题、答案、学生和教师实体
学生提问,师生共同回答的问题,如下:
所以一个答案应该只有一个教师 ID 或学生 ID 我如何在不使用继承的情况下在 class 图中表示它?
Student
询问 Questions
以及 Student
或 Teacher
提供的相关 Answer
的要求可以在 UML 中表示constraint:
因此,在您的模型 2 中,关于回答者的答案可能存在关联:学生和教师。但是约束告诉我们,对于给定的答案,只有其中一个拖车处于活动状态。约束在大括号之间表示。您可以使用自然语言(或像我在这里所做的那样的伪自然语言),或使用更正式且歧义更少的 OCL 表达式。
在关系数据库中,您可以完全使用此方案,并具有两个可为空的外键,例如 ByStudent
和 ByTeacher
,并且您的代码必须确保约束是尊重。
在 UML 中表示这一点的另一种方法是在泛化的帮助下显示缺失的概念:
这在概念上更有希望。然而,在关系数据库中,没有办法直接表达这一点。因此,您需要使用一些最终与上述内容非常相似的 table 映射,或者使用额外的 single inheritance table 来映射 Author
。