0

現在、製品 (prodid、name、および prodmatid)、材料 (matid、name)、および prodmat (prodmatid、prodid、および matid) の 3 つの単純なテーブルがあります。

上記が良いデザインかどうかはわかりません。製品はさまざまな材料で構成できます。prodmat テーブルでは、製品に対して一度に 1 つの材料しか使用できません。したがって、productA に 5 つの材料がある場合、prodmat に 5 行が必要になります。これはばかげた方法ですか、これをどのように設計すればよいですか?

4

3 に答える 3

1

productsデザインでは、テーブルに必要のない余分な列があるように見えます。prodmatidテーブルでその関係を見つけることができるので、列を削除できprodmatます。

したがって、構造は次のようになります。products (prodid, name)、、、materials (matid, name)prodmat (prodmatid, prodid, matid)

これにより、製品「マイプロダクト」、マテリアル「マテリアル1」、および「マテリアル2」が可能になり、結果は次のようになります。

product (1, 'My Product')
material (1, 'Material 1'), material (2, 'Material 2')
prodmat (1, 1, 1), prodmat (2, 1, 2)
于 2013-01-27T18:45:02.170 に答える
0

これは呼ばれ、リレーショナルデータベースを設計するためthird normal form受け入れられた方法です。

http://en.wikipedia.org/wiki/Third_normal_formを参照してください

編集

一部の人(私を含む)は、主キーとして使用できるため、prodmatidマテリアルテーブルからを削除します。他の人々は、テーブルごとに1つの一意の主キーを持ちたいと思っています。prodidmatid

于 2013-01-27T18:41:19.820 に答える
0

これが宿題ではないと仮定すると...私は次のようにします:

表: 製品 Prodid (PK)、名前 (追加の列があると便利だと思います... 有効期限は? 特別な保管が必要ですか?)

表: 材料 Matid (PK)、名前、測定単位 (グラム、キロ、メートル、アイテムなど) (繰り返しますが、価格? 有効期限?)

表: ProdMat PK: Prodit+MAtid、Prodit (FK)、Matid (FK)、数量。

それでは、あなたの例に戻って、製品 Gizmo を見てみましょう。

Products Table
Prodid  | Name
  00203 | Gizmo

5つの異なる「素材」でできています。

Table: ProdMat 
Prodit | Matid | Qty
 00203 | 0034  | 2
 00203 | 0010  | 11
 00203 | 0567  | 1 
 00203 | 0002  | 1
 00203 | 0039  | 1.675

これらは次のとおりです。

Table: Materials
 Matid | Name                  | u-o-m 
 0034  | Cogs, brass, diam.2"  | Units
 0010  | Spring, small         | Units
 0567  | Gizmo shell (lower)   | Units 
 0002  | Gizmo shell (upper)   | Units
 0039  | Sand                  | Pounds

さて、問題にサブアセンブリ、または原材料として入り込み、内部処理を受けて精製または機械加工されるか、いずれにしても1つまたは複数の半加工材料/製品に変換されるものが含まれている場合は、別の製品...その後、物事は面白くなり始めます。

于 2013-01-27T19:06:43.617 に答える