1

似ていないアイテムの在庫用のデータベースを作成しています。たとえば、私は自動車、エンジン、キャブレターを持っているかもしれません。

アイテムの種類ごとに固有の属性があり、一意に識別される (別名「シリアル化された」) アイテムもあれば、そうでないものもあります。

属性は、たとえば次のようになります。

自動車

  • シリアルナンバー
  • ドア数
  • 伝送タイプ

エンジン

  • シリアルナンバー
  • シリンダー数
  • 変位

キャブレター(シリアル化されていません)

  • バレル数
  • メーカー

もちろん、私は自分が持っている各タイプのアイテムの数を判断できる必要があります。トランスミッション、タイヤ、ラジオ、ハンドルなどを持ち始めるとアイテムの種類が増えるので、種類ごとに表を作成したくありません。

このような異種の在庫に対処するために私が見た 1 つの方法は、テーブルを持つことですitemが、テーブルも持つことattributeです。次のようになります。

**表:項目**

  • (キー) itemType (「自動車」、「エンジン」などを含む itemTypes のテーブルにリンクされています。
  • (キー) シリアルナンバー
  • (すべての itemTypes に共通するその他のフィールド)

**テーブル:属性**

  • (キー) attributeType ("color" などの attributeTypes のテーブルにリンク)
  • (キー) itemType ( item 内の itemType にリンク)
  • (キー) serialNumber (アイテムの serialNumber にリンク)
  • attributeValue (attributeType が「color」の場合、これは「red」、「blue」などの可能性があります)

これがもたらす課題の 1 つは、シリアル化されていないアイテムを扱うことです。この構造では 35 個のエンジンがあることを判断するのは簡単ですが、52 個のキャブレターがあることはどのように表せますか? それらをシリアル化する必要はありません。

もちろん、これが異種インベントリ用のデータベースを構築する唯一の方法ではありません。何を使用したことがありますか、または他にどのようなアイデアがありますか?

ご協力いただきありがとうございます。

4

1 に答える 1

2

このテーブル設定を試してください:

アイテムの種類の表:

  • ID PRIMARY 自動索引
  • 名前

アイテム表:

  • ID PRIMARY 自動索引
  • type (項目タイプの fkey)

属性の種類:

  • ID PRIMARY 自動索引
  • 名前

値の表:

  • ID PRIMARY 自動索引
  • item (アイテムの fkey)
  • タイプ (attribute_types への fkey)
  • 価値

したがって、エンジンを格納する場合は、タイプ「Engine」をタイプ テーブルに追加してから、個々の項目を追加します。次に、「シリアル」およびその他のプロパティの値を追加できます。

キャブレターを保存したい場合は、キャブレターと呼ばれるタイプを追加し、そのインスタンスを 1 つ作成してから、"数量" = 53 の "値" エントリを作成します。

うまくいけば、これは理にかなっています

于 2012-02-17T21:28:18.803 に答える