我有三个主要表,WorkOrders,Computers和Tasks。 WorkOrders是修复计算机的命令。那台计算机还有维修,日期等等。
如果计算机出现故障,则必须修复计算机。最后,我可以在计算机上完成任务。
在第一个近似值中,工作单和计算机之间的关系是1:N,因为计算机可以多次修复,但工作单只适用于一台计算机。
计算机和任务之间的关系是1:N,因为一台计算机可能需要修复许多任务,但一台任务在计算机中完成。
所以关系可以这样设置:
WorkOrders(IDOrder, IDComputer, ...)
Computers(IDComputer, ...)
Tasks(IDTask, IDComputer,...)
但是,这不让我知道工作单中的任务。因为如果计算机被多次修复,我怎么知道哪个任务属于另一个工作单?
所以我在考虑以这种方式使用关系表的可能性:
CommonTable(IDOrder, IDComputer, IDTask,...)
但是通过这种方式,似乎任务可以在许多计算机和许多命令中,这在理论上是不正确的。
其他解决方案是在任务中添加IDOrder,但在这种情况下,我在关系中有一个循环,我认为这是不正确的。
所以我想知道这在实践中是否是一个好的解决方案,或者有一个更好的解决方案。
答案 0 :(得分:2)
任务应与WorkOrder相关,而不是计算机。然后,您可以使用Task(to)WorkOrder(to)Computer来查找TAsk的COmputer。