2

我有四张桌子。制造商、生产工厂、生产线和机器。机器是用于制造某些产品的机器。

一个制造厂可以有很多工厂,一个工厂可以有很多生产线可以有很多机器。所以所有的关系都是1:N。

所以这些表有以下字段:

Manufactures      (IDManufacture,...)
ProductionPlant   (IDProductionPlant, IDManufacture,...)
ProductionLine    (IDProductionLine, IDPlant,...)
Machines          (IDMachine, IDProductionLine,...)

然而,这使得机器必须始终安装在生产线上,但有时机器可以卸载,不使用,但仍然是制造商的财产。

在设计中,如果我将机器表中的 IDProductionLine 字段设置为空,那么我将无法知道拥有这台机器的制造商。

所以第一个解决方案是将其他字段添加到 Machines 表中,即 IDManufacture,这样我可以将 IDProductionLine 设置为空,但仍然可以知道所有者。

但我怀疑这是否是一个好的解决方案,因为这会在关系中创建一个循环,因为从机器中,我可以通过 IDMachine 或 LineProducion-->PlantProduction 了解制造。这是一个问题还是一个好的解决方案?

什么时候消除循环,什么时候允许有循环?

谢谢。

4

1 回答 1

1

我会将机器(特定产品线中的机器库存)与您的机器类型分离,以使其更加规范化 -

Manufacturer
 1:N
Prod Plant
 1:N
Prod Line
 1:N
Machine Inventory
 N:1
Machine Type

机器类型表将存储公司使用的每种机器类型的 1 行,机器库存将包含特定产品线中使用的机器的每个实例的唯一信息。使用这种结构,您将能够从产品线中删除一台机器,并且仍然在您的数据库中维护有关该机器的详细信息。如果您使用同一机器的多个实例或在不同的产品线或工厂中使用相同类型的机器,这种结构的冗余也会减少,因为所有这些机器库存行都会指向机器类型。

于 2012-12-27T22:31:50.727 回答