我需要一个表来存储工作项目。工作项目可以与我们的数据库中的许多不同类型的现有实体中的一个相关联,如人员,公司等。一种方式是将实体类型和实体ID存储在两列中以供参考。这是我以前做过的事情。另一种方法是为每种类型的实体设置多个列。
在第一种方法中,应用程序必须维护关联中的完整性约束。数据库专家对第二种方法有偏好,因为它可以具有FK约束,并且如果需要,还可以针对不同的实体ID使用不同的数据类型。很显然,除了一列以外的每一行都会有一个空值。根据数据库专家修改表格以添加新的参考不是问题,因此有很多空值。具有多个参考列的数据库设计或具有参考类型和ID的两列
在这一点上,我对这种方法没有大的反对意见,但我仍然想问一下。 我的问题是,是否有充分的理由不应该使用第二种方法。
人,公司和WorkItem之间的现实世界关系是什么?人,是在这个项目上工作的人吗?是该项目分配给谁的人?发起该项目的人是谁?与公司类似。人员和公司都可以与同一个WorkItem关联吗? – Thomas
没有,人与公司之间没有关系。我们处理这两件事情,并希望为员工创建一个工作项目来完成一些工作。例如WI可能会更改该人的地址,另一个WI可能会退还给公司等。一个人和公司不能有相同的WI,WI只能有一个参考。我们还将为WI分配用于专职工作人员的用户列。 – softveda
@Pratik,你的问题有11个句子。只有前两句描述了这个问题;其余的是你的意见, 你以前做过的事情,你的数据库专家的意见等。 我们是否真的应该只从这两句话中理解问题(你试图建模的东西)? –