我有这三个实体的学生,工作人员和讨论
他们的关系如此:
1名学生可以发表许多讨论;
1名工作人员可以发表许多讨论
但是1次讨论只能由学生或工作人员发布。
是否可以让外键studentID和staffID都驻留在讨论实体中?
但这样做可能会使其中的每条记录在这两个属性中都有1个空值。
答案 0 :(得分:6)
应用 Second Normal Form (2NF) 将成为指导原则:
第一种方法:拥有人员基础表:
您可能有一个People
表来存储人员的共享属性。学生和工作人员将成为该表的孩子,在讨论表上使用Peoples表外键将解决问题。
第二种方法:有一个讨论基础表:
为了减少冗余,您可能有一个Discussion-Base
表,它将成为另外两个实体的基表:
Staff-Discussion
和Student-Discussion
表格
Discussion-Base
表将包含共享属性。
当员工讨论和学生讨论表的属性发生变化时,该解决方案将受到赞赏
如果它们是相同的,唯一的区别是可选的外键,那么您提到的设计是有效的
希望这会有所帮助。