多列,但只有一个联接

时间:2019-03-04 15:11:25

标签: sql database-design

我已经搜索了很多答案,但是对于这种情况我似乎没什么特别的。抱歉,如果我没有看这个。

我们有一个日历系统,我们正在对其进行重新编码以记录事件,假期,缺勤,MOT,检查等

最初,我们的日历集中在人员上,因此我们从人员表到calendarDay进行了联接,但是现在数据库中的其他表都需要分配天数。

我的计划是为需要连接的三个表中的每个表都有一个联结表-人员,工作和车辆,或者在工作分配联结表中有一个ID列,该列包含Person_ID,Job_ID和Vehicle_ID fk的列: / p>

CalendarDayAssignment

ID CalendarDayID PersonID JobID VehicleID

因此,此表将包含CalendarDay_ID以及Person_ID,Job_ID或Vehicle_ID,具体取决于为其分配了日期的表,剩下两列为NULL。 (实际上,这些日期可以直接移到CalendarDay表中,因为不会共享日期)

我的偏好将是上面显示的更高版本,因为我只需要一个表,而不是3个表(如果需要将更多对象分配给他们,则可能需要更多表),并且参照数据完整性也保持不变。

我知道这可能是主观的,但这是实现这一目标的合理方法吗?如果时间到了,包含更多对象似乎更容易。

仅需注意上述内容,我们将从Person,Job和Vehicle表中提取不同的数据,所以我看不到如何实现一种适合所有不以冗余数据结尾的解决方案的数据来自编码POV。 Junction表可能每年仅添加10,000行。

0 个答案:

没有答案