0

問題が発生したので、道順をお尋ねしたいと思います。下の画像のようなデータベースがあります。 ここに画像の説明を入力

1 私のアプリケーションでは、製品が事前定義されているため、最初の文字に応じてテキスト ボックスに自動的にポップアップします。私の問題は、すべての製品が複数の色で利用できることです。そして、適切なテーブルを作成する方法がわかりません。色だけで1つのテーブルを作るべきですか?

2 顧客が 5 台のモニターと 4 台のキーボードをすべて同じ注文で注文したとします。数量はどこにあればいいですか?私の OrderProduct テーブルで?

3 顧客が、選択したアイテムにカスタム ステッカーまたはロゴを印刷したい場合はどうすればよいでしょうか。アプリケーションでアイテムまたはステッカーへの印刷を選択した場合、データベースのどこに保存する必要がありますか? OrderProductでも?

4

2 に答える 2

2
  1. Colors という名前のテーブルを追加し、ID、Feasible Name などのフィールドを含めます。Product では、サポートする色のビットごとの値を表示します。

  2. はい、OrderProduct テーブルに Quantity があります。

  3. 彼がどんな種類のステッカーを手に入れているかによって異なります。ステッカーは彼が選ぶことができるものですか、それとも彼がアップロードできるものですか?

クライアントが各アイテムをカスタマイズできるようにする必要がある場合は、各アイテムを OrderProduct テーブルに個別に挿入し、数量フィールドを持たないようにする必要があります。定義済みまたはユーザー定義である必要があります。

色に戻ります-私が言ったように、各製品をカスタマイズできるようにする場合は、各製品の新しい挿入を作成し、数量列を削除してから、ColorID列をOrderProductテーブルに追加して、どの色を定義するかを決定しますまたはその特定の製品が持つカスタマイズです。


コメントへの返信

アプリケーションは各アイテムが何色であるかを知る必要があるため、黒と赤のモニターを使用しているときに黒とグレーのキーボードを使用する場合があります。ビット単位の値は、数値を除いてフラグ システムに似ています。あなたが持っていたとしましょう...

1 | Black
2 | Gray
3 | Red

製品に黒とグレーがある場合、1,2 になる黒、グレーを実行します。製品に黒と赤がある場合、1,3 になる黒、赤を実行します。ビット単位の値が行うことは、コンピューターがより簡単に理解できる値に変換することだけです。

したがって、Black & Gray のビットごとの値を取得するには、ID を 2 乗して加算します (bor)。その値 (ビット単位の値) を取得したら、バンドを実行して、その色があるかどうかを確認できます。

これは、PHP のビット単位に関する非常に優れたチュートリアルです。このトピックの詳細については、このチュートリアルを読むことをお勧めします。

于 2013-04-09T22:16:35.883 に答える
0
  1. あなたが説明する問題 - 「製品」は複数の色で利用可能です - は一般的です。標準的な解決策は、「製品バリアント」の概念を導入することです。たとえば、T シャツには複数の色と複数のサイズがあります。靴は複数のサイズなどで利用できます。

データベース ソリューションはさまざまです。バリアント型がどうなるか事前にわからない場合は、私の推奨事項として SO のこの回答を参照してください。

使用するソリューションに応じて、バリエーションへの参照を product_order テーブルに含めることができます。

このソリューションにより、「product_order」テーブルを汚染することなく、将来の製品タイプのソリューションを拡張できます。@Hans の推奨事項を使用して色を示すビットマスクを含め、サイズを別の次元として導入すると、「product_order」テーブルがすぐに開始されます製品構造に関する多くの知識が含まれるため、管理/検証が難しくなります。

  1. はい、通常、数量は order_product テーブルに含まれています (これは、より一般的には「オーダーライン」と呼ばれます)。また、単価を含めることをお勧めします。製品の価格は時間の経過とともに変化する可能性があるため、注文時に顧客が同意した価格を記録する必要があります。

  2. カスタマイズの場合、order_product テーブルへのリンクと選択したカスタマイズを含む「order_customization」テーブルを作成することができます。

    OrderID ProductID Customization 1 2 青いステッカー 1 1 緑のステッカー

おそらく、注文のすべてのアイテムにカスタマイズがあるわけではありません。数量 > 1 の単一の order_product ラインが各アイテムに対して異なるカスタマイズを持つ可能性がある場合は、さらに分割する必要があります...

于 2013-04-10T09:41:19.037 に答える