Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database design ERD关系-将2个可选实体连接到1个实体_Database Design_Uml_Entity Relationship_Class Diagram_Erd - Fatal编程技术网

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

Database design ERD关系-将2个可选实体连接到1个实体,database-design,uml,entity-relationship,class-diagram,erd,Database Design,Uml,Entity Relationship,Class Diagram,Erd,我有三个实体:学生、员工和讨论。 他们之间的关系如下: 1学生可以发表许多讨论; 1工作人员可以发布许多讨论; 但1讨论只能由学生或工作人员发布。 让外键studentID和staffID都驻留在讨论实体中可以吗? 但这样做可能会使其中的每个记录在这两个属性中都有一个空值。应用将是一个指导原则: 第一种方法:为人们提供一个基本表: 您可能有一个人员表来存储人员的共享属性。学生和教职员工将是此表的孩子,将Peoples表外键放在讨论表上将解决此问题。 第二种方法:有一个供讨论的基本表格: 为了减少

我有三个实体:学生、员工和讨论。
他们之间的关系如下: 1学生可以发表许多讨论; 1工作人员可以发布许多讨论; 但1讨论只能由学生或工作人员发布。 让外键studentID和staffID都驻留在讨论实体中可以吗? 但这样做可能会使其中的每个记录在这两个属性中都有一个空值。

应用将是一个指导原则:

第一种方法:为人们提供一个基本表:
您可能有一个
人员
表来存储人员的共享属性。学生和教职员工将是此表的孩子,将Peoples表外键放在讨论表上将解决此问题。

第二种方法:有一个供讨论的基本表格
为了减少冗余,您可能有一个
讨论基础
表,它将是其他两个实体的基础表:
员工讨论
学生讨论
表格。
讨论库
表将包含共享属性。
当员工讨论和学生讨论表的属性不同时,该解决方案会受到欢迎。
如果它们相同,唯一的区别是可选外键,那么您提到的设计是有效的。
希望这能有所帮助。

有关第一种方法,请参阅