2

私は4つのテーブルを持っています。製造、ProductionPlants、ProducitonLineおよび機械。機械は、いくつかの製品を製造するために使用される機械です。

製造業者は多くのプラントを持つことができ、プラントは多くの生産ラインを持つことができ、多くの機械を持つことができます。したがって、すべての関係は1:Nです。

したがって、テーブルには次のフィールドがあります。

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

ただし、これにより、マシンは常に生産ラインに設置する必要がありますが、マシンをアンインストールして使用しない場合もありますが、それでもメーカーの所有物です。

設計では、マシンテーブルのIDProductionLineフィールドをnullに設定すると、このマシンを所有しているメーカーを知ることができません。

したがって、最初の解決策は、他のフィールドIDManufactureをMachinesテーブルに追加することです。これにより、null 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 に答える