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

时间:2013-07-13 06:28:24

标签: database-design uml entity-relationship class-diagram erd

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

1 个答案:

答案 0 :(得分:6)

应用 Second Normal Form (2NF) 将成为指导原则:

第一种方法:拥有人员基础表
您可能有一个People表来存储人员的共享属性。学生和工作人员将成为该表的孩子,在讨论表上使用Peoples表外键将解决问题。

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