这是一个很好的数据库设计吗?

时间:2012-12-27 22:16:14

标签: database database-design

我有四张桌子。制造,生产植物,生产线和机器。机器是用于制造某些产品的机器。

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

因此表格包含以下字段:

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

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

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

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

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

何时消除周期以及何时可以进行周期?

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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