【发布时间】:2014-03-03 21:22:00
【问题描述】:
我有三个主表,WorkOrders、Computers 和 Tasks。 WorkOrders 是修复计算机的命令。将要维修的计算机、日期等也是如此。
计算机是在出现故障时必须修复的计算机。我终于有了可以在电脑上完成的任务。
工单和电脑之间的关系初步近似为 1:N,因为一台电脑可以维修多次,但一个工单只针对一台电脑。
计算机和任务之间的关系是1:N,因为一台计算机可能需要修复许多任务,但一项任务是在一台计算机中完成的。
所以关系可以这样设置:
WorkOrders(IDOrder, IDComputer, ...)
Computers(IDComputer, ...)
Tasks(IDTask, IDComputer,...)
但是,这并不能让我知道工作订单中的任务是什么。因为如果一台电脑维修了很多次,我怎么知道哪个任务是一个工单的另一个任务?
所以我正在考虑以这种方式使用关系表的可能性:
CommonTable(IDOrder, IDComputer, IDTask,...)
但是这样看来,任务可以在多台电脑、多条订单中,理论上是不正确的。
其他解决方案是在任务中添加 IDOrder,但在这种情况下,我在关系中有一个循环,我认为这是不正确的。
所以我想知道这在实践中是一个好的解决方案还是有更好的解决方案。
【问题讨论】:
标签: database-design entity-relationship