我有这 3 个实体学生、员工和讨论。
他们的关系是这样的: 1 个学生可以发表许多讨论;1名员工可以发表许多讨论;但 1 个讨论只能由学生或工作人员发布。可以让外键 studentID 和 staffID 都驻留在讨论实体中吗?但这样做可能会使其中的每条记录在这两个属性中都有 1 个空值。
问问题
631 次
1 回答
6
应用第二范式 (2NF)将是一个指导方针:
第一种方法:为人员创建一个基表:
您可能有一个People
表来存储人员的共享属性。Student 和 Staff 将是该表的孩子,在 Discussion 表上使用 Peoples 表外键将解决问题。
第二种方法:有一个基表进行讨论:
为了减少冗余,您可能有一个Discussion-Base
表,这将是其他两个实体的基表:
Staff-Discussion
和Student-Discussion
表。
Discussion-Base
表将包含共享属性。
当员工讨论表和学生讨论表的属性不同时,该解决方案将受到赞赏。
如果它们相同并且唯一的区别是可选的外键,那么您提到的设计是有效的。
希望这可以帮助。
于 2013-07-13T11:26:32.633 回答