database-design - 这是一个好的解决方案设计吗?

标签 database-design entity-relationship

我有三个主表:工作订单、计算机和任务。 WorkOrders 是修理计算机的订单。将要维修的计算机、日期等也是如此。

计算机是出现故障必须维修的计算机。我终于有了可以在计算机上完成的任务。

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

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

因此可以这样设置关系:

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

但是,这并不让我知道工作订单中执行了哪些任务。因为如果一台计算机被修理了很多次,我如何知道哪个任务属于一个工作订单或来自另一个工作订单?

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

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

但是这样看来任务可以在很多台计算机和很多命令中进行,这在理论上是不正确的。

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

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

最佳答案

任务应该与工作订单相关,而不是与计算机相关。然后,您可以使用“任务(到)工作订单(到)计算机”来查找该任务的计算机。

关于database-design - 这是一个好的解决方案设计吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20523969/

相关文章:

mysql - 如何在关系数据库中共享资源(特定情况)?

sql - "every table"上自动递增键的优缺点

php - 你如何处理 Doctrine 2 中的实体关系?

ios - 多对多关系

mysql - 使用 MySQL Workbench 绘图(菜鸟)

.net - Entity Framework - 记录上的读锁

mysql - 在数据库中存储多个项目设置

mysql - 这张 table 应该一分为二吗?

mysql - 更改工作台 EER 图中表的数据库名称

mysql - 总账科目代码格式