ERD关系 - 将2个可选实体连接到1个实体

Z.V*_*Z.V 2 database-design erd uml entity-relationship class-diagram

我有这3个实体的学生,工作人员和讨论.
他们的关系是这样的:1个学生可以发表很多讨论; 1名工作人员可以发表许多讨论 但是1次讨论只能由学生或工作人员发布.是否可以让外键studentID和staffID都驻留在讨论实体中?但这样做可能会使其中的每条记录在这两个属性中都有1个空值.在此输入图像描述

Moh*_*ari 6

应用第二范式(2NF)将是一个指导原则:

第一种方法:为人员提供基表:
您可以拥有一个People表来存储人们的共享属性.学生和工作人员将成为此表的子项,在讨论表上使用Peoples表外键将解决问题.

第二种方法:有一个讨论的基表:
为了减少冗余,你可能有一个Discussion-Base表,它将是另外两个实体的基表: Staff-DiscussionStudent-Discussion表.
Discussion-Base表将包含共享属性.
当员工讨论和学生讨论表的属性变化时,可以理解该解决方案.
如果它们是相同的,唯一的区别是可选的外键,那么您提到的设计是有效的.
希望这可以帮助.