这是一个很好的解决方案吗?

时间:2013-12-11 16:01:31

标签: database-design entity-relationship

我有三个主要表,WorkOrders,Computers和Tasks。 WorkOrders是修复计算机的命令。那台计算机还有维修,日期等等。

如果计算机出现故障,则必须修复计算机。最后,我可以在计算机上完成任务。

在第一个近似值中,工作单和计算机之间的关系是1:N,因为计算机可以多次修复,但工作单只适用于一台计算机。

计算机和任务之间的关系是1:N,因为一台计算机可能需要修复许多任务,但一台任务在计算机中完成。

所以关系可以这样设置:

WorkOrders(IDOrder, IDComputer, ...)
Computers(IDComputer, ...)
Tasks(IDTask, IDComputer,...)

但是,这不让我知道工作单中的任务。因为如果计算机被多次修复,我怎么知道哪个任务属于另一个工作单?

所以我在考虑以这种方式使用关系表的可能性:

CommonTable(IDOrder, IDComputer, IDTask,...)

但是通过这种方式,似乎任务可以在许多计算机和许多命令中,这在理论上是不正确的。

其他解决方案是在任务中添加IDOrder,但在这种情况下,我在关系中有一个循环,我认为这是不正确的。

所以我想知道这在实践中是否是一个好的解决方案,或者有一个更好的解决方案。

1 个答案:

答案 0 :(得分:2)

任务应与WorkOrder相关,而不是计算机。然后,您可以使用Task(to)WorkOrder(to)Computer来查找TAsk的COmputer。